Track Read Items in an RSS Feed Reader

Keeping track of RSS feed items in a feed readerOne of my latest projects is a mash-up between twitter and a feed reader, called feedtwit. As I’ve been working on this project I have had to consider a difficult question: how will my RSS feed reader handle previously read items?

Here’s another way of stating the problem: an RSS feed is a static file on a web server. It contains data about the feed itself and then a series of “items” (which are the articles or tidbits of information the reader is interested in). Since most of us don’t read XML easily, we need a feed reading program to parse the RSS feed into a usable format. A feed reader displays the items and somehow has to record which items have been read by the user.

If I just load the feed into the feed reader it will display every item in the feed every time- no matter how long the feed is. Every time the reader pulled the feed it would display every item. When the author of the feed added a new item, it would be displayed, along with all the other items previously added. Some feeds accumulate many many items over a long period of time- a typical person interested in the feed would not be interested in so much information. There has to be a way of keeping track of which items have been previously read so the user isn’t overwhelmed by information they are not interested in.

There are two different ways we could handle this. First, we could keep a database of which feed items a particular user has read. Every time a new item is added to the feed, then, this new item is displayed and that alone. That item is recorded (perhaps in a database) along with the other, previously-read items. Thus duplications would be avoided and the reader would receive information in a steady, usable trickle.

The problem with this is how to record this. Presumably each person reading a feed would have their own record of which items they have read for each feed. This potentially could be a lot of data. For instance, if someone were to subscribe to a very commonly updated feed (like a news feed) and was addicted to RSS feeds and accumulated a bunch of different feeds (I have heard of people watching hundreds of feeds at a time- how they do this, I don’t know). Sure, services like PostRank can help pare this down but as the developer of a feed reader, you still have a large number of databases to maintain.

A better option is to merely record the last item for each feed that each user has read. Thus you will only have to record one piece of information per feed per user. This is a more manageable option from a programing perspective.

The problem with this option is that people don’t always read their feeds in order and sometimes skip items in order to come back to them later. Still, it seems easier to keep track of the latest item read and a couple of exceptions to that (odd items here and there that haven’t been read yet) than keeping track of the total number of items that have been already read.

How would you solve this dilemma? What solutions have you come up with? I’d love to hear your suggestions.

This entry was posted on Saturday, July 11th, 2009 at 11:39 pm and is filed under RSS. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply