Open APIs

by Subbu Allamaraju on September 17, 2007 · 0 comments

There is a lot of talk about open APIs these days using REST or some such paradigm. Building open APIs for the rest of the world to consume is easy, but attracting a new developer community around the API is hard.

The standard prescription these days for open APIs includes some of the following:

  • Web-based or RESTful: Make the APIs accessible in RESTful manner over the web, so that other services and clients can build applications without worrying about how the services are implemented.
  • Consistent and simple: Keep the APIs look and feel simple and consistent to use with easy to follow semantics. Of course, there is nothing new in this principle, and it applies to every public interface.
  • Productivity: Think long and hard about productivity of the folks developing applications using the API. Try to answer questions like "how long will it take to build a client using the APIs?" Does it take a day? One week? Or six months? An API that takes six months to build a useful application increases the barrier of entry. An API that takes a long weekend, on the other hand, opens up the door for lot more developers trying to figure out what can be done with the API.
  • Document, illustrate and evangelize, before heading out to party.

These are essential, but still don’t guarantee adoption. What is more important, IMO, is interestingness.

First of all, the API should do something interesting and useful behind the doors. The API has to offer something that is complex and expensive for others build themselves, i.e. it has to do interesting things while providing value. That is one part of "interestingness". The second part is to leave the door open for developers to build interesting applications on top of the API. In my opinion, leaving such a door open takes a lot more innovative and out-of-the-box thinking. The developers of the API ought to have an idea of the kinds of "cool and interesting" applications that could be built, and yet instead of building those cool things into the API themselves, design the API such that such applications are possible with the API. That is the most challenging part of building open APIs. It is the latter part that helps build a developer community around the API.

Want examples? Just take a look at some of the successful open APIs.

Unfortunately, most developers trying to come up with open APIs are taking the approach of converting existing APIs into open web based APIs (i.e. RESTifying code). Slapping an public web-based surface onto existing APIs is unlikely to succeed without building the above two aspects of interestingness into those APIs. So, if you are wondering why no one is building applications using your open APIs – think about interestingness.

Update: Just came across Dave Winer’s recent argument that every app should be a platform. I agree with his argument. He also comments that

… because when other developers build on your platform, it’s mighty hard to replace what’s underneath …

True, if and only if platform APIs are interesting.

Leave a Comment

Previous post:

Next post: