The composable web
I’ve just been looking at the new Google Buzz API. What struck me first was that it is built up completely from other established protocols: Atom extended with Atom Threading Extensions, MediaRSS, Activity Streams, and PubSubHubbub. Notes on future directions include support for Atom Publishing Protocol for posting and editing messages, Salmon for upstream aggregation of comments, WebFinger for contact information resolution, and OAuth for delegating authorization. Not to mention that all of this is made possible by yet another layer of underlying open technologies such as XML (XML Namespaces in particular) and HTTP.
Google’s GData APIs are mostly built on Atom, with some custom extensions to support data elements that aren’t native to Atom. In this way, any client that understands how to deal with Atom data can get at least basic data from the Atom feed. This is an example of graceful degradation of data. I wrote several days ago about needing a data API for the web, but really we may just need common building blocks for creating our web APIs. User authentication is a case in point: many web services that don’t use basic HTTP authentication roll their own complicated token-based authentication schemes that take time to figure out before you even start getting data from the API. Standardizing on OAuth would not only ensure a basic level of security throughout the web, but it would ease the development of new services that consume data from many sources.
Everything that I have been talking about here is composition of technologies. I think that we are going to start seeing more composition of services that actually implement those technologies. There are risks when deciding to leverage a particular technology in a solution such as the cost of re-engineering the product to use a new technology later on if needed. However this risk at least doubles when you consider the case of lock-in where a third-party service is being used along with a proprietary protocol. Not only do you have to redesign some part of the product to use a new protocol, you have to migrate your data. In order for computing as a utility to work we have to be able to plug things together efficiently.