orgweb/site/blog/98_perfect_rss_solution.org
Tom Willemsen a2f077cf13 Add some blog posts
Also an index page that automatically generates a list of all the
posts available.
2012-12-10 02:22:18 +01:00

4.6 KiB

The 98% perfect RSS solution

Test

I've been looking for the "perfect" RSS reading solution for a while and I just got this idea for a setup that has to be about 98% of all I'm looking for.

The things I'm looking for are:

  • Emacs interface. This isn't that big a problem since anything with an API can be made to have such an interface, and I feel comfortable enough with Emacs Lisp to write it myself if I have to, like I was doing with avandu, but then it does need a(n/ good) API.
  • Unbound to a single computer. It's a hassle to have to remember what you have and haven't read. If it was easy your RSS reader wouldn't care about (un)read items, everything would just be "items". So sharing that state between computers is pretty important.
  • A server. Something that keeps running 24/7. Or at least the closest possible approximation of that. It's no good to miss everything that happens between 11pm and 9am just because you don't have your feed reader running. Of course this is only a problem if you're following some high-traffic feeds, but they exist too.
  • Runs locally. The nice thing about having shell access to a server somewhere that someone else keeps online for you is the possibility to run something like newsbeuter and just (de/reat)tach from whichever computer you're working on. The downside is, though, that this breaks pretty much all integration with your desktop. Opening URLs becomes a reliance on your terminal emulator's ability to parse and open them. Viewing media such as images, or audio files from a podcast, turns into Save, Transfer, Open instead of just the Open.
  • Handles big feed lists. Even if you only read five feeds, the day may come you'll be reading fifty, or even much more. A piece of software that handles this well is a must. This is the problem I had with canto and Emacs' newsticker. canto looked awesome, the most interesting interface to RSS feeds I have come across so far, but back when I tried it trying to read my collection of feeds would lock-up my computer. newsticker would lock-up my emacs session for 10-20 minutes.

Now though I have found something that does it all. It is actually a twist on something I used some time ago.

Emacs + Gnus + Gwene + unison. Not the easiest thing to set-up perhaps, but once Emacs + Gnus is in place the rest is a piece of cake.

Gwene is an awesome service that turns RSS feeds into newsgroups. unison is an awesome piece of software for synchronising files between different computers. Gnus is a real newsreader. Emacs is what Gnus runs on.

So it's kind-of like cheating. Gnus is not unbound to a single computer and Gwene doesn't offer server-side state tracking either. But because Gnus uses a single file to store state about all of its subscribed groups, this makes it a good candidate for sharing that one file. This is not something unique to Gnus, at least slrn uses the same kind of file, the .newsrc file (or in Gnus' case .newsrc.eld).

So I register the feeds I want to follow with Gwene, if they aren't already registered. I subscribe to the resulting newsgroups on news.gwene.org with Gnus and when I switch over to another computer I use unison to synchronise the .newsrc.eld file.

An example configuration of Gnus could just be as simple as:

  (setq gnus-select-method '(nntp "news.gwene.org"))

unison just needs:

  root=/your/home/dir/
  root=/your/server/root/
  path=.newsrc.eld

And that's about it.

Now it's still not 100% perfect. I've seen that Gwene can't handle 100% of the feeds I throw at it, but these can be fixed either by contacting the people publishing them or by improving Gwene's parser. It also doesn't automatically check periodicaly, though I think Gnus can be set-up to do that, but since I also use it to read my mail (again) that's not really an issue. It also isn't accessible without Emacs, Gnus and Unison, but I hate web-interfaces anyway.

So that's it. My 98% perfect RSS reading solution.