I've been asked a few times (no really, I have!) where I stand with the whole RSS-RDF-Atom religous war. There's a very contentious history there, with some strong personalities that have made the domain of content syndication more polarized than perhaps it could have been. I'd really like to stay above the politics and look at the different specs from a technologist's viewpoint... so that's what I'm going to try to do here.
(Okay, if you've discovered RSS recently and want to know what I'm talking about, here are a few links for you, but I'm warning you now it's not pretty: History of the RSS fork, Why Choose RSS 1.0?, and Motivation for Atom.)
The three different specs I'm talking about are RSS 1.0 (which is RDF-based), RSS 2.0 (which is the evolution of RSS 0.91 and RSS 0.92), and Atom (which has also been referred to as "Echo" and is kind of a remix of RSS 2.0).
When we talk about content syndication, there are a few different aspects we need to talk about. The most interesting facet to me is the "feed format", which is really the schema of the XML that represents the channel and items within that channel. So let's get one thing straight right away: these formats are way more alike than they are different.
If I want to express a feed using these three different formats, it's not that tough to do the mapping. In fact, except for some date format goofiness, you could almost get away with using XSLT to do the transcoding. They all deal with representing a feed (called a <channel> in RSS 1.0 and RSS 2.0, a <feed> in Atom) of content items (called an <item> in RSS 1.0 and RSS 2.0, an <entry> in Atom) with certain (and slightly different) attributes of the feed and items being considered "core". There are no show stoppers translating from one feed to another, just annoyances, so what's <issued>2003-11-14T13:46:03-06:00</issued> in Atom is <dc:date>2003-11-14T13:46:03-06:00</dc:date> in RSS 1.0 and <pubDate>Fri, 14 Nov 2003 13:46:03 CDT</pubDate> in RSS 2.0. We can deal with that.
It's possible to extend all three formats in a well-defined manner using what are called "modules" or "namespaces" (let's just call them "modules" that use "XML namespaces"). A properly defined module can be referenced in all three formats. This is the important part! So, for example, while RSS 1.0 relies on using the Dublin Core to represent much of the metadata associated with an item, there's no reason that an RSS 2.0 or Atom feed can't reference the Dublin Core module and use the exact same elements. This is key for evolving the content models and allows us to think about the content without caring as much about the "feed format envelope" they'll be delivered in.
That being said, I prefer different feed formats for different reasons. I like RSS 2.0 because it's simple, but don't like the date format it uses (can't represent it with an xsd:date in XML Schema) or the looseness of the specification. I like Atom's model for representing content, but don't like the fact it's very very early in the adoption curve. I like RSS 1.0 for its formality, but don't like it for its formality -- okay what do I mean by that? I mean RDF is great, but quite frankly you gotta be able to take some big bites to do it right. I think it's just too much for this domain, and I really kind of think of RSS 2.0 as being syntactic sugar on an underlying similar model. I know, I know, that's not totally accurate, and turning your back on RDF means not being able to take advantage of monumental effort and thinking that's already been put into it by very smart people. But you know what? It's too much. And I like RDF -- back when we did DKA in 1998, we chose RDF as the underlying content model for our proto-blog product. It's just that RSS 2.0, with its ability to extend via XML namespaces, is good enough for where we need to go, warts and all (IMHO).
So the key to evolving content syndication forward seems to be in the modules. Great. I think the current psuedo-standard template for documenting modules is fine (see examples for a content module and an admin module), but there are plenty of examples out there that don't follow this format (like this photo module, this review module, and this blogChannel module).
To tell you the truth, I don't really care about what the documentation for these modules look like, but could we please all just agree to define and reference an XML Schema for these modules?!? I don't know what you think about XML Schema, but I personally like it a whole lot better than DTDs and I really like how other people have done the hard work in creating schema validators for me. Plus tools like XMLSpy are really smart about helping you to create documents that conform to an XML Schema. We can then even use the xsi:schemaLocation attribute when we declare these namespaces in the XML document to really automate the validation. I've got some examples of how to do this correctly I'll post someday soon.
As long as we're on the topic of modules and schemas, another thing you module writers really need to do is version your schemas from the very beginning. You should be able to have the ability to evolve your schema over time, but the URI for your module (and it's corresponding XML Schema) needs to change while your old one is still available. A lot of module writers are good about this, but many are not.
Okay, one more thing to say. In addition to the actual format of the feed, another dimension that we haven't talked about yet is the API for moving this content around. Now, if you're just a consumer of feeds in your personal aggregator or client, this statement might be confusing. "Don't I just have to do an HTTP GET request (hopefully with an If-Modified-Since header) to the URL that has the feed?" The answer is yes, that's all there is to it on the consumer side. On the publishers side, however, we find there are several APIs for managing the content that will eventually be pushed out via the feed. So while this isn't directly related to the topic of feed formats, let me just say that I really like how the Atom project is thinking about this. The article The Atom API by Mark Pilgrim does a great job of laying out why we need to start thinking of an item (or, in Atom's case, an "entry") outside of the context of a feed. It also makes a good case for keeping things as simple as they can: in this case, using the basic HTTP methods to manage content. I like this way better than SOAP or XML-RPC or any of the other APIs mentioned in the article. Don't get me started on SOAP.
So, that's the long answer to what I think about RSS 1.0 vs. RSS 2.0 vs. Atom. The short answer is: I don't really care all that much as long as we can extend them all in the same, well-defined manner. Oh, you just wanted the short answer? Sorry about that.