Expressing threads and comments in feeds

A feed entry is not a silo, but often connected to other entries in the feed world. In this post you will learn how to express relationships between data using RSS, Atom, and common namespaces.

Comment count

Reading a feed entry can sometimes evoke action in the form of commentary. Readers often become writers, leaving comments attached to a post or article. Popular technology news site Slashdot has had an active commenting community for years, and created a namespaced element to express the total number of comments associated with a specific item.

<slash:comments>42</slash:comments>

The above example uses the slash module to define the number of comments associated with a specific item or entry. This additional data helps a user determine the popularity (or existence) of conversations around the individual entry. Aggregators may choose to sort on comment count, or simply display the total number of comments before linking to the entry’s comments area (defined in RSS 2.0).

Comment feeds

Each entry might output a separate feed for comments. Aggregators can count the total number of individual entries contained in this feed to display a total comment count, or display the comments within the post view.

<wfw:commentRss>http://example.com/post1/comments/rss</wfw:commentRss>

The above example uses the Well-Formed Web Comment namespace to define a RSS feed containing comments for the given individual entry. An aggregator can pass this URI to its parser to better understand the conversation happening in the individual entry’s comments.

Citing the source

A source element may be specified to provide more information about the origination of described data. An entry might be a copy of another resource or inspired by another piece of work.

The Flickr explore feature contains one picture sourced from an individual member’s photo stream for example. A user might want to explore more photographs from that Flickr member or immediately subscribe to his or her photo feed. Another example might be crediting an original source, such as a blogger commenting on a story reported by The New York Times.

RSS 2.0

RSS source elements exist to give credit for links and provide a method for tracking story origination. You may specify the feed URI and title in this item element.

<source url=”http://example.com/rss.xml”>Example Title</source>

If a reader notices Bob tends to find really good stories from Sue he might add Sue to a list of subscriptions. A machine might notice the relationships between stories, and follow multiple connections until it locates a node of origin.

Atom 1.0

Atom’s source element (IETF 4287, 4.2.11) credits another feed when the current entry is a copy of an original source. This applies to the Flickr example given above, a search result within a feed search engine, or a spliced feed. Elements such as feed author, copyright, and links are maintained, allowing a user to subscribe directly to a source feed, visit the corresponding web page, or view more information about the author.

Atom Threading Extensions

Atom Threading Extensions combines comment counts, comment feeds, and giving credit for the source of a story.

<link rel="replies"
      type="application/atom+xml"
      href="http://example.com/post1/comments/atom"
      thr:count="42"
      thr:updated="2006-06-28T12:11:10Z" />

The above example defines a feed containing comments about the individual entry and a count of comments received including the time of last comment. Each attribute may be interesting enough to spark an action.

Summary

There are multiple ways to express relationships between resources and spawn related actions for individual feed entries. Implementations vary, but exposing these connections and actionable data leads to a richer and more intertwined web.

Implementations vary by each piece of feed parser but here are some “in the wild” numbers taken from a recent snapshot of Google Reader subscriptions:

  1. Well-Formed Web: 8.39%
  2. Slash: 3.66%
  3. Atom Threading: 0.54%