Introducing River5
Tuesday, February 9, 2016 by Dave Winer

Good morning!

Today's a good day to ship something new!

As you may know, I've been involved in RSS as a standard way to distribute news since the beginning. I wrote the RSS 0.91 and RSS 2.0 specs, and shipped the first software that was compatible with both formats. My early products, My.UserLand and Radio UserLand got the market started, along with a deal we did with the NY Times in 2002 to get their news flowing on the RSS net.

The RSS market is slowly rebuilding after the dominance of Google Reader was followed by its closing a couple of years ago. It shows how resilient open formats and protocols are. If Google Reader had been built on proprietary formats, that would have been the end. But RSS isn't something anyone can own, an idea that confuses many big companies. 

RSS is alive and kicking and ready to act as the open distribution format for news for many years to come.

RSS and JavaScript

I switched over to development in JavaScript a few years ago, and one of the first things I did when I got to Node.js was build an RSS aggregator, River4. I built it to run on Heroku, which I thought was a revolutionary platform, because of its pricing and architecture. It was designed for lots of little apps that are easily deployed. I love that idea, it's one of the foundations that my own environment, Frontier, was based on. River4 was a good fit for Heroku, but that made it awkward to deploy elsewhere. Over time we took care of that, but that made it more complicated to configure. And Heroku changed their economics, and that made it less attractive. I started running my rivers on straight Linux.

I also learned about various ways to configure Node apps as I understood more about Node, and that is also reflected in the design of River4, not in a good way. There are some things that can only be configured in environment variables, and others that can only be configured through a config.json file. It became a bit of a hairball.

A new foundation

So I decided it was time to do a restart of my JavaScript RSS aggregator, and it's now ready for Node users -- it's called River5

This ia a foundation for developers to build on, but it's also possible for an adventurous user to set up their own rivers. Ken Smith, an English professor, is running River5 on his personal computer. It works. I wrote a Poets Guide for people who are new to Node.

What's new?

So what's new in this river?

  • It's faster since it builds the rivers incrementally as it scans the feeds. There's no intermediate database. 
  • Configuration is simple, consistent and documented. You just edit a config.json file in the same folder as the application.
  • In addition to the standard list format, I've also defined a JSON format for lists and a plain text format, to make it easier for people to get going. 
  • Most important to me, it's easier for me to work on, so there's a better chance of new features in the future. 

I love RSS and the developers who support it. I also love JavaScript and Node, and think the two were made for each other. 

Let a thousand rivers bloom! ;-)