Personal tools
You are here: Home Members derek Plone and Web Syndication
Document Actions

Plone and Web Syndication

by Derek Richardson last modified 2007-03-21 22:32

An assessment of the state of web syndication in Plone as of February 2007.

Background


Web syndication is using content from one website on another website or in some other software container. Syndication is common, not just in the web world, but in newspapers and other media. In the US, many major newspaper columnists are syndicated, meaning that their editorials show up in many different papers. In the web world, the process may be as simple as printing out the content from the source website, snail-mailing it to the administrator of the target website, and that admin posting it on the target website.

In reality, however, syndication is usually done via web feeds. A web feed is a data stream that provides continually up-to-date content to subscribers. Of course, a feed has to be in a format that is understood by both publisher and subscriber. In the web world, there are two families of generally accepted formats: RSS and Atom.

RSS


RSS is a family of web feed formats:
  • Really Simple Syndication (RSS 2.0)
  • Rich Site Summary (RSS 0.91, RSS 1.0)
  • RDF Site Summary (RSS 0.9 and 1.0)
This family is broken down into two major branches:
  • RDF Branch (0.9, 1.0, 1.1)
  • 2.* Branch (0.91, 0.92 – 0.94, 2.0)
The branches are largely incompatible. Also, some incompatibilities exist within branches.

Atom


Here we ware talking about the Atom Syndication Format, not the Atom Publishing Protocol. It was initiated because of the political and technical shortcomings of RSS. It is now an IETF proposed standard: RFC 4287.

The Bottom Line on Formats


For outbound feeds, RSS 2.0 is the most important, perhaps the only important, version of RSS – all contemporary platforms have aggregators for RSS 2.0 For inbound feeds, however, it's good to handle as many formats as possible – one can't always predict the format that will be used by one's favorite publisher.

Atom is a competitor to RSS 2.0. At present, it is unclear which, if either will prevail;  it is possible that the future, like the present, will be multi-format. Thus, in a closed ecosystem, one can pick either RSS 2.0 and Atom and standardize; however, in an open ecosystem, it is best to publish in both RSS 2.0 and Atom formats.

For More Background


The information presented here is minimal but enough to follow the current article. For more information, see Wikipedia.

Outbound Feeds in Plone


Outbound syndication is built into Plone. Outbound feeds can be configured via the portal_syndication tool in the ZMI. Once enabled, the feed for any content item that is configured to provide feeds can be accessed by adding "/RSS" to the URL for that content item. There are two major limitations of the built-in outbound feeds. One, there is no means for extension beyond the common object attributes (title, description, body, etc). Two, and more importantly, Plone 2.5.2 only supports RSS 1.0, not RSS 2.0 or Atom. The biggest impact of this limitation is that there are no enclosures, so that podcasting is impossible without resorting to an add-on product. There is a proposal to upgrade built-in Plone support for outbound feeds to include RSS 2.0 and Atom (Pluggable Plone Syndication - PLIP #128), but it has seen no documented action in the last year.

There are four options for improving outbound feeds. One, PloneATOM adds Atom feeds to Plone, but has seen no public releases since 2005. Plodcasting is a podcasting product for Plone focused on audio podcasts, but it has also seen no public releases since 2005. Plone RRS2 Syndication (qRSS2Syndication) supports RSS 20 with both audio and video podcasting and went beta in Janaury 2007. Finally, there is a tutorial on worldcookery that details how to add Atom feeds to Plone using Zope3/Five technologies.

Inbound Feeds in Plone


There is no inbound syndication built into Plone. There re five options for enabling inbound feeds. CMFNewsFeed is a pure Zope product that has not seen a release since 2002. CMFSin displays incoming feeds in a portlet but has seen no releases since 2005. CMFFeed stores feeds in ZODB and a separate head harvests feeds and talks directly to ZEO. 0.46 was likely last release – no date given. It was removed from circulation in favor of PloneRSS but is available in the collective svn repository. PloneRSS displays feeds in portlets. It requires SQL database backend and the latest release was 0.1.123 (RC) on April 3, 2006. Finally, Feedfeeder creates ATCT objects from Atom feeds and stores them in ZODB; it was beta as of December 27, 2006.

Outbound Feed Infrastructure


pyRSS2Gen is a RSS 2.0 generator written in pure python. It went 1.0 on November 6, 2005. atomixlib is an Atom generator written in pure python. The most recent svn commit was October 19, 2006. Basesyndication is a Plone-specific collection of templates and interfaces for implementing feeds. The most recent svn commit was November 20, 2006. Fatsyndication is a Plone-specific collection of basesyndication implementations using AT. The most recent svn commit was November 17, 2006. PLIP #128 proposed to chart a new course with Zope3/Five technologies and use none of these existing infrastructure elements.

Inbound Feed Infrastructure


Spycyroll is a Python feed parser but has not yet seen a public release. RSS.py is a Python feed parser that is limited in formats and requires strict compliance to specs. It was 0.46 as of unknown date. FeedParser is a Python module for downloading and parsing syndicated feeds. It suports RSS 0.90, Netscape RSS 0.91, Userland RSS 0.91, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0, and CDF feeds. It also parses several popular extension modules, including Dublin Core and Apple's iTunes extensions. It was 4.1 as of January 10, 2006. It is also the parser used by Feedfeeder.

Conclusions


Outbound feed support in Plone was innovative when introduced, but is now out of date. Inbound feed support has always been ad hoc due to its exclusion from the Plone core. Pluggable Plone syndication, PLIP #128, raises hopes of bringing outbound feeds up-to-date with current standards and technologies, but is currently languishing. Feedfeeder is the best current product for inbound feeds, depending on use cases

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: