Journalist: An RSS Aggregator

Journalist is an RSS aggregator that supports the Fever API and can be used with popular RSS clients. It is available on macOS, Linux, FreeBSD, NetBSD, OpenBSD & Plan9.

Journalist: An RSS Aggregator

Background

“Is RSS dead?” is a question that seems to have been around nearly as long as RSS itself. While the answers to that are very diverse, the bottom line is that many people are still using RSS these days – either knowingly by directly subscribing to feeds or unknowingly by using services like Feedly or Flipboard (which for large parts also use plain ol' RSS in the background).

I’ve been using both of these services for a long time and while I stopped using Flipboard after they were hacked in March of 2019 I’m still using Feedly for all my syndication needs up until this day. The main reason for that is integration: Back at the time I started using Feedly it was one of the very few services that was nicely integrated into the iOS and macOS app ecosystem. Feedly has its own mobile and desktop apps and there are great third-party apps for it, like Reeder.

However, with a growing concern about privacy, I slowly began checking for alternatives to Feedly that would allow me to subscribe to all the cool people’s blogs that I’m following while still let me use Reeder to read my subscriptions on my MacBook as well as on my iPhone. Besides, if I switched, I wanted the platform to provide an open API so that I could continue using it when I switched to Linux on the desktop eventually.

While there are a couple of projects, like FreshRSS, that would check these boxes for me, I really didn’t like the overall package and tech-stack that I’d need to set spin up in order to use them. I was looking for something more minimalistic and focused on the features that I cared about.

So I decided to build something on my own.

Meet journalist

journalist is a lightweight daemon and CLI written in Go, focused on simplicity and integrability. As usually, I chose go because it’s simply the quickest way to put things like these together and it gives a statically-linked, single a.out in the end.

journalist initially used BuntDB as a storage engine, just like zeit does, but I ended up replacing it with PostgresSQL. I intended to be able to run journalist as an ephemeral service, hence an embedded database isn’t a very good choice. Also, it made sense to use a relational database considering the way the Fever API is structured.

Currently journalist implements the very basics that allows connecting a Fever API client (like Reeder) to access subscriptions and read articled. There is no way to actually manage subscriptions over the API (yet), but it’s possible to use the subscribe command on the CLI to subscribe to new feeds.

As soon as I have all these basic features in place, I’ll be looking into teaching journalist a few nifty tricks like crawling article’s web content in order to display not only summaries but full stories for sites that usually only show an excerpt of their content through RSS. I’ll also experiment with injecting additional information, like links to relevant content from different sources.

journalist will be available as pre-built binaries for macOS, Linux, FreeBSD, NetBSD, OpenBSD and Plan9 and the latest builds will be available for download here.

journalist on GitHub
categories [projects] · published [2021-01-10] · updated [2021-07-10]