First I want to disclaim this — I am not making a Twitter clone. But I have watched a number of people try, so I’ve had a chance to think about what I would do if I were making one. I love intellectual exercises like this.
Yesterday I posted a question in a thread which was intended to expose the issues around the API. I asked if the Twitter API is an open standard. I didn’t express an opinion one way or another. Realistically it’s probably a matter of consensus among developers, Twitter’s competitors, Twitter itself and if it should come down to it, the law.
But one thing’s clear to me — it’s better for the ecosystem and the Internet if the API were a basis for interop between competitors. That way developers and users would have choice. The only argument against using it as a basis for interop is that it would be too limiting.
We’ve faced that before in a very parallel situation with the Blogger API. The resulting extension to their API provided for features our software had that Blogger’s didn’t. That goes back a long way, to 2003. Both APIs thrived and are still in use, and the principles are still valid.
So the answer for me is that if I were making a Twitter clone, I would start with an exact clone of the API. I would test interop. This would have the advantage of telegraphing intent clearly to developers. They wouldn’t have to guess where our API was going.
However, I would not promise future compatibility if Twitter were to change the API. I wouldn’t say we wouldn’t go where they went, but I would not give them a blank check to invalidate our interop. The Twitter API has had years to burn in. It’s widely supported. Even with the changes Twitter has made recently it’s not hard to implement. I think it represents an excellent basis for interop. (And if it weren’t the basis for interop, what would be?)
Further, I would implement it in such a way that the names of the endpoints and the parameters they take were configured from a design spec. I’d probably use OPML and publish it openly. If Twitter objected by filing a lawsuit, we could reconfigure our API to be non-infringing but would openly explain to developers why we were doing it.
Honestly, I don’t think Twitter would choose to compete at this level. They haven’t lately been building their ecosystem around developers. To cut off other channels for developers to grow would seem spiteful and selfish, esp for a company that’s been so successful and is so rich. At least some of that came from the hard work of their developers.
BTW I love the header graphic my CMS chose for the head of this post. It’s totally random. I took that picture in the red light district of Amsterdam in 2000. I call it Negotiating. It’s probably the best photo I’ve ever taken. By a lot.