Fred Wilson has a post today on the standardization of APIs.  He says…

First WordPress allowed posting and reading wordpress blogs via the Twitter API.

Then yesterday our portfolio company Tumblr did the same.

John Borthwick has been advising companies for a while now to build APIs that mimic the Twitter API. His reasoning is that if your API look and feels similar to the Twitter API then third party developers will have an easier time adopting it and building to it. Makes sense to me.

But the problem here is it doesn’t make sense really.  At least not in the way he seems to be endorsing. The problem is there’s a difference between being inspired by something and imitating it.

Let me explain…

Online APIs are in their infancy right now so there are a lot of differences between them.  But as they mature they’ll become similar to each other.  Just as other software has done in the past.  There’s a reason why Windows and OS X have more similarities than differences.  Or that every programming language has a variation of “.tostring()” available. 

It’s natural for developers to look at what works in other products and try to implement that in their own products.

So it’s great that publishing APIs are adopting similar methods (as Wordpress has done with the Twitter API).  But that doesn’t mean they should imitate each other completely.

Wordpress is not Twitter.  If certain parts of the Twitter API work for Wordpress than they should adopt them.  But if not than they shouldn’t be pressured into adopting ill fitting API calls just to adhere to some imagined standard.  Not only because it would lessen their product but because it prevents them from thinking up better ways of doing things

Better ways that other companies (like Twitter) might want to adopt some day.  To put this in perspective imagine a world where Apple was forced to tailor their APIs to act in the same way as Windows APIs because Windows is the more widely used OS. 

Which brings me to my final point.  APIs aren’t file formats.  In a file format the whole point of it is to store and retrieve data so it makes sense to adhere to standards because not doing so would prevent the data from fulfilling it’s purpose (to be read).  But APIs aren’t like that.  Having a different API isn’t going to break anything.  So while developers should always look at the APIs of other companies for inspiration they shouldn’t treat successful APIs like Gospel