Alex headshot

AlBlue’s Blog

Macs, Modularity and More

Atom Publishing Protocol is a standard

Atom 2007

Earlier this month, the Atom Publishing Protocol was made an official IETF RFC 5023. I had meant to post about it at the time, but better late than never.

What is the Atom Publishing Protocol, or APP? It's a standard that allows Atom format to be remotely uploaded to an Atom server, as well as queries and updates to existing Atom documents. The Atom Enabled site, and there's sections explaining what Atom is and an introduction to the atom publishing protocol itself.

Although Atom is probably more well-known as the syndication format for newsfeeds (much like RSS), in fact it's a generic container format for anything that has a unique ID and a timestamp. It's a valid XML file that can either contain namespaced child elements or references to payloads elsewhere on the internet. Unlike RSS, there's clear delineation between XHTML payloads and those non-XML compliant HTML files that may have entitles encoded with < and >. However, the benefits of Atom extends well beyond newsfeeds; the Google Data APIs use Atom both as a communication mechanism and also as an envelope for results.

The Atom Publishing Protocol aims to standardise on this and other similar approaches (such as weblog servers such as WordPress and Blogger). In fact, the Google APIs are using in effect the APP already, and Blogger (a Google-owned business) uses the same API for uploading entries from tools like MarsEdit (my review).

APP is important for another reason; REST is increasing as a mechanism for dealing with web-based (or SOA-based) applications, and Atom is built on these foundations. (If you've not read Roy Fielding's dissertation on "Architectural Styles and the Design of Network-based Software Architectures", go read it now; it sets up what REST is and why it's important to the web.)

Google's leading the way with using Atom as a payload for querying and processing results, and now that the Atom Publishing Protocol is a standard, you can expect others to follow. Have you got an application which could use REST+APP?