RSS 3.0

With Aaron Swartz gone for over a year, I decided to keep a copy of his RSS 3.0 spec. I think it’s important to remember that it was probably all an elaborate prank, but I still loved it. – AlexSchroeder

In his Introduction, Aaron wrote about the changes he was introducing:

  1. Remove XML. XML is just too complicated and is against the spirit of RSS, which is Really Simple Syndication. I don’t want people to have to buy one of these 200 page XML books to understand RSS. And XML sucks up bandwidth like nobody’s business. Instead, we’ll go back to RFC 822-style fields. There are lots of available parsers for those.
  2. Remove namespaces. Namespaces are just a waste of time. If people want to add an element to RSS, then just send it to me and I’ll add it to my list of all elements in use. This system is easy to use and doesn’t result in any wasteful URIs all over the place.
  3. HTML forbidden. No one needs HTML. Email has been just fine for years before Microsoft introduce their stupid rich HTML extensions. HTML is for those loser newbies. Any intelligent Internet user deals in plain text.

Specification

An item consists of a series of lines separated by “\n”.

Each line is a series of letters, numbers, “-”, “.” or “_” (called the name) followed by “: “ followed by a series of characters (called the value). No two lines should start with the same name. If a line starts with a space or tab character, then it is a continuation of the value on the previous line. The newline in between is preserved. UTF-8 encoding is always used.

An item ends at the first blank line (that is, a line with no characters).

Document

An RSS 3.0 document consists of one head item followed by zero or more body items.

Head

The head is an item. Names for the lines are globally assigned. Names are case-insensitive. The assigned names are:

Most properties refer to the whole feed in adddition to the item. i.e. last-modified is the last-modified date of the feed.

Body

The body is a series of zero or more items. Names for the lines are globally-assigned and case-insensitive. The assigned names are:

Tokens

title
The title of the item.
description
A short description of the item.
link
A link to the item.
generator
The person or program that generated the item.
errorsto
An email address, optionally followed by a space and a name, of the person to send error reports about the feed to.
creator
An email address, optionally followed by a space and a name, of the person who created the item.
created
The date (in W3CDTF format) the item was created.
last-modified
The date (in W3CDTF format) the item was modified.
language
The language of the item, using the language tag format specified in RFC 3066.
rights
The copyright statement for the item.
license
A URI for the copyright license of the item.
guid
A globally unique identifier for the item.
uri
A globally unique identifier in the form of a URI for the item.
subject
The topic of the item.

Example

title: RSS 3.0 News
description: Latest updates on RSS 3.0.
link: http://www.aaronsw.com/2002/rss30
creator: me@aaronsw.com Aaron Swartz
errorsTo: me@aaronsw.com Aaron Swartz
language: en-US

title: Spec Introduced
created: 2002-09-06
guid: 00795648-C1E0-11D6-9AA6-003065F376B6
description: 
 The spec was introduced to the world.
 
 A few people noticed.

Title: Zooko Likes It
Created: 2002-09-06
GUID: 0894CB2F-C1E0-11D6-9649-003065F376B6
Description: Zooko says he likes the spec.

Languages: