So, we've had a problem with Identi.ca today. We upgraded to use the "new" validation method in the Twitter API, but clients like Twhirl were using the "old" method.

For a monolithic system like Twitter, this is no biggie. For Laconica, we need to support a spectrum of versions across hundreds of sites. So, I think we need a reliable way for clients to get an accurate idea of what the API is going to do. In particular, as we start implementing features that Twitter doesn't have (like file sharing, groups, and so on), we'll want a way for API clients to discover them.

I propose that we add the following three extensions to the Twitter API.

*<api-root>/laconica/version.<format>
*

   This would return the LACONICA_VERSION constant. It would be a very
   coarse way for client software to adapt to the server's API. The
   client developer would have to know that versions of Laconica <
   0.6.4 don't support the 'since' parameter (say), and ones after
   0.8.x support multimedia sharing (or whatever).

*<api-root>/laconica/config.<format>
*

   This would be a subset of the values in the $config variable (ones
   that don't expose secure information like passwords!). API clients
   could use this to determine valuable info such as the site name,
   whether XMPP is enabled, what the XMPP bot address is, and so on.

*<api-root>/laconica/wadl.xml
*

   This would give a full Web Applications Description Language (WADL)
   description of the API provided by this instance -- which API
   methods are supported, what arguments they expect, and what data
   they return. There's already a half-decent WADL description
   <http://ur1.ca/0bdm> for the Twitter API that the Netbeans folks
   did, so we could build on that.

I briefly considered putting these methods under the */help/* path, since it makes sense there, or under */extensions/*, which might be useful for other third-party service implementers. But to avoid future name clashes with Twitter, I think we can only be sure that they're not going to make a "laconica" path in their API.

Comments, ideas, questions, objections?

-Evan

_______________________________________________
Laconica-dev mailing list
[email protected]
http://mail.laconi.ca/mailman/listinfo/laconica-dev

Reply via email to