RSS and Atom: Understanding and Implementing Content Feeds and Syndication
Written by: Heinz Wittenbrink
Review by Garbin
I decided to read this book because syndication formats are becoming more and more important as publishing systems for modern web sites. As the author remarks often (and he’s perfectly right) there’s a foundamental difference between a syndication (or publication) format like RSS or Atom (the two formats covered in the book) and a content format like HTML.
First of all, a syndication format clearly separates the content from the presentation, while the two are strictly coupled in HTML. Then, using a syndication or publication format is the best way to publish and exchange resources that are supposed to be updated, while HTML is static in this sense.
At this point, readers must know that this book is mainly a reference manual. It is composed by 255 pages divided in four chapters and a big appendix (one third of the book) in which is covered all the vocabulary of the RSS and Atom formats. That said it is worth to notice that besides the reference part, the four chapters explain clearly the formats covered in the book, starting from common scenarios and presenting lot of background material and links to external resources.
In the first chapter, the basic concepts of syndication and publication formats are explained and the history behind these formats is outlined, making the reader understand the path that led from RSS to Atom.
Chapter 2 analyzes the RSS formats, specifically RSS2.0 and its predecessors (from 0.91 to 0.93). These formats are described with the help of tree diagrams (that are used often in the book) and the author takes an approach that I like very much: he first presents a tree diagram of the whole structure of the format, then another one with a simpler structure that contains only the mandatory elements and that is commonly used. Starting from the last diagram, the author covers the elements contained in the simpler structure and adds the remaining until the whole structure has been described.
This chapter provides also guidelines on how to resolve common problems such as how to correctly embed HTML in to an RSS feed and how to structure the RSS feed in order to be correctly understood and parsed by common readers and aggregators.
There’s also an interesting section that deals with enclosures and extension modules that are respectively a way to include multimedia content in a feed and a way to specify a set of additional XML elements to extend the format’s vocabulary. I particularly enjoyed the section on extension modules because it goes in the details of the most common ones, like the BitTorrent module, the creativeCommon module, Easy News Topics, Open Search from Amazon, RSS Media from Yahoo!, and Simple List Extensions from Microsoft.
Chapter 3 deals with RSS1.0, that is considered a modular and extensible format compliant to the RDF data model, but it’s more complex than RSS2.0 and therefore it didn’t spread its popularity.
This chapter was less interesting than the previous one because it describes two formats, RSS1.0 and 1.1, that didn’t gain more that one tenth than the popularity of RSS2.0, and this has to be considered when it comes to publish an RSS feed. However, this chapter should be read because it provides an interesting overview of the RDF (Resource Description Format) semantic data model and also completes the description of the available RSS formats.
The last chapter is an interesting one. It talks about Atom, a new publication format that is growing in popularity also because it could become a standard format. In fact, it is developed and maintained by an IETF group that is responsible for its standardizing. Atom is actually a suite of protocols and specifications that cover the publication format, the publishing of document and feed discovery. The chapter starts explaining the differences between Atom and RSS, focusing on the new functionalities. Then, the whole structure of an Atom feed is explained with the help of tree diagrams. Following the same pattern as in the previous chapters, the author explains first the simplest structure of an Atom document, and then adds constructs and elements to cover the whole structure. There’s also a section dedicated to the extensibility of the format.
The last part of the book is composed by an appendix and it’s a real reference manual. In this appendix the developer will find an entry for each of all the elements defined by the RSS formats covered (2.0, 1.0, 1.1) and Atom.
The reference part is organized in sections, one for each format covered, that are divided into sub-sections, one for each element in the syndication format. Each element is presented by defining its meaning, its ancestor element, the descendant ones, the attributes it supports and a final example that illustrates its usage. If some remarks have to be made, they are specified after the example, together with the language versions that supports the element.
The reference part is therefore very structured and dense of information, being a very useful one for the developer.
Pros and Cons
- Lot of background information and external resources provided
- Good reference manual
- The book is said to be written in an “authoritative but friendly style”. Actually the style is more authoritative than friendly.
- There are not many code examples in the informative part, expecially when comparing different formats.
As you can see from the Pros & Cons, if you are involved with content syndication you should read this book. I think it is targeted more to developers than content professionals or marketing teams, because it presents a strongly structured view of the format’s vocabulary.
For those who are thinking that the Internet is full of tutorials and readings about RSS and Atom, this is true but consider the benefits of having tons of informations carefully selected, packed and explained plus a detailed reference and links to Internet resources all in a single book. Three stars and ½ out of five.