Now that UserLand has formalized its specification for RSS 2.0, I have started thinking through what that means for Loosely Coupled as both a publisher and an aggregator of RSS syndication feeds. The circumstances of its birth, together with the flexibility that it now incorporates through support for XML namespaces, means that there are many different choices in how RSS 2.0 is implemented. My intention here, and in later postings, is to set out some simple guidelines that I hope will make it easier to decide which of the many possibilities to implement.
My starting point is to establish the bare minimum that an RSS feed needs to, or should be expected to, contain. On Monday, I mentioned that I thought RSS 2.0 will probably be implemented in three main ways Lite, Rich and Classic. I hope to arrive at a definition of each of those in later postings, but I suspect it will take some time. All I aim to do today is to arrive at a definition of what I suppose you might call "2.0 Bare" the simple bare necessities you need to include to successfully publish or aggregate an RSS feed.
This matters to me because, as I said on Monday, I believe that RSS has the potential to be a powerful vehicle for syndicating many types of content and information. My intention is to arrive at an understanding of RSS that will allow it to serve as a multi-purpose syndication platform, so that this site can syndicate news stories, directory information and other content as well as weblogs. I'm going to be very pragmatic about this, too. I have a site to run here, and while it may be technologically superior to implement some things one way and other things another, there are certain results that I need to achieve within certain resource constraints. When it comes to the crunch, the results-resources calculation always has to take precedence over technological excellence.
When thinking about the bare necessities for an RSS feed, the most important result to make sure of is that the content I want to syndicate will be compatible with the vast majority of readers and aggregators out there. The operative word there is "content", which is not the same as saying "feed". You can publish a compatible feed, and still fail to syndicate any meaningful content, because readers will ignore any elements they don't understand, and have certain expectations for the elements that they do recognize.
The basic ingredients of an RSS feed split into two main sections:
The channel This gives information about the content source, for example the name, URL and explanatory description of the weblog or news source that it comes from.
The items This lists information about each of several items published by the content source, which can include the subject title, URL, description and other elements.
Mark Pilgrim recently set out an example of a basic RSS 2.0 feed containing these elements, based on the RSS feed for his own weblog. As he says, it "could easily be mistaken for an RSS 0.9x document," which is a good thing if you want to reach as wide a readership as possible, because it means that virtually all the readers and aggregators out there will be able to read it.
But there are still issues to consider, even in relation to such a basic implementation as Mark's example. Unfortunately, I'm out of time right now to go on to examine those, so I'll continue in a new posting on Monday. I have a feeling it's going to take several days to tell the full story, and I may as well take the time to do it properly.