NewsBlur: The Open Source Feed Reader with Brains

1082

Google Reader is the undisputed champ among Web-based RSS and Atom feed-readers. But while the search giant gets plenty of karma points on the software freedom front, Google Reader’s status as a commercial product means that from time to time, features have to come and go. The latest change is the removal of social-networking “share this” functionality, as Google Reader gets merged into Google Plus. The open source feed reader NewsBlur is ready to make a play for your attention, adding not just link-sharing but multi-user rating and intelligence.

At Your Service

NewsBlur has been in development since 2010, the brainchild of developer Samuel Clay. Although all of the source code is hosted at GitHub (and under the permissive MIT license), Clay is openly trying to use the service as a funding source, by hosting a NewsBlur service on the newsblur.com domain. You can sign up with a NewsBlur account for free, if you can live with the limitation of 64 active feeds. Alternatively, you can remove the feed-limit and get a pay-what-you-choose plan.

Naturally, the hidden secret in this pricing formula is that the more users who use newsblur.com accounts (free or paid), the better the service’s statistics and recommendation engine become. When you sign up, you can automatically import your existing feed collection from other Web services (Google Reader included) using OAuth, or upload an OPML file from another application. Luckily for us feed-hoarders, the importer pops up a dialog box to let you select your 64 favorite feeds if you are using a free account, and attempts to pre-select the 64 most popular.NewsBlur

Once loaded and fired-up, the NewsBlur interface is easy to figure out if you have used any comparable feed service: you get a left-hand-side vertical column showing your feed titles and the unread message count for each, and a larger window on the right with the content for the selected feed. You can place the list of unread titles above or below the pane where you actually read posts and stories.

What is more interesting is that NewsBlur also gives you a choice of three views for each entry. You can view the feed content in feed-reader form (which is just text, images, and embedded objects rendered into the window), or you can switch to the “Story” tab which instead loads the original page associated with the entry. That can help a lot for wonky feeds that use poorly-formatted image or video objects-includes, and for reading the comments attached to an item. Finally, you can switch to the “Original” tab, which loads the base URL of the site. Just so we’re clear, these latter two options load the original content in the feed-reader window; they are simply there to help you make sense of content and find additional links, feedback, or features of the site.

Intelligence Features

The “intelligence” features of NewsBlur come from analyzing the ratings and popularity of individual feed sources on individual accounts. You can view site-wide statistics for any feed by clicking on the line-graph icon in the title field; the report will show you traffic trends, subscriber numbers, and a sorted list of user-assigned keyword tags. You “train” the NewsBlur recommendation engine by clicking on the colored-block icon next to the graph icon. Up will pop a window with two panels inside: one listing all of the authors in the feed (gleaned from the RSS or Atom tags themselves), and one listing all of the category and tag names. For each one, you can click on either a thumbs-up or a thumbs-down icon to record your feelings. You can do the same thing for each individual story by clicking on the arrow icon next to the story title.

Training NewsBlur

NewsBlur aggregates your ratings and uses them to predict which stories you’ll like in the future. A red-yellow-green slider at the bottom of the feed list allows you to control what you see: green shows you those stories tailored to your tastes, yellow just the basics, and red absolutely everything, including the stuff you’ll hate. You can get feed recommendations generated by other users by clicking on the Dashboard link at the top of the feed list.

Of course, NewsBlur also sports social news-sharing features. By clicking on the arrow icon by each headline, you can start it, email it, or share it with Twitter, Facebook, or another service. Currently the list of supported services is quite small — it would be nice to add your own to the mix, so that Identi.ca users can play along. But the code is still young, and after all it is open source.

On Your Server

Since NewsBlur reached the stable point, Clay appears to have been spending most of his time developing mobile solutions for iOS and Android device owners. Although the code is available for download, the installation instructions are on the sparse side.

NewsBlur is written primarily in Python, using the Django framework. It uses jQuery on the client side, and a number of server-side libraries (such as RabbitMQ and Celery) to handle feed fetching and content parsing. The database setup is non-trivial; NewsBlur can use either MySQL or PostgreSQL to manage feed lists, the list of user accounts, and account information, but it also uses a MongoDB databases to store the contents of the actual pages, usage stats, and old stories no longer in the latest feed update. The app needs this information in order to track statistics and analyze story and feed popularity; without it the “intelligence” would not be so intelligent.

Another wrinkle is that NewsBlur is hard-coded to use Amazon S3 as a storage back-end. While this makes sense from newsblur.com’s public service angle, is does introduce a difficultly for those interested in running their own, private NewsBlur server. I ultimately decided that, in spite of how much I like the NewsBlur interface and ratings system, I was not interested in paying for an S3 account in addition to the Web hosting plan I already use. I’m hopeful that future releases will allow additional storage options — at the very least WebDAV, which should be sufficient for single-user setups. Nevertheless, I walked through as much of the installation process as I could in order to get a feel for the system.

NewsBlur makes heavy use of the Fabric Python library for lower-level installation tasks and configuration. Fabric will download and install other system prerequisites for you, including MongoDB, but you will still need to manually set up a MySQL or PostgreSQL user and database for NewsBlur to use.

Most of the configuration is done in NewsBlur’s fabfile.py and local_settings.py files. The fabfile.py file sets up the server environment, including which machines host the Web app, the databases, and the maintenance tasks, which can be separate machines, but probably do not need to be for a personal site. This file also includes several hard-coded references to the newsblur.com site that you will need to modify to point to your own servers, and possibly tweak some file paths. The local_settings.py file contains database credentials, OAuth and S3 keys, and logging and administrative email setup.

After customizing the config files, you use Fabric scripts to bootstrap the Web app and task server, and you can use your own discretion as to how often to run the administrative scripts that update feed content, collect user ratings, and generate statistics. At that point, it is up to your users to subscribe to feeds and rate content in order to give you useful data to work with.

Ultimately, NewsBlur is probably overkill for a single-user setup; for that a smaller-scoped application like TinyTiny RSS is likely to remain the better choice. However, if you are interested in running a multi-user feed service, NewsBlur is a good place to start. The rating and statistics engines really do give it a level of artificial intelligence that other open source feed readers do not even explore. There are a lot of ways to share interesting content online, and the in-app page renderer is nice, but the ability to learn from people’s real-life reading habits is a unique edge.