Developing Feeds with RSS and Atom

by Ben Hammersley

266 pages, ISBN 0-596-00881-3, O'Reilly Media, Inc., Sebastopol, CA, April 2005.

Reviewed by J. M. Haile, Macatea Productions,

No doubt you have wondered why developers cannot seem to agree on just what RSS stands for. Does it mean "RDF Site Summary," or "Rich Site Syndication," or "Really Simple Syndication"? Or, perhaps it doesn't stand for anything at all—maybe it's not an abbreviation—maybe it's merely a name. However you chose to interpret it, this lack of agreement, as Ben Hammersley makes clear in the introductory chapter of his book, is symptomatic of the deep divisions and acrimonious arguments that surrounded the tortuous development of "standards" for syndicating website content. Early in Chapter 1 Hammersley mentions knife fights and barroom brawls, and I thought this poetic hyperbole, but as I read, I decided it might not be too much of an exaggeration after all.

We are conditioned to accept that version numbers on software signify a logical and temporal progression: Firefox follows from, builds on, extends, and refines Firefox Not so here. RSS 2.0 builds from RSS 0.91, not from RSS 1.0. The standards for RSS 2.0 differ significantly from those for RSS 1.0, and Atom is yet another kettle of fish. So if you choose to syndicate your content using RSS 2.0, you are not necessarily providing a more refined, flexible, or up-to-date syndication than those who choose RSS 1.0. We live in the golden age of choice—why should website syndication be any exception? But choice comes at a price. If we want to syndicate content, then we have to select from three rather different kinds of feeds, or even use all three to maximize coverage. Similarly, if we want to read feeds from others, via a commercial aggregator or a homegrown parser, our software must be able to parse all three. This isn't all that difficult to accomplish, the price isn't all that high, but it's there to be reckoned with.

Happily, Hammersley does a fine job of walking us through the standards and formats for RSS 1.0, RSS 2.0, and Atom. He shows us which elements of each standard are required, which others are optional, and he tells us when an optional element should be included. He offers guidance on how to decide which standard to choose for your situation. All this is done in O'Reilly's familiar house style: informal, informed, and informative.

If you want to syndicate content from your website or blog, but you are completely new to this game, then you should learn RSS 2.0 first: it is the simplest of the three and, in fact, you can create a simple RSS 2.0 feed with no more than 20 lines of XML code. (Hammersley includes an appendix on XML.) With your site and an aggregator, you can play with your simple feed and learn a lot rather quickly, then decide if you should move on to RSS 1.0 or Atom or both.

But while RSS feeds are now much used to syndicate blogs and news sites, Hammersley emphasizes that these are only the first and most obvious uses of the technology. All manner of uses for RSS feeds are waiting to be imagined and implemented. New uses can be realized by developing modules—extensions to existing RSS standards that can be defined and created by any programmer to satisfy a new need. For example, you might create an RSS feed to maintain your daily ToDo list, to track revisions to software you are developing, to monitor a particular topic on Google or at Amazon, to catalog your books and CDs, to keep collaborators up-to-date on a project. The formats for feeds, particularly RSS 2.0, are sufficiently simple that new modules and new uses can be developed rather quickly. Any vibrant technology will invariably lead to applications well beyond those initially envisioned by the early developers of the technology. Hammersley's book provides a solid introduction to the vibrant world of RSS feeds.

(jmh 07 June 06) © 2006 by J. M. Haile. All rights reserved.