Apache Abdera: Atom, AtomPub, and Java
The Apache Abdera project, an open source Atom Syndication and Atom Publication Protocol implementation currently still in its “incubation” phase, has recently reached its 0.40 milestone, an important step towards “graduation”. InfoQ had a chance to talk to IBM's James Snell and MuleSource's Dan Diephouse, two of Abdera’s core developers, about Abdera, Atom and AtomPub.
InfoQ: Everyone knows Atom and AtomPub are just for weblogs. Right? Why would anyone care about them outside of this domain?
James Snell: While Atom and AtomPub certainly began life as a way of syndicating and publishing Weblog content, it has proven useful for a much broader range of applications. I’ve seen Atom being used for contacts, calendaring, file management, discussion forums, profiles, bookmarks, wikis, photo sharing, podcasting, distribution of Common Alerting Protocol alerts, and many other cases. Atom is relevant to any application that involves publishing and managing collections of content of any type.
Dan Diephouse: One only needs to look to some of the public services out there. Most of the APIs for Google are based on AtomPub. Microsoft is moving toward it for web APIs too. These services are all going beyond just blogs. AtomPub goes beyond public web APIs as well - I’ve noticed that many enterprises are starting to use AtomPub for some of their internal services as well.
InfoQ: Is AtomPub the new SOAP?
James Snell: I’m sure someone could make that case but I don’t think it’s worthwhile.
Dan Diephouse: I agree that its not a very worthwhile analogy as SOAP is primarily a way to ship around data. Maybe there is some more validity if you bring WSDL into it. Both AtomPub and SOAP/WSDL give you a way to build a service for others to use. But AtomPub takes a fundamentally different approach to helping users implement services. It implements constraints which give new types of freedom. Because the data format is constrained - every entry has a title, entry, id, and content/summary - I can use an Atom feed from any type of application and get some useful information out of it! I can consume calendar data the same way I consume an employee directory and the same I was read blogs. I don’t need any specific tools nor do I need to know anything other than that the service is AtomPub. These constraints limit the applicability of AtomPub as well - it is by no means a protocol for all things. Many things are awkward to model in AtomPub - really your data needs to be time based lists of things for it to be a natural fit.
InfoQ: What is Abdera?
James Snell: Abdera is an open source implementation of the Atom Syndication Format and Atom Publishing Protocol. It began life as a project within IBM’s WebAhead group and was donated to the Apache Incubator in June 2006. Since then, it has evolved into the most comprehensive open-source, Java-based implementation of the Atom standards.
Dan Diephouse: The features are beginning to be a little too numerous to mention. It includes support for developing/consuming AtomPub services, an IRI library, a URI template library, unicode normalization, extensions for things like XML signature/encryption, GData, GeoRSS, OAuth, JSON and more. One of the cool new things in the latest release are a set of “adapters” which allow you to have an AtomPub service without any coding by storing entries in JDBC, JCR or the filesystem.
InfoQ: Can you briefly summarize some key design decisions in Abdera’s architecture?
James Snell: Abdera was initially designed around three primary points:
It was to be functionally complete, providing support for every aspect of Atom development and every option allowed by the standard. This principle is illustrated by Abdera’s support for features like IRI’s, Unicode Normalization, XML Digital Signatures, XML Encryption, and a wide range of extensions.
It was to perform well, providing fast parsing and serialization of Atom documents.
It was to be modular, providing a means for developers to pick and choose only the functionality necessary to enable any particular feature and to allow pieces to be swapped out or plugged in easily.
InfoQ: What do the two of you use Abdera for?
James Snell: Within IBM, Abdera is used by components of the Lotus Connections and Lotus Quickr suites to enable Atom Publishing Protocol support. Abdera is also shipped within the WebSphere Web 2.0 Feature Pack. Internally, Abdera is used in a broad variety of applications.
Dan Diephouse: At MuleSource we’re using it in a couple places. We’re using it in Galaxy, an open source registry/repository, for our API. It allows users to manage artifacts and metadata inside our repository. We shied away from using something like UDDI as it was overly complex. AtomPub gave us the ability to manipulate our registry using a simple RESTful API and enable syndication of things inside the repository at the same time.
We’ve also written an Abdera component for Mule which allows you to easily integrate AtomPub services with any of the other various connectors Mule supports. AtomPub can be extremely useful a lot of integration scenarios - like queueing, logging, eventing - anything where you have time based collections of things. We’re hoping it will help people get their data out there in a web friendly way.
InfoQ: What’s on the roadmap next?
James Snell: Graduation. Abdera has been part of the Apache Incubator for long enough. While there are still some details to work out, I would very much like to see Abdera graduate to it’s own Top Level Project at Apache, and become host to a broad range of Atom-based applications.
Dan Diephouse: I think we’re also focused on getting a 1.0 release out soon as well (community willing). I’ll also take this moment to plug our project and say - get involved! Feedback (of any kind) and patches are always welcome. Just join the mailing list or start filing issues.