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.
UPDATE: Journalist v1.0.0 is out! Please refer to the updated information here.
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 phone. 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.
Enjoyed this? Support me via Monero, Bitcoin, Lightning, or Ethereum! More info.