About two months ago David Winer presented his first version of the Guidelines for validating OPML. Since that time it has been updated two more times, but it is not the point. The point is that the document denotes two possible types of outlines for building directories: link and rss.
In my opinion, there are several problems with it. The major flaw is that RSS link is also a link. Type rss clearly states the type of the resource, but link is very general. Here’s the cut from the document. Read it carefully:
When a link element is expanded in an outliner, if the address ends with “.opml”, the outline expands in place. This is called inclusion. A validator should check that the OPML file being pointed to is accessible, and may wish to validate the pointed-to file as well.
If the address does not end with “.opml” the link is assumed to point to something that can be displayed in a web browser.
The main flaw is that lots of OPMLs today use link type when pointing to the RSS feeds. Yes, they could use the rss type, but they don’t. Why? Because it’s easier to always set type link as it works for every type of links well and the validator has no objections. Do you understand what it means for the users and the developers of different aggregators and outliners? Certainly you do. The users immediately become unable to use significant number of OPMLs in their favourite applications and the developers… they are good guys, they always have to follow all these breathtaking twists of a plot.
Today we almost freed ourselves from specific extensions for the feeds. For example, now we have Feedburner service for the feeds which gives us the links, like http://feeds.feedburner.com/noizZze, where we don’t have any specific extensions, like “.xml” or “.rss”. Our blogging web-applications generate feeds on-the-fly. So why I would need extension for my OPML? Just to fit the rules of an OPML directory formation my pet OPML might never be included in? Sorry, but it’s laughable.
Well, where are the tricks? As I was finishing this writing I decided not to include any tricks just because it is already tricky enough.
All this teaches me a good lesson, another lesson about thinking of possible implications. Got to go. The OPML parser is still waiting for my attention…