Introducing Feedcache: QOS for RSS
A short while back I had an itch inside of Skydasher that needed scratching. A big part of the guts of Skydasher deal with handling RSS feeds that users wanted to subscribe to.
Early on we realized that displaying RSS feeds in a web browser was a lot harder than just grabbing an XML file and parsing out the results. For instance – there can be a lot of overhead to the transaction – overhead that might be more appropriately dealt with asynchronously. Then there’s the question of formats. Not every feed in the universe is published using the de facto RSS 2.0 standard. Some are published using older versions of the RSS specification, and some exist in alternative formats like ATOM. Then there’s the question of feed reliability. The net isn’t a terribly stable place. The number of error conditions that can be encountered when trying to retrieve a feed are almost endless.
This all adds up to a lot of complexity for developers that are just looking to retrieve a feed and display it in an application. We realized that we would encounter this complexity every time that we added RSS support to any of our applications. Looking at all of this, we realized that we needed to build some widget-grease that gave us a “build once, deploy often” capability.
So we built a feed caching engine and stuck an API on it that we made available to any internal applications that needed to suck in RSS feeds and display them in a web page. The way it works is remarkably simple – we send a request for a feed to the API and the API responds with a feed. If the cache doesn’t have the feed in its index, it goes out and gets it so that the next time the feed is requested, the RSS is available. This is a simplified view of the tool, but it also does regular harvesting, rationalizes normalizes alternative feed formats into RSS 2.0, stores binary objects and so on. Of course, if my description is lacking, you could also check it out for yourself.
We recently realized that Feedcache might be useful for other developers as well, so we’ve created a slightly modified version of Feedcache specifically for developers to hack around with. Officially (well, unofficially, this isn’t a product that we’re selling, its a program we’re offering) called “Tucows Feedcache: Developer Edition Beta” (heh – beat that Microsoft!) that employs developer keys to track who’s who (to track and prevent abuse) and give access to everyone who wants it.
You can get more details about Feedcache over at the Feedcache developer wiki. My personal hope is that developers find this useful and help us improve those bits that they don’t yet find useful. Let me know what you think.
See this post as it first appeared on Blogware.
4 comments
Comments are closed - these are kept exactly as they were left.
Danny, April 24, 2006
Seems a sensible general approach, and it's very nice of you to open the service up. But I can't help being a little amused at the way it "rationalizes alternative feed formats into RSS 2.0". So it'll take well-defined Atom content and convert it into a format in which you can't tell what's meant to be markup and what's just text - ever so rational ;-)
Ross, April 24, 2006
Thanks Danny.
A couple of things. Over the longer term, I can definitely see the output format becoming a runtime option. Keep in mind that this was first developed as an internal to Tucows service. it wasn't designed to make sense to anyone on the outside :) We chose to output RSS because it made sense for what we were doing - not as a political statement.
As to my use of the word "rationalize" - it wasn't a political statement either. I was being sloppy - normalize, as in regularize, as in make the same across the entire system, was what I meant. I've updated the post to clarify.
-r
Danny, April 25, 2006
Ok, sorry, I was just amused at your choice of words, anyhow RSS 2.0 is doing fine politically ;-)
Matt, April 25, 2006
This is really confusing. Is it a web service? Is it open source software I can dowload and run myself? Are there any examples of usage? How can I use it? The wiki page makes no sense and tells me nothing that isn't in this blog entry. In fact the wiki is almost a textbook example of how wikis are sometimes really awful for providing any sort of orientation or navigation, especially since it looks like 90% of stuff under the "table of contents" has nothing to do with FeedCache.
If this is an OS platform you guys are releasing, then I think that's a great idea. It's a space which needs to me commoditized. However if this is a centralized web service, I don't see any reason to use it.
Okay, rant over. I'm only commenting because I think software like this will be an important piece of infrastructure in the future. :)