Sponsored links:
Several examples and primers for RSS 2.0 syndication have appeared over the past few days, which makes the job of selecting a basic implementation much easier than it looked at the beginning of the week. The first signs of 2.0 adoption have appeared too, providing an early indication of how sites are choosing to implement its features (I've highlighted some links at the end of this posting).
Mark Pilgrim has created an RSS 2.0 template for Movable Type, which provides an excellent sample of how to implement a core set of features using core RSS supplemented by namespaces. His commentary is well worth reading, as it provides a very clear explanation of some of the key issues that you need to understand when implementing 2.0 in all its glory.
Another very useful resource is Timothy Appnel's exposition of Extremely Simple Syndication (XSS). He defines the core tags that are shared by virtually all versions of RSS, and sets out some recommendations for their use in a way that's designed to maintain compatibility with all previous versions. One of the encouraging things about comparing Timothy's sample of "extensible XSS" with Mark's sample of his RSS 2.0 implementation is that they're virtually identical, despite using a number of namespace references to include various elements. This demonstrates that there's already a great deal of agreement out there on best practice.
But before venturing into that territory, I'd like to start off with the more basic implementation which Timothy has set out under the name of XSS-strict. This is what I had in mind when I was talking about "2.0 Bare" in my posting a week ago. As his example shows, this is an ultra-lightweight, bare-bones implementation of RSS that you can syndicate just about anywhere without it breaking somebody's reader. Mind you, as Mark points out in his 2.0 template article, "If all you want is title-link-description, stick with your existing RSS 0.91 template and stop reading now." It's only if you want to prepare yourself to move beyond these "bare-necessities" core tags that you need to be concerned with 2.0.
You do however need to be aware of what content is generally considered acceptable or not acceptable in each of these elements:
That just about covers it for now, but of course that's just a starting point for using RSS. Having got the core established, the next step is to consider how to include all those optional elements. That will be the subject of future postings, and probably the subject of much speculation and discussion in various other weblogs and forums over the next few weeks. As I mentioned earlier, some very useful resources have already sprung up elsewhere this week. Here are a selection of the most notable:
Much of the controversy around RSS 2.0 derives from its relationship to another specification, RDF. Deciding what to do about RDF in RSS 2.0 is crucial before we can go any further. There are three possible options:
Build it in from the start This was the position that a highly motivated group of technologists took two years ago, when they published a specification for syndication based on RDF, which they named RSS 1.0. The RDF acronym stands for Resource Description Framework, a W3C specification for describing Web resources in a form that can be processed automatically. The authors of RSS 1.0 believed that rebasing the syndication format on RDF would be an important step towards automating the discovery and processing of knowledge on the Web, and move us all much closer to the W3C's vision of a Semantic Web. Which is all well and good, but adding RDF to RSS 1.0 broke compatibility with all previous versions of RSS, and thus began the schism between the 1.0 and 0.9x branches of RSS.
There has been a lot of discussion recently about how to build RDF into RSS 2.0 in a less intrusive way than was done in RSS 1.0. In particular, one proposal by Shelley Powers has been picked up approvingly by several other people, but as Timothy Appnel notes, "this format does break backward compatibility with all previous specifications." So, whatever its technical merits, this proposal has little to offer a webmaster who wants to syndicate to as wide a universe as possible, certainly in the short term.
As you can see, I'm coming down against building RDF in to your RSS 2.0 implementation right from the start. But when creating the syndication feed, there is something to be said for storing the content of the feed either directly in RDF format, or in a format that could easily be converted into RDF at some point in the future. I'll be discussing ways of achieving that in later postings.
Add it in later Later may actually come sooner than you think. The inclusion of support for XML namespaces in Userland's RSS 2.0 specification makes it very easy to call on RDF definitions, and that will be something I'll be considering for my implementation of 2.0 Lite. You can even argue for making use of it in a "bare essentials" implementation. So the decision against building in RDF right from the start is only a matter of degree. We're not throwing the baby out with the bathwater.
Forget about it altogether OK, this is the full baby-and-bathwater stance, and in my view, it's not an option. While RDF has little relevance to real-time feeds of what's new on a website, it's clearly designed with a view to organizing some of the other types of content that I mentioned I'd like to syndicate, such as directory information. So it evidently has an important role to play, one that I'll be exploring in a lot of detail when we come to consider 2.0 Rich.
UPDATE: At the very same time that I was writing the above comments, Shelley Powers was posting an article making much the same points about the relevance of RDF to RSS. Which is spooky. But reassuring to know we're both tuned into the same meme here.
Building a website using plug-in online services: the Loosely Coupled experience
Copyright © 2002-2006, Procullux Media Ltd. All Rights Reserved.