This post is by way of a brief introduction to AtomBeat, which is a piece of software I’ve been coding on-and-off for the past year or so. AtomBeat is a web application that you can use as a generic content and data repository. It implements the Atom Publishing Protocol, which is a standard for data-centric web services, and which is also the basis for things like GData, OData, CMIS and SWORD. AtomBeat also implements a number of more-or-less standard extensions to Atom, including support for fine-grained access control policies, and support for versioning of data resources. The idea was that we had several applications which had similar underlying needs w.r.t. managing data and content and exposing functionality to other applications via web services – so AtomBeat is an attempt to factor out some of those common capabilities into a generic piece of software.
AtomBeat is coded almost entirely in XQuery – about 14,000 lines of it at last count – which, you might think, makes me totally mad. But AtomBeat uses the eXist XML database as the underlying persistence engine, and because Atom is an XML-based protocol, using XQuery to work with XML both at the protocol level and the persistence level is actually very convenient, once you’ve established a few patterns. I’d hate to think how many lines of code it would have taken if I’d done it all in Java using DOM and SAX APIs.