Criteria for success of APIs
What's going to make a successful web API? This question came up this week in the context of 'API consistency'. There was some discussion over whether it matters to have a consistent set of APIs if you're offering services on the web.
My thoughts on this are that if you take a look across the spectrum of available APIs, there is a tendency to provide the functionality using whatever works or maybe slightly more enlightened is 'whatever works best in a given context'. Possibly the best example of a consistent platform IMHO would be Flickr, where you sort of know what youre getting and its all pretty much REST. But it also exploits certain types of content access in other ways such as JavaScript embeds or whatever.
I'd assert that standardisation of API is not easy to achieve because different methods of access will lend themselves to different kinds of use, and ease of use. is also not necessarily advantageous in an emerging context of many available APIs and services. This differs from consistent programming APIs which have a narrower, or very specific, target.
Taking a look at ProgrammableWeb reveals many stories of different APIs and within those services there are also differing ways to access those APIs.
So, the iridescent algae in this ocean of possibility for me would be the service that offers the functionality that I can work with most productively.
To extend this, I think that using criteria of functionality, productivity, stability and consistency, I would say functionality and productivity will aid adoption more than consistency, with stability becoming important for long-term retention of use through reputation. Consistency is less important because in a world of choice of APIs, Im likely to be using other services as well as Live, and also the same services in differing contexts.
So for a developer of APIs, one of the key drivers to adoption of those APIs will be how productive the consumer of the API can be on their chosen platform. Some platforms have been constucted to make API access a snip - such as Ruby On Rails - but platforms such as ASP.NET can also benefit.
What could be done? Well, when considering consistency, we should consider consistency of exploitation method, rather than consistency of API itself. And that consistency should play to the strengths of the chosen development platform.
So Atlas can help here with its bridge control John Lam has a brief article here on this. So because of this, I don't mind so much about the consistency of the individual APIs of the services I use, because I have a consistent method to access these services. Well done Atlas, and let's see some more of this!