1 RSS and Atom newsfeed formats
Various formats are often used for newsfeeds (including podcasting newsfeeds). The formats that are considered here are: RSS 1.0, RSS 2.0, Atom 0.3 and Atom 1.0.
 2 A validator
There is a validator that can be used to check the validity of a newsfeed that allegedly conforms to one of these specifications. This validator is at http://feedvalidator.org/
Departments and colleges at the University of Oxford use a newsfeed generation system called OXITEMS. We have extensively used the validator to check out the validity of the RSS 1.0, RSS 2.0, Atom 0.3 and Atom 1.0 newsfeeds that are generated by OXITEMS. The feedvalidator software is open source, and can be downloaded and run locally. We have downloaded a copy and every 4 hours we use it to check the validity of the newsfeeds that are used by Oxford's site in iTunes U.
Note: if you attempt to validate an Atom 0.3 newsfeed using this validator, it will report the newsfeed is an obsolete version. It says that early adopters of the Atom format should upgrade their feed to the latest version of the specification.
 3 RSS 1.0
The RSS 1.0 specification is online 
The description element (of an item) is described as (#PCDATA). Consequently, there is no explicit provision for including HTML markup in a newsfeed.
Extensions to RSS 1.0 is done through the use of modules. A page containing a list of proposed modules is available . For example, the module for events is at http://web.resource.org/rss/1.0/modules/event/
 4 RSS 2.0
Although the numbering may imply that RSS 2.0 is a more up-to-date version of RSS 1.0, this is not the case: there has been an unfortunate forking in the development of RSS and an unwanted confusion re numbering. So RSS 1.0 and RSS 2.0 are alternative and rival newsfeed formats.
Athough there is a version of the RSS 2.0 specification at http://blogs.law.harvard.edu/tech/rss, since July 2003, the RSS Advisory Board has been looking after revisions. The latest revision of the RSS 2.0 specification is at http://www.rssboard.org/rss-specification
The specification does not seem to specify what the description element can contain. Some people say that it can contain HTML; whereas others say that it definitely cannot.
For example, a web page at Mozilla  says
Do not put anything but plain text into the RSS <description> element. Although it has become common practice to abuse the RSS <description> element and put non-plain text data in it. it is not actually allowed.
However, some people do put HTML into the description element.
When using RSS 2.0, you are allowed to use elements from other namespaces. So, other people use a content:encoded element instead of a description element for providing HTML. Some people even provide both with HTML in both.
YAHOO use RSS 2.0. In the description element, they put HTML inside a CDATA section. An example is http://rss.news.yahoo.com/rss/sports. This method is also adopted by other people.
The Mozilla web page cited above says that CDATA sections reduce the bloat. However, the <description> is NOT suppose to be used for any of this. It is only suppose to be used to include plain text. They say that HTML should be put in a content:encoded element.
The BBC uses a mix of RSS 2.0, RSS 1.0 and RSS 0.91. For their RSS 2.0 feeds, they just put a single sentence (using no HTML) in the description element. An example is used by the BBC:
Date elements such as pubDate and lastBuildDate require use of the RFC 822 format for dates. This format is not easy to parse, and in my opinion, it is preferable to supply dates in the ISO 8601 format. Some people use a dc:date element instead of a pubDate element. This requires the use of ISO 8601.
RSS 2.0's author element requires an e-mail address. Because it is considered to be bad to disclose e-mail addresses in newsfeeds, OXITEMS uses:
** firstname.lastname@example.org (Fred Bloggs)
Other people omit the author element and use a dc:creator element instead. If you try using both, the validator will moan that this is not allowed.
If you want to use RSS 2.0, instead of using pubDate, description and author, you could use dc:date, content:encoded and dc:creator. This is valid RSS 2.0 but this use of elements from other namespaces for the crucial elements suggests the RSS 2.0 format is inadequate. Although the use of these other namespaces in this way is quite common, it is unclear as to how many newsfeed readers support the use of these other namespaces.
As mentioned above, RSS 2.0 permits elements from other namespaces. So the RSS 1.0 modules mentioned earlier can also be used in RSS 2.0. Here, again, is a link to a page containing a list of proposed RSS 1.0 modules . One such module is the module for events: http://web.resource.org/rss/1.0/modules/event/.
 5 RSS 2.0: Apple iTunes and iTunes U formats
The additional elements used by Apple for iTunes are documented at Apple 
iTunes U uses an additional element, an itunesu:category element. This element is documented online 
 6 Atom 0.3
The Atom 0.3 specification is at http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html
Note that with the release of Atom 1.0 during Summer 2005, Atom 0.3 is deprecated. The above web page says the Atom 0.3 specification is made available for historical purposes only. It continues by saying DO NOT implement it or ship products conforming to it.
The Atom 0.3 specification says that content elements MAY have a "type" attribute, whose value indicates the media type of the content and if this is not present, its value MUST be considered to be "text/plain". The specification also says that content elements MAY have a "mode" attribute, whose value indicates the method used to encode the content. This can be one of the values "xml", "escaped" and "base64". If [it is] not present, its value MUST be considered to be "xml".
Typically, people have content elements like:
<content type="text/html" mode="escaped"> ... </content>
And inside the content element, people:
(a) either put HTML inside a CDATA section as shown at http://gilbane.com/blog/atom.xml(b) or they provide encoded HTML writing
as & lt;p& gt; as shown at http://ramble.oucs.ox.ac.uk/blog/stuart/atom.xml.
 7 Atom 1.0
The Atom 1.0 specification is at http://atompub.org/2005/08/17/draft-ietf-atompub-format-11.html
Atom 1.0 was released during Summer 2005. There is a useful summary of the changes between Atom 0.3 and Atom 1.0 at http://www.rakaz.nl/nucleus/item/103
Atom 1.0 has title, summary, content and link elements. The content element has an associated type element which can be "text", "html" or "xhtml" or any mime type.
A good article on the topic of guids is "How to make a good ID in Atom" by Mark Pilgrim 
A good overview of Atom 1.0 is: http://www-128.ibm.com/developerworks/xml/library/x-atom10.html
 8 Support by newsfeed readers
Firefox 1.5 has support for live bookmarks for all of the above four formats. The previous release (Firefox 1.0.7) had no support for Atom 1.0. Plans for Firefox 2.0 and 3.0 are outlined in http://wiki.mozilla.org/Feed_Handling
With Thunderbird 1.5, it is possible to read RSS newsfeeds and Atom 1.0 newsfeeds. The previous release, Thunderbird 1.07, can only read RSS newsfeeds.
Although Internet Explorer 6 has no support for RSS and Atom newsfeeds, IE 7 has support for (at least) RSS 1.0, RSS 2.0, Atom 0.3 and Atom 1.0.
Although Opera 8 has support for RSS and Atom 0.3, it has no support for Atom 1.0. Support for Atom 1.0 is available in the latest development release of Opera (Opera 9.0 Preview 1, released on October 20th 2005).
iTunes software is a useful tool for testing a podcast newsfeed via the Subscribe to Podcast function.