What is RSS

This page explains what RSS is. You will not yet be creating your own RSS files, but you will be seeing how RSS is commonly used and simple example RSS files for these common uses. You will also be getting a little history on RSS.

What is RSS?

The most popular versions of RSS are XML-based markup languages used for syndication. (Although RDF-based RSS formats exist, namely the deprecated RSS 0.90 and RSS 1.0.) Common uses of RSS syndication are for the syndication of news web sites, of blogs, of Internet Radio, and of Internet Television.

This tutorial teaches RSS 2.0, but makes an effort to point out issues with other versions of RSS.

RSS is almost never written by hand; it is almost always created by server-side software (usually written in a language like PHP, Java, C#, or Python) on the web server. However, so that we can learn RSS, we will be creating RSS scripts by hand.

A short history of RSS

In March of 1999 Netscape released RSS 0.90. It was much much different than today's RSS. It wasn't really a format for syndication, but was a format for providing a summary of a website. In fact, back then, RSS did not stand for Really Simple Syndication but stood for Rich Site Summary.

In July of 1999 Netscape's RSS 0.91 was released. Like RSS 0.90, Netscape's RSS 0.91 was also a format for providing a summary of a website, and not really a syndication format (as it is today). Netscape's RSS 0.91 was created to simplify things. RSS 0.90 was RDF-based, which many found to be overly complex. Netscape's RSS 0.91 was only XML-based and added a DTD to allow several entities (commonly found in HTML).

So at this point Netscape deprecated the RDF-based RSS 0.90 and told everyone to use Netscape's RSS 0.91, which was XML-based.

In June of 2000 Userland's RSS 0.91 was released. (And yes, that means that there are 2 different version of RSS 0.91.) The difference between the two different versions of RSS 0.91 -- Netscape's RSS 0.91 and Userland's RSS 0.91 -- is that Userland's RSS 0.91 does not have the DTD that Netscape's RSS 0.91 has; and thus doesn't have the extra entities that Netscape's RSS 0.91 has (commonly found in HTML). Other than that, they are the same. Technically speaking, Userland's RSS 0.91 is a subset of Netscape's RSS 0.91.

In December of 2000 the RSS-DEV working group released RSS 1.0. This version of RSS was no longer purely XML-based, but was RDF-based (like the original and now deprecated RSS 0.90). The RSS-DEV working group changed what RSS stood for, and made it stand for RDF Site Summary (at least, this is what it stood for in their version of RSS).

So at this point we had Netscape's RSS 0.91, Userland's RSS 0.91, and the RSS-DEV working group's RSS 1.0.

Later that same December Userland released RSS 0.92. RSS 0.92 was meant to replace Userland's RSS 0.91. If you notice though, the RSS versioning number got all messed up at this point, since RSS 0.92 is newer than RSS 1.0.

So at this point we had Netscape's RSS 0.91, the RSS-DEV working group's RSS 1.0, and Userland's RSS 0.92.

In April 2001 Userland released a draft for RSS 0.93. This version of RSS was never made "final" so it remained only a draft, and never became a replacement for Userland's RSS 0.92.

In August 2002 Userland released a draft for RSS 0.94. Like RSS 0.93, this version of RSS was never made "final" and was also only a draft, and never became a replacement for Userland's RSS 0.92.

So at this point we still had Netscape's RSS 0.91, the RSS-DEV working group's RSS 1.0, and Userland's RSS 0.92. (Although some were using RSS 0.93 and RSS 0.94 even though they weren't supposed to.)

In September 2002 Userland released RSS 2.0. RSS 2.0 was meant to be a replacement for RSS 0.92 (and the RSS 0.93 and RSS 0.94 drafts that no one was supposed to use). Userland bumped up the version number all the way up to 2.0 because the RSS-DEV working group already used 1.0 with their RDF-based RSS 1.0.

So at this point we had Netscape's RSS 0.91, the RSS-DEV working group's RSS 1.0, and Userland's RSS 2.0.

Now, the story doesn't quite end there. In November 2002 and again in January 2003, RSS 2.0 was changed from its original specification by Userland. And although these are each different, they all label themselves as RSS 2.0 on the <rss> element.

So now, at this point, we still have Netscape's RSS 0.91 (since Netscape never deprecated it) although most people don't use it anymore. Most people use either the RDF-based RSS 1.0 or the XML-based RSS 2.0, with the XML-based RSS 2.0 seeming to be the most popular. (This tutorial uses RSS 2.0.)

How RSS is used today

Today, RSS is mostly used for syndication. Syndication is the process of telling others that you have content for them to consume. In other words, when you syndicate, you are telling everyone something like: "Hey everyone, I've got articles that I want everyone to come and read. Just subscribe to my RSS feed and you will be able to get the latest ones all the time.".

Note: If you provide a non-password-protected RSS feed, you are implicitly giving everyone permission to use the contents in you RSS feed in almost any way they see fit. They can read it. They can make local copies of it. They can share that local copy. They can put it on their website. They can even re-syndicate it. And more.

If you don't want any of that done, then don't put it in a non-password-protected RSS feed, and, of course, don't make the password public.

News web sites use RSS to provide everyone with a list of their newest articles. For example:

<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>Example News Site</title>
        <description>This is an Example News Site.</description>
        <lastBuildDate>Wed, 27 Jul 2005 00:30:30 -0700</lastBuildDate>
        <link>http://news.example.com/</link>
        <item>
            <title>News Flash: I Like Bread</title>
            <guid isPermaLink="false">4d4a0a12-f188-4c97-908b-eea27213c2fe</guid>
            <pubDate>Wed, 27 Jul 2005 00:30:30 -0700</pubDate>
            <link>http://news.example.com/artcle/554</link>
        </item>
        <item>
            <title>Big News Today: Birds Fly</title>
            <guid isPermaLink="false">c4a63f09-b45b-466b-8773-6ff264001ab7</guid>
            <pubDate>Tue, 19 Jul 2005 04:32:51 -0700</pubDate>
            <link>http://news.example.com/artcle/553</link>
        </item>
        <item>
            <title>Fire is Hot</title>
            <guid isPermaLink="false">c1795324-d5ea-44fa-95b1-b5ce2090d4f1</guid>
            <pubDate>Sun, 15 May 2005 13:02:08 -0700</pubDate>
            <link>http://news.example.com/artcle/552</link>
        </item>
    </channel>
</rss>

Bloggers use RSS to provide everyone with a list of their newest blog posts. For example:

<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>Joe Blow's Blog</title>
        <description>This is the Weblog of Joe Blow</description>
        <lastBuildDate>Sun, 15 May 2005 13:02:08 -0500</lastBuildDate>
        <link>http://joe-blow.example.net/</link>
        <item>
            <title>I Be Blogging...</title>
            <guid>http://joe-blow.example.net/log/21</guid>
            <pubDate>Sun, 15 May 2005 13:02:08 -0500</pubDate>
            <link>http://joe-blow.example.net/log/21</link>
        </item>
        <item>
            <title>I am so SMRT</title>
            <guid>http://joe-blow.example.net/log/20</guid>
            <pubDate>Sat, 14 May 2005 22:19:18 -0500</pubDate>
            <link>http://joe-blow.example.net/log/20</link>
        </item>
        <item>
            <title>Huh?</title>
            <guid>http://joe-blow.example.net/log/19</guid>
            <pubDate>Sat, 14 May 2005 09:55:59 -0500</pubDate>
            <link>http://joe-blow.example.net/log/19</link>
        </item>
        <item>
            <title>Black Cat Spotted</title>
            <guid>http://joe-blow.example.net/log/18</guid>
            <pubDate>Fri, 13 May 2005 13:13:13 -0500</pubDate>
            <link>http://joe-blow.example.net/log/18</link>
        </item>
    </channel>
</rss>

Those who create Internet Radio use RSS to allow users to access their shows. For example:

<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>Joe Blow's Blog</title>
        <description>This is the Weblog of Joe Blow</description>
        <lastBuildDate>Sun, 15 May 2005 13:02:08 -0500</lastBuildDate>
        <link>http://joe-blow.example.net/</link>
        <item>
            <title>I Be Blogging...</title>
            <guid>http://joe-blow.example.net/log/21</guid>
            <pubDate>Sun, 15 May 2005 13:02:08 -0500</pubDate>
            <link>http://joe-blow.example.net/log/21</link>
        </item>
        <item>
            <title>I am so SMRT</title>
            <guid>http://joe-blow.example.net/log/20</guid>
            <pubDate>Sat, 14 May 2005 22:19:18 -0500</pubDate>
            <link>http://joe-blow.example.net/log/20</link>
        </item>
        <item>
            <title>Huh?</title>
            <guid>http://joe-blow.example.net/log/19</guid>
            <pubDate>Sat, 14 May 2005 09:55:59 -0500</pubDate>
            <link>http://joe-blow.example.net/log/19</link>
        </item>
        <item>
            <title>Black Cat Spotted</title>
            <guid>http://joe-blow.example.net/log/18</guid>
            <pubDate>Fri, 13 May 2005 13:13:13 -0500</pubDate>
            <link>http://joe-blow.example.net/log/18</link>
        </item>
    </channel>
</rss>

Note: Broadcasting of Internet Radio is sometimes call Podcasting, IPradio, and Audio Blogging.

Those who create Internet Television use RSS to allow users to access their shows. For example:

<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>Kate's IPTV Show</title>
        <description>Watch it or else!    You know you want to.</description>
        <lastBuildDate>Tue, 23 Aug 2005 21:02:05 -0800</lastBuildDate>
        <link>http://katetv.example.com/</link>
        <item>
            <title>This is Fun</title>
            <guid>http://katetv.example.com/show/4</guid>
            <pubDate>Tue, 23 Aug 2005 21:02:05 -0800</pubDate>
            <enclosure url="http://katetv.example.com/show/4" length="1911146" type="application/ogg"/>
        </item>
        <item>
            <title>Watch This</title>
            <guid>http://katetv.example.com/show/3</guid>
            <pubDate>Tue, 16 Aug 2005 16:11:57 -0400</pubDate>
            <enclosure url="http://katetv.example.com/show/3" length="1387442" type="application/ogg"/>
        </item>
        <item>
            <title>It is me again</title>
            <guid>http://katetv.example.com/show/2</guid>
            <pubDate>Tue, 9 Aug 2005 13:12:12 -0400</pubDate>
            <enclosure url="http://katetv.example.com/show/2" length="1894877" type="video/mpeg"/>
        </item>
        <item>
            <title>Hello</title>
            <guid>http://katetv.example.com/show/1</guid>
            <pubDate>Tue, 2 Aug 2005 18:22:14 -0400</pubDate>
            <enclosure url="http://katetv.example.com/show/1" length="17442215" type="application/ogg"/>
        </item>
    </channel>
</rss>

The observant reader may have noticed that the news web site and blogger examples were the same type of RSS. And also that the Internet Radio and Internet Television examples were the same type of RSS. In fact, the only real difference between the news/blogger RSS and the Internet Radio/Internet Television RSS is that the news/blogger RSS uses the <link> element and the Internet Radio/Internet Television RSS uses the <enclosure> element.

Note: These RSS examples are very very simple. And were designed to give you an idea about what RSS basically looks like. All these RSS examples are very minimal. When you create your own RSS feeds, you will likely want to make them more complex than these and include additional RSS elements and make use of the various RSS Modules.