Friday, May 2, 2008

Belatedly researching an old religious war - RSS 1.0 vs. RSS 2.0 vs. Atom

I had previously seen a Justin Kestelyn blog post that I liked, so I went to his FriendFeed page to find it. (Importance of a brand: my first guess was that his FriendFeed URL contained "oracletechnet," and I was right.) When I got to his FriendFeed page, however, I discovered that the OTN blog wasn't one of the items that he offered.

So I asked him about it.

Justin, why doesn't this blog appear on your FriendFeed page?

And Justin replied:

Perhaps FF does not link "rss.xml" URLs because it errors out during import for me.

I figured that this would be a good time for me to figure out all the different flavors of feeds out there. Everyone, including the puppets, were celebrating RSS Appreciation Day recently, but there wasn't really any conversation about the details.

So I started Googling and Stumbling about, and I ran across a few things.

Let's go back to 2004 to see what Robert Scoble (at the time, a Microsoft geek blogger) was saying about the topic:

Last night I said I recommend aggregator producers only need to read in RSS 2.0 and Atom (since those are the two dominant formats). But [IBM's] Sam [Ruby] chimed in and asked me "Take a look at YOUR subscriptions, and identify which ones are RSS 1.0." I'm in the midst of doing that and it's a significant number of feeds.

So, in response to my stupid advice, I'm changing my mind. If you're building an aggregator (or something that consumes/displays/reuses feeds) you need to support Atom, RSS 2.0, and RSS 1.0.


Well, apparently FriendFeed isn't supporting all of these formats. Yes, I know, I just said something negative about FriendFeed. But I don't think my name will be entered in a blacklist. Yet.

Especially if I refrain from taking sides in the religous war.

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....

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.


So, having acquired a minimal amount of information about the different types of feeds, I started searching through FriendFeed to see what they supported and didn't support. I ran across this feature request:

Although most readers support ATOM, I would like to see other formats
(RSS 0.91 - 2.0).


However, I still needed to find some type of translator between the three standards and the "rss.xml" that Justin mentioned. Unfortunately, the names for feeds are all over the map, and there's not any universal convention about how one names things. So I did some comparisons so that I could come up with some wild guesses.

The Oracle Technology Network feed URL is http://blogs.oracle.com/otn/xml/rss.xml. When you look at the internals, the identified RSS version is 2.0.

The feed URL for my blog is http://mrontemp.blogspot.com/rss.xml. It is identified internally as rss xmlns:atom="http://www.w3.org/2005/Atom"

So Blogger defaults to Atom feeds, but also supports RSS:

All site feeds are published in Atom 1.0 format. However, if you add ?alt=rss to the end of any site feed URL, you can get the same feed in RSS 2.0 format.

I was unable to confirm this, so I'll take their word for it.

So, to confirm the problem that Justin was encountering, I went to FriendFeed and created an imaginary friend. (He's really neat.) I then entered Justin's RSS feed (as previously mentioned, the http://blogs.oracle.com/otn/rss/rss.xml URL) and got the following error message:

We could not find a feed link tag in the given page. Please enter the RSS or Atom feed url instead.

Which brought me back to a complete lack of understanding.

So I didn't gain anything from this exercise.

Actually, I did.

You know how I was previously complaining that there weren't feeds for my labels? While I was writing this post, I found this Blogger help item that explained how to get a feed for a particular label.

The format for label feeds is this:

http://blogname.blogspot.com/feeds/posts/default/-/labelname

Be sure to substitute in the correct blog address for blogname and the label you're interested in for labelname. Also, don't miss the hyphen ("-") in the URL. That's not a typo!


I confirmed this by creating two imaginary friends in FriendFeed, one named OE Religion with the feed http://mrontemp.blogspot.com/feeds/posts/default/-/religion, and one named OE Technology with the feed http://mrontemp.blogspot.com/feeds/posts/default/-/technology. So if you want to filter to just read one of my blog labels, you have the ability to do so.

Sphere: Related Content
blog comments powered by Disqus