Syndicating Monash:
An Introduction to RSS
Michael Lowe
Who am I?
- Michael Lowe
- Faculty of Education
- Web Guy/Monkey/
Master
- (new role) Project Manager: Process Mapping
- Past Monash Student
- Engineering
- Masters Business Systems
What do I know about RSS?
- I use it!
- My blog makes it!
- I've used it as a data format in a simple application
- I can transform it with XSLT (as RSS is XML)
- I've done some research for this presentation
- Investigated it as an appropriate data format for sharing event information (much like Upcoming.org does)
What am I going to talk about?
- What is RSS?
- History of RSS (where did it come from)
- What can I do with RSS?
- Making RSS
- Examples (format/coding/applications)
- Extending RSS
- Auto Discovery
- How can we use it at Monash?
Syndicate?
According to Dictionary.com
- An association of people or firms formed to engage in an enterprise or promote a common interest.
- An agency that sells articles, features, or photographs for publication in a number of newspapers or periodicals simultaneously.
What is RSS?
- Known as Really Simple Syndication, RDF Sydication, Rich Site Summary (all are valid)
- It is a format that supports content Syndication
- Early use case: download news and read off-line
- Popular with blogs, news sites, alternative way to gather and aggregate news
- A data format (it really just defines another set of elements like html that defines a document type)
- There are other formats for Syndication (notably ATOM)
History of RSS
- Developers at Netscape released version 0.90 (RDF based) in 1999
- Initially designed for use in portal (personalisation) applications to display news
- Two main types of RSS (RDF based and Simple)
- RDF versions (0.90, 1.0)
- Simple version (0.91, 0.92, 0.93, 0.94, 2.0)
Popularity Contest
- 63%, Version 2.0
- 18%, Version 0.91
- 16%, Version 1.0
- 2%, Version 0.92
source Syndic8.com (Aug. 2005) from 99,650 feeds (figures less than 2% ignored)
What can you use RSS for?
News sites such as The Age and even the Essendon Football Club create RSS feeds to promote their news
- Reading News, Desktop RSS clients
- Web based news readers/aggregators
RSS Reader: IE 7 beta
RSS Reader: Safari
What else can you use RSS for?
What is preventing adoption
- No universal mechanism for identifying or subscribing
- Many versions & alternatives (ATOM)
- Appears and behaves just like a link
- Killer Application (IE 7 reported to support RSS)
- Separate clients
- Different implementations of some standards (I'm guilty)
Attempts to resolve problems
- Orange XML/RSS labelled image
,
, 
- Client support (Firefox/Safari built in support) and autodiscovery
- Web based aggregators (don't require a new client)
So how do I go about making RSS?
- Code by hand (ouch!)
- Use an editor (eg. RSS Editor: Firefox extension)
- Generate from existing source (myWebFeeds turns pages into RSS feeds)
- Make a customised program for the purpose (or modify to produce)
Structure of RSS 2.0
<?xml version="1.0"?>
<rss version="2.0">
<channel>
.... channel info .....
.... item ....
.... item ....
.... item ....
.... item ....
</channel>
</rss>
RSS 2.0 Channel Elements
<channel>
<title>Channel Title</title>
<link>http://www.example.org</link>
<description>Example RSS Feed</description>
<managingEditor>
Michael.Lowe@education.monash.edu.au
</managingEditor>
<pubDate>Thu, 25 Aug 2005 16:00:00 +1000</pubDate>
<language>en</language>
</channel>
Required fields: title, link and description.
pubDate must comply with RFC 822
RSS 2.0 Item Elements
<item>
<title>Syndicating Monash: Introduction to RSS</title>
<link>http://www.its.monash.edu/staff/web/slideshows/</link>
<description>
What is RSS and what can I use it for? A quick introduction
and talk about RSS its increasing popularity and variety of
uses. Finally, how can we use it at Monash?
</description>
<enclosure url="http://www.example.org/rss.mp3" length="123000"
type="audio/mpeg" />
<author>Michael.Lowe@education.monash.edu.au</author>
</item>
All child elements of item are optional. But, at least one of title or description should be present
All RSS 2.0 Elements
- channel: title*, link*, description*, language, copyright, managingEditor, webMaster, pubDate, lastBuildDate, category, generator, docs, cloud, ttl, image, rating, textInput, skipHours, skipDays
- item: title, link, description, author, category, comments, enclosure, guid, pubDate, source
- * required
Examples (RSS 1.0)
<rdf:RDF>
<channel rdf:about="http://safari.java.net/">
<title>java.net</title>
<link>http://safari.java.net/</link>
<description>java.net</description>
<language>en-us</language>
<image rdf:resource="http://safari.java.net/images/safarilogo.gif"/>
<items>
<rdf:Seq>
<rdf:li resource="http://safari.java.net/0321369297"/>
</rdf:Seq>
</items>
</channel>
<image rdf:about="http://safari.java.net/images/safarilogo.gif">
<title>java.net</title>
<url>http://safari.java.net/images/safarilogo.gif</url>
<link>http://safari.java.net/</link>
<description>java.net</description>
</image>
<item rdf:about="http://safari.java.net/0321369297">
<title>Secrets of Podcasting: Audio Blogging for the Masses</title>
<link>http://safari.java.net/0321369297?a=102682</link>
<description>If you thought Internet radio was cool, wait until you experience podcasting</description>
<dc:publisher>Peachpit Press</dc:publisher>
<dc:creator>Bart G. Farkas</dc:creator>
<dc:subject>Usability</dc:subject>
<dc:date>August 09, 2005</dc:date>
</item>
</rdf:RDF>
Magpie RSS example
<?php
require_once 'rss_fetch.inc';
$url = "http://monash.edu/rss.xml";
$rss = fetch_rss($url);
echo "Site: " . $rss->channel['title'] . "<br />";
echo "<ul>";
foreach ($rss->items as $item) {
$title = $item['title'];
$url = $item['link'];
echo "<a href=\"$url\">$title</a></li>";
}
echo "</ul>";
?>
Extending RSS
- RSS 1.0 supports various modules
- Modules provide extra elements/tags with information
- RSS 2.0 added support for XML namespaces to support extentions - that can be similar to the RSS 1.0 modules
- Popular modules: event, content, comment API, creativeCommons, etc
Including extensions (XML Namespaces)
<?xml version="1.0"?>
<rss version="2.0"
xmlns:ev="http://purl.org/rss/1.0/modules/event/"
xmlns:dc="http://purl.org/dc/elements/1.1/" >
<channel>
....
</channel>
</rss>
RSS Event Module
<item>
<title>Syndicating Monash: Introduction to RSS</title>
<link>http://www.its.monash.edu/staff/web/slideshows/</link>
<description>What is RSS and .... </description>
<enclosure url="http://www.example.org/rss.mp3" length="123000"
type="audio/mpeg" />
<author>Michael.Lowe@education.monash.edu.au</author>
<ev:startdate>2005-08-25T16:00+10:00</ev:startdate>
<ev:enddate>2005-08-25T17:00+10:00</ev:enddate>
<ev:location>B15, Building 3A, Monash Uni, Clayton</ev:location>
<ev:organizer>Web Resources & Development</ev:organizer>
<ev:type>Workshop</ev:type>
<dc:subject>RSS</dc:subject>
</item>
Do the right thing. Validate!

Auto Discovery
After you have created a RSS feed, how do you let people know it is available? Allow autodiscovery! What & how do I do that?
<link rel="alternative" type="application/rss+xml"
href="rss.xml" title="My RSS Feed" />
- In the HTML header (<head>...</head>)
- In browsers that support auto discovery this will trigger a notification mechanism
Browser support for Auto Discovery
- Safari

- Mozilla Firefox

- IE 7 is reported to support RSS

Thunderbird: Select Account Type

Thunderbird: Name Account

Thunderbird: Feed Management Options

Thunderbird: Add RSS feed

Thunderbird: Review feed subscriptions

Thunderbird: Read RSS Feed

What are we doing at Monash?
- my.monash syndicate The Age and Monash Memo (maybe others)
- I wrote a small application to manage noticeboards (Editor & Chief)
- Probably others, definately personal use!
What else could we do?
- Web Workshops
- Monash Newsline
- Logs, downtimes, bugs, etc
- New Library books (feed per faculty)
- Aggregating Journal articles (eg. University of Saskatchewan, Library)
- Staff Training sessions
- Important dates
- James Farmer uses it to aggregate student submissions to blogs
Questions
- Any questions or ideas?
- Contact me later: 9905 4806
- or email: Michael.Lowe@education.monash.edu.au