Exactly what was silly about each version of RSS

Draft: started , last updated Tagged /rss

In 2004, Mark Pilgrim noted that there were nine incompatible versions of RSS, published by a variety of different and competing organisations, some with the same version numbers.

Frankly there was a lot of silliness about RSS back then. Some of it was clear back then. Some was clear before long. Some may only be clear with the benefit of hindsight.

Here’s an attempt at describing exactly what I reckon was silly about each version of RSS. Don’t take it too seriously, but don’t take it too lightheartedly either— although some of the problems are of historical interest only; others still apply.

RSS has not aged well. There was frenetic activity 1999–2002, and then it was deliberately frozen. Within a few months, people were champing at the bit to design something better, and that effort became Atom, with 0.3 at the end of 2003, and 1.0 under IETF (the ideal location for such standardisation!) by the end of 2005. Unfortunately, people continued to use RSS, even though it was at least as well-supported as RSS everywhere except podcasting. And so we still have to deal with the mess that is RSS today, especially in podcasting. Even when almost all RSS feeds include an Atom link element!

Background: the scriptingNews XML format

Developed from 1997. Not being called RSS, it is outside my purview.

RSS 0.9 (March 1993)

I started writing a possibly-clearer version of that, but ended up deciding that’s not the presentation that matters now. Twenty years ago, it was still a little bit relevant; now it’s not at all relevant. of

But some of the problems and solutions have led to problems with RSS as it is practiced today.

Here’s some of the history of RSS.

  1. From 1997, UserLand’s scriptingNews XML format was developed. It was a lightweight syndication format.

  2. In 1999-03, Netscape released RSS (RDF Site Summary) 0.9. People later started calling it 0.90, but that was never its name.

    RSS 0.9 has exactly one piece of RDF to it: the qualified name of its root element. The developers had bigger goals, but there were political problems.

    There are three second-level elements: <channel> (one, metadata), <image> (zero or one, frankly still metadata), <item> (one to fifteen), and <textinput> (zero or one, for feedback/comment forms). It was all in the http://my.netscape.com/rdf/simple/0.9/ namespace.

    HTML entities were permitted, but since there’s no doctype, that wouold make documents invalid XML.

    Items were only a title and a link: there was no description or content, for it was intended as a metadata format rather than a syndication format. Really it’s more reminiscent of sitemap XML than of current RSS.

  3. In 1999-07, Netscape released RSS (Rich Site Summary) 0.91.

    They realised people wanted syndication rather than metadata, so they dropped RDF and shifted all other second-level elements into the <channel> element. This is silly.
    RSS documents accordingly have a double root:
    you must write <rss version="0.91"><channel></channel></rss>.
    No explanation is offered for it not being <rss version="0.91"></rss>.
    This silliness remains to this day.

    A doctype is added with entites from HTML 3.2, so RSS documents should now all be valid XML.
    But they also stopped using a namespace, which is weird.

    Various elements are added, mostly from UserLand’s scriptingNews XML format.
    Most notably, items get a plain text <description>, making it a lightweight syndication format.

  4. 2000-06-07: UserLand releases RSS (it’s a name, not currently an acronym) 0.91.
    They claim it’s compatible with Netscape’s RSS 0.91, but it contains several obviously-incompatible changes.

  5. 2000-12-06: RSS-DEV Working Group releases RSS (RDF Site Summary) 1.0.

    It’s a fork of RSS 0.9, determined to make RDF actually mean something this time,
    and embracing XML namespaces for any further additions,
    though it does add <description> (unspecified format, suggested maximum length 500).

    It’s incompatible with all other versions of RSS,
    though if you ignore namespaces, an RSS 0.9 reader will probably cope.

    Adding actual RDF has complicated it a lot. Probably because of this, it never gains much traction. RSS 1.0 is a dead end.

    Its enduring contributions to RSS are:
    namespace proliferation (nice idea, but look at podcasts to see the outcomes),
    and the content:encoded attribute (designed for RSS 1.0, popular in RSS 2.0 despite being useless).

    I think RSS 1.0 may have genuinely had an entirely negative impact.
    The only tragedy is that it didn’t make things enough worse for people to properly abandon RSS in favour of Atom.

  6. 2000-12-25: UserLand releases RSS 0.92.

    There is no complete spec. Or comment about what RSS might stand for.

    It’s an update of 0.91, presumably their version rather than Netscape’s.

    Remember how <description> was supposed to be text?
    Yeah, no one cared about specs, they just did what they pleased.
    People would write utter rubbish, and feed readers were expected to cope.

    So the major change in 0.92 was that <description> can now contain HTML serialised as text.
    This is flagrantly incompatible with everything before, but matched most usage.

    Another change was the removal of all limits. Reading between the lines:
    people were starting to put entire content in feeds, rather than just descriptions as originally expected.

    Three other particularly interesting features were added:

    • <enclosure>: a simple way of attaching files to an item, for podcasts and such.
      I second-guess about two of the four or five design decisions
      (“enclosure” is a bad name, and
      the length attribute is byte rather than track length).
    • <cloud>: a somewhat painful system that does nonetheless get you push notifications.
    • <category>: tagging.
  7. 2001-04-20: UserLand releases a draft of RSS 0.93.

    Again no complete spec. This time it was never even finalised.

    By this stage there was a mailing list on Yahoo! Groups named “reallySimpleSyndication”.

    Compatible with RSS 0.92 only. It adds a few tags.

  8. 2002-08-??: UserLand releases a draft of RSS 0.94.
    “Due to odd historical circumstances, no official copies of the RSS 0.94 specification exist.”
    The linked document also incorrectly claims to be RSS 2.0.

    It removed one element from RSS 0.93 (making it incompatible), and added a <description type> attribute so you could choose text or HTML, which made it strictly incompatible with all previous versions.

  9. 2002-09-??: UserLand releases RSS 2.0.
    Unrelated to RSS 1.0.

  10. ????-??-??:

  11. RSS 1.1? Also why was the 1.0 spec at version 1.3 at time of release?
  12. Oh boy, the 2.0, 2.01, 2.01 revisions, later rebranded to 2.0.N, eventually up to 2.0.11.
  13. UserLand, Harvard, RSS Board, no one even knows whose it is.

Since then, https://www.rssboard.org/rss-specification has progressed to 2.0.11 with no more backwards-incompatible changes.

A few of the incompatibilities Mark Pilgrim spoke of didn’t really matter. Others were quite ridiculous.

What people use of RSS these days is RSS 2.0.11, but supersetted with some theoretically completely superfluous fields, and a whole lot of ridiculous duplication in vendor-specific namespaces. ---- Apple’s podcast stuff is supposed to have a DTD at http://www.itunes.com/dtds/podcast-1.0.dtd, but that’s broken. Get used to broken links whenever doing anything in this space, BTW; most stuff breaks over twenty years. (And even when links aren’t broken, they’re often out of date or confusing, e.g. https://podcasters.apple.com/support/823-podcast-requirements links to Harvard where version 2.0.1 is published: https://cyber.harvard.edu/rss/rss.html; but although it says it’s 2.0.1 and has the *date* of 2.0.1, by careful examination of the contents, I can state that it seems to be actually 2.0.1-rv-5, which is particularly important due to an error fixed two days after 2.0.1’s publication in 2.0.1-rv-2 where the lastBuildDate example used a single-digit hour. And although some timestamps on the site are for 2007-04-02, by which time 2.0.1-rv-6 and 2.0.8 had been published, it does *not* include those changes.) ----

Body text: Fonts:
Theme:
Explanation of all this
(yes, this works without JavaScript; persists to cookies)