Cook Computing

RSS 2.0 Spec Half-Baked

September 29, 2002 Written by Charles Cook

Its not surprising that RSS 2.0 has been a bit of a fiasco over the last few days. The spec does not mention anything about the namespace although the linked sample 2.0 file includes it. Normally I would tend to give more weight to the actual specification than sample files but its anyone's guess in this case.

On the other hand the spec doesn't mention backwards compatibility so there's no reason to expect that aggregators expecting 0.91 or 0.92 RSS files should have continued to work. This suggests it would have been more appropriate for Userland to set up separate feeds for 2.0 than to suddenly starting outputting completely incompatible XML documents on the existing feeds.

I don't understand why the new namespace is required (if backwards compatiblity is important). An XML document can have some elements affiliated to namespaces yet with others unaffiliated to any namespace. My aggregator works fine with the RSS 2.0 format without the namespace and would continue to work even if elements with namespaces were added to the document. This is because it uses a fully compliant XML parser and ignores any elements it is not interested in, which includes any elements in namespaces. Maybe the default namespace was just a whimsical decision on the grounds of "if RSS 1.0 uses a default namespace, then 2.0 must also have one" without thinking through the consequences.

The whole thing about parsers not been able to cope with the default namespace was a complete red herring. It surprises me that any unmodified aggregators continued to work. They must have been ignoring that the fact that the names of all the elements had effectively been changed.

Winer is now saying: the spec is imperfect in regards to namespaces. we anticipated a 2.0.1 and 2.0.2 in the Roadmap for exactly this purpose. Really? Something as fundamental as this should have been thought through before outputting the RSS 2.0 files. This apparent lack of concern for the soundness of the spec flies in the face of his latest pronouncement: We spend huge resources to make sure that files, scripts and apps built in version N work in version N+1 without modification. Even the smallest change in the core engine can break apps. It's just not acceptable. When we make changes we have to be sure there's no breakage..