I’m no longer calling feeds “RSS feeds”. From now on I’m calling them “syndication” feeds, or just “feeds”. There have been two standards for doing this type of XML-based website syndication for a long time now — Atom and RSS. RSS is older and has more penetration, so its name has been confused with its function. Just like Xerox, Kleenex and Google.
Well, I don’t use Xerox to mean copy, I don’t use Kleenex to mean tissue, and the only reason I use “google” to mean search is because it’s vastly superior to the alternatives. If that changes I’ll drop it as well.
And that’s the case with RSS. It’s not simply not superior to Atom — it’s inferior. Here are a few of the highlights:
- Atom offers a number of technical advantages that hinge on a more precise and scalable definition. Think XHTML vs. HTML4. Examples include (from the Atom Wiki):
- RSS 2.0 requires feed-level title, link, and description. RSS 2.0 does not require that any of the fields of individual items in a feed be present. Atom 1.0 requires that both feeds and entries include a title (which may be empty), a unique identifier, and a last-updated timestamp.
- RSS 2.0 may contain either plain text or escaped HTML, with no way to indicate which of the two is provided, and the RSS 2.0 content model does not permit actual well-formed XML markup, which reduces the re-usability of content. Atom has a carefully-designed payload container, where content must be explicitly labeled.
- RSS autodiscovery has been implemented several times in different ways, often relies on unregistered (thus invalid) application/rss+xml MIME type, and has never been standardized. Atom [WWW]standardizes autodiscovery. The application/atom+xml MIME Type is registered with IANA. Additionally, Atom feeds contain a “self” pointer, so a newsreader can auto-subscribe given only the contents of the feed, based on Web-standard dispatching techniques.
- RSS 2.0 is not in an XML namespace but may contain elements from other XML namespaces. There is no central place where one can find out about many popular extensions. Atom 1.0 is an XML namespace and may contain elements or attributes from other XML namespaces.
- RSS 2.0 does not specify the handling of relative URI references. Different feed readers implement differing heuristics for their interpretation. There is no interoperability. In practice, relative URI references cannot be used in RSS feeds.Atom 1.0 specifies use of the XML’s built-in
xml:baseattribute for allowing the use of relative references.
- RSS 2.0 can be encrypted or signed like any other web content, if treated as arbitrary content. Rules for applying standard XML Encryption and XML Digital Signature on entries are included in Atom 1.0.
- The RSS 2.0 specification includes no schema. Atom 1.0 includes a (non-normative) ISO-Standard RelaxNG schema, to support those who want to check the validity of data advertised as Atom 1.0.
- Atom is run by the Atompub Working Group group is specified in RFC 4287 while RSS is basically run by a single genius who’s arguably very hard to work with.
“Dave Winer has done a tremendous amount of work on RSS and invented important parts of it and deserves a huge amount of credit for getting us as far as we have. However, just looking around, I observe that there are many people and organizations who seem unable to maintain a good working relationship with Dave.” — Tim Bray (member of the W3C and co-creator of XML)
- Google perfers Atom.
“That is the sound of inevitability.”
The bottom line for me is that Atom seems to be more technically sound as well as more open. When you combine that with Google having chosen it as their preferred syndication protocol, that pretty much seals it for me.
I’m not going to be calling feeds “Atom feeds” — that would be lame — but I am going to dump the RSS bit. In my view Atom is clearly the winner long-term.: