Where we started
My first RSS feed reader was a custom built Perl / PHP monstrosity back
in the early 2000s. I later switched to Google Reader and then upon its
inevitable sunset to
Vienna. As I found myself reading feeds on
multiple devices more I found myself wanting a centralized system with a
single repository that I could connect clients to and have feed state
synchronized. The server application I settled on at the time was
Tiny Tiny RSS. I was able to get a plugin working
that provided a compatible API to Reeder, which I
used on my iPad and the web interface sufficed on my various desktop and
laptop machines.
These days I still use Tiny Tiny RSS and Reeder across several desktop and laptop machines, an iPhone, and an iPad to read all the RSS feeds I subscribe to. Including the bespoke feeds I create from various other data sources my subscription list has grown to about 90 feeds in total. I'm mostly happy with this arrangement, however it has been long enough I wanted to see if there were other options. Tiny Tiny RSS is a rather large PHP application with a huge pile of dependencies all managed by an overly complex dependency management tool called Composer. The API I use to connect it to Reeder is provided by a plugin that has not been updated in years. Currently the supported method to install TT-RSS is to pull a Docker container which I've never gotten to work in my environment. I use LDAP authentication provided by Apache and that, along with the API plugin do not appear to be supported by the Docker container. This means I'd have to build a version of the container myself which defeats the purpose, frankly. Since my setup is to remain fragile and unsupported I feel it timely to investigate alternatives.
Where we wanted to go
I still want a centralized architecture where one thing is in charge of
checking and storing all the feeds and then providing them to a set of
client applications. A web front end is acceptable but native applications
would be more desirable. The server needs to run on fairly common Linux
tools and the clients need to support macOS, iOS and iPadOS. I did a
quick grep(1) of the Apache access_log
for my blog and checked out
what User-Agents were being reporting fetching /blog/feed.xml
. The two
most common ones that aren't SaaS products appeared to
be Miniflux and FreshRSS.
For client applications NetNewsWire,
Reeder, and Vienna appear to be the most common on
macOS with NetNewsWire, and Reeder being the most common for the mobile OSes.
Servers
I went looking at servers first as to some extent the server application drives the requirement of the client applications. If the server has a terrible web UI then I'll necessarily need a good macOS client application whereas with a good web UI I may not. Similarly the API availability may limit the client applications I can use and limitations of the API may make certain features irrelevant (for example Fever API clients cannot trigger a feed refresh on the server).
Miniflux
Miniflux seemed easiest to try out, it being one of those silly compile everything into one giant static binary Go things. I plugged it in behind Apache and got it working well enough pretty quickly. Thankfully it supports letting Apache do the authentication for it so I was able to just login with my normal credentials and import an OPML from TT-RSS. While it was up and working basically right way I wasn't able to get it to talk to NetNewsWire in spite of it supporting a bunch of different API endpoints so I set it aside. It seems in general to be a decent choice if you are looking for a feed reader with a minimalist web UI, but frankly I dislike the way most Go applications are built and this is no exception. It may work for you, if you end up not caring as much about the client support as I do. The Web UI is manageable and it does support the Fever API so Reeder would work at least.
FreshRSS
FreshRSS is like TT-RSS in that it's a fairly large PHP application however it doesn't require a pile of dependencies and a complex manager application. It also seems to have a more modern UI implementation, though in a lot of ways that means more whitespace for no good reason. Installing it was easy and I was able to get external authentication working easily. The big draw for me is that it is supported by all the client applications that I want to try. Similar to Miniflux, I was able to import an OPML from TT-RSS and get it up and going. The update job runs from a systemd timer instead of as a daemon but that was easy enough to deal with.
macOS Clients
The web clients that come with the servers are all perfectly capable. I am most used to TT-RSS, and FreshRSS feels modern while Miniflux is refreshingly minimal. I'd be hard pressed to pick one over the other, honestly.



NetNewsWire
The macOS version of NetNewsWire reminds me of a landscape iPad app. It uses the three column layout that frankly I hate on desktop. I have wide screen monitors so I can have multiple applications open at once side by side not to have a wide format application try to co-opt all the real estate. I suppose it also being a mobile app makes this at least understandable if not completely forgivable. Its true sin though is hidden behind the innocuous little unread filter button. You can easily sort 'oldest first' globally but the unread only filter seems to be a per-feed toggle. I have been using the app for several weeks now and I still have not been able to click the stupid button on all of my feeds because it hides feeds with no unread articles (yay) but offers no way to toggle that off (boo). All in all a solid RSS reader that I've found myself using more than Vienna because the article display is a bit nicer. NetNewsWire is free and is available directly from their website. Not having to support the vile App Store is worth many points in my book.
Reeder
Much like NetNewsWire Reeder seems to be a port of the mobile application to desktop, it has the same layout as the iPad landscape view which opens it to the same criticisms I have of NetNewsWire. It does have the ability to set an unread filter globally so that is a relief. Taken on its own I'd edge it out over NetNewsWire a bit, but when paired with the mobile version of the app it's a no-brainer. At $9.99 it is well worth it, though it is only available in the App Store.
Vienna
I used Vienna as my primary RSS reader for many years and came to know and love it. It has not changed very much, though it really doesn't need to. The only real weaknesses are that they article display can sometimes be a little strange with how it renders HTML and that the tree view doesn't have an option to hide feeds / folders with no unread articles. Like NetNewsWire it is free and is available for download outside the App Store.
Mobile Clients






NetNewsWire
Unlike the macOS version of NNW I just can't get used to the navigation in the mobile version. The app itself is really well laid out and has the prettiest article rendering of the bunch but I just can't get past the navigation. You scroll down normally though an article and instead of scrolling to the next article you have to swipe laterally. Once done with a feed you then have to click back and select the next one. This leads to an extremely cumbersome feel and I just couldn't settle into it. It was just too jarring. Add in the same quirk with the unread filter as the desktop version and the unfortunate lack of image previews in the list view I can't recommend it, even though it is free.
Reeder
Reeder 4 has been the gold standard for mobile RSS reader since I settled into having RSS feeds on my mobile devices. It does a good job of rendering articles, has a natural feeling navigation style and quickly became the most common way I'd read feeds. You can basically click onto unread mode, sorted oldest first and doomscroll your way through literally hundreds of articles in mere minutes. I took this exercise as an excuse to update to Reeder 5 and I'm pleased to say it is essentially the same. That is to say if you have Reeder 4, don't bother buying 5 but if you are just getting into it 5 is the way to go. Pony up $4.99 for this guy to you won't be disappointed.
Final Architecture
Ultimately I'm still deciding on desktop applications but Reeder and FreshRSS have won out as server and mobile components. An unexpected side-effect is being able to get rid of a Postgres instance. Not that there is anything wrong with Postgres, but the only thing that used it was TT-RSS and with that gone I can have one less thing running, which is always a win.
Closing Thoughts
Syndication technology like RSS and Atom was a huge part of early Web 2.0 technology development. The idea of publishing information so others could subscribe to it was a foundational piece of encouraging participation and discourse. One can think of it as a much less walled-garden approach of the modern social media powered follow mechanic. Since the commodification and centralization of web content into oligarchic, closed platforms marched on the big providers killed their RSS feeds and made it much harder to get 'content' out of their platforms so use has waned but like so much other Internet technology (USENET for example) it still lives on and if used right can be a much more pleasant and effective way of participating in the web. As an author it is a way to free your work from platforms that seek to monetize and data mine your audience and as a consumer it frees your ability to discover and enjoy others works without an opaque and often adversarial algorithm making decisions for you. If you are thinking about trying out a feed reader, all of the client applications I've mentioned above can run standalone and fetch feeds for you without needing a server side piece. They all come with a set of feeds available for you to check out right out of the box as well.