Atom and AtomPub were failed
Joe Gregorio’s AtomPub is a failure note is probably not as provocative as its title may make it sound. Joe knows more than the average lunatic out there about AtomPub considering he was co-editor of RFC 5023 and his work at Google so when he says AtomPub may have failed, one is forced to pay attention.
Joe argues that even though AtomPub hasn’t failed as technology, it hasn’t swept the inter-tubes world away as hoped probably because the rationale for creating such a protocol years back doesn’t really pan out any longer.
I share Joe’s slight disappointment at not seeing AtomPub more spread on the web but I don’t entirely agree with the reasons he puts forward:
So why hasn’t AtomPub stormed the world to become the one true protocol? Well, there are three answers:
Joe also suggests that XML was overcome by the couple: HTML+JSON. That is very true and Joe acknowledges that he didn’t think this would happen but when he says:
All of the advances in browsers and connectivity have conspired to keep AtomPub from reaching the widespread adoption that I had envisioned when work started on the protocol, but that doesn’t mean it’s a failure.
I disagree with Joe’s reasoning and personally I think there is a much bigger issue here to explain the protocol’s difficulties to be a premium choice for public web services.
Let’s review some social network platforms and the way they expose their data.
Atom: Only used to view global recent changes and utter failure at actually using the format for what it’s good at. In a nutshell, everything is serialized to HTML and packed into the atom:summary element.
API: MediaWiki offers an API to expose and manipulate data which isn’t based on AtomPub but follows quite obviously the same design considering the document’s nature of a wiki. Note that the API supports several output formats but none of which is Atom.
Atom: As far as I can tell, Facebook doesn’t offer any support for Atom.
API: Facebook has its own API which doesn’t really map well to AtomPub even though it’s quite often simple CRUD operations.
Atom: Twitter exposes friend’s timeline as Atom feeds and does it well. Their API doesn’t support it however.
API: Twitter’s API is also not based on AtomPub.
Atom: No support for Atom.
API: Last.fm’s API doesn’t use AtomPub, well considering they don’t even use Atom itself, it kind of make sense.
Atom: Available but not officially supported as per the documentation.
API: Orkut’s API is based on OpenSocial which if I’m not mistaken isn’t based on AtomPub.
Atom: Not fromÂ the public website as far as I could tell.
API: MySpace’s API is based on OpenSocial too, thus not based on AtomPub.
Atom: Offers Atom feeds for a wide range of their data from their website.
API: Flickr has its own API not based on AtomPub and doesn’t output to Atom.
Google’s various API
Atom: Extensive support for it.
API: Extensively based on AtomPub even though no public support for the AtomPub service document which kind of limits service discovery.
I’m not trying to point fingers at those services, most of them came to life way before AtomPub became seriously defined (and maybe Tim Bray was right to warn the WG it was taken too long) so it’s not really a surprise it’s not used. In most cases though exposed APIs could be mapped to the protocol as well as the Atom format but obviously that would require major and fundamental architectural refactorings which make little economical sense.
It’s worth noting that some services have hard times even exposing data without degrading their values. Atom is a well-defined protocol that offers a simple view on web semantics. Used well, it offers a fantastic ground for mashup of organized and structured data. This is added value I’m wondering if mentioned social network platforms are willing to propose. In some respects Yahoo Pipes might not have to exist if Atom and AtomPub were properly used. Atom is so much more than pure serialization format. Atom can be serialized to JSON and still be Atom. Atom offers a real path to build powerful and meaningful social graph of distributed data.
Ultimately, data is money and I assume it’s a technical issue as much as an economical one. It’s easy to help building the piping for interoperability but it seems harder to actually open up the tap of data.
That being said, as Joe says:
There is still plenty of uses for AtomPub and it has quietly appeared in many places.