I prefer using open-source apps on my Android phone, both as a matter of principle, but also because they tend to be less bloated and more focused. The big problem is finding good apps. In the hope that this helps others, here’s my list of good open-source Android apps.

The two criteria for the apps are that:

  • I’ve used them almost daily for months or years, and

  • they are open-source.

F-Droid

The first app is F-Droid, the big open-source app store. We need it to install all the other apps, and it provides some core security features.

💭 Strictly speaking, we don’t need F-Droid because we can download the APKs, and install them manually, but it is nice to have since it notifies us of updates.

F-Droid main screen
F-Droid main screen

F-Droid builds the apps itself, and the builds are reproducible, so we know exactly what source code we installed. The big downside is that the F-Droid build server sometimes lags upstream releases by a couple of days, which can be annoying when NewPipe stops working because the YouTube website changed. But hey, it works most of the time, and a few delayed releases is a small price to pay for security.

F-Droid doesn’t collect usage statistics. This is great for privacy, but it means it’s impossible to judge whether an app is “good” by the number of installs. It also means there’s no “Top 10 apps” list to suggest what to get. There are some curated lists (hi!) which are ok, but they’re far from ideal since they grow stale quickly.

Pie Launcher

Pie Launcher is the fastest home screen I’ve ever used. It has no widgets or text, and in its idle state, it just displays the background.

Touching anywhere reveals the circular pie menu, and dragging selects an app. For me, muscle memory kicked in after a few days, and I could start apps without looking at the screen at all. The downside is that we can’t have more than eight apps or so in the menu, but that’s enough because…

Tapping anywhere brings up a grid of all the apps with the search bar already selected, and the keyboard already visible (see the GitHub page for screenshots). Tapping one letter usually filters the list so that the target app is visible on the first row.

So, we can start apps blindly with one tap, or with three taps and by looking at a small part of the screen.

FairEmail

FairEmail is the best email client I’ve ever used. It’s fast, does reasonable things by default, and is incredibly configurable. It’s written by Marcel Bokhorst, who also wrote NetGuard.

It’s a bit hard to explain why FairEmail is good because it’s an email client, so it’s not supposed to be exciting to use. It’s supposed to stay out of the way, and get the job done. FairEmail does this excellently:

  • It’s fast. It starts up instantly, and there’s no delay transitioning between screens. Search is also fast, and it usually finds what I’m looking for (which is more than I can say about every other offline email client I’ve used).

  • It does reasonable things by default. This is the first email client where I didn’t have to disable some obnoxious signature. It also tries hard to reformat emails to look good on a small screen, and if we don’t like the result, the button to change to a different formatting style is just above every email. In general, there are buttons everywhere that let us do whatever we want.

  • It is insanely configurable. It has ten settings screens, and every one of them is longer than all the settings available to other email clients I’ve tried. My setup is complicated because I have several email accounts, and some of them are catchall addresses with complicated sender rules, but I managed to configure this in FairEmail, which is a first.

💭 The best email-like software I’ve ever used was the BlackBerry 10 Hub. I say “email-like” because it did more than just email. It also captured SMS and Whatsapp messages, notifications, calendar events, and todos. It was everything in one place, and it was always just a finger swipe away. Unfortunately, BlackBerry OS for mobile phones is no more, and the Android app is pale shadow of the original.

Loop Habit Tracker

I find structure in my daily routine to be helpful, and there are some tasks I want to complete every day. For this, Loop Habit Tracker (aka Habits) has been indispensable.

Habits has a lot of features—just look at the screenshots on the Github page—but I only really use it for a todo list that refreshes daily. There’s something very satisfying about having a fully ticked column (whenever I actually manage it).

I’ve tried lots of todo list apps, and Habits has the nicest interface by far. It’s fast, so we don’t have to wait through a loading screen just to see the task list. Ticking a task is also just a button press, and there’s no extra screen to “rate your experience doing the task” or other such nonsense.

The main limitation of Habits is that its lowest resolution is one day. That is, we can have daily tasks, and tasks that have to be completed a number of times each week, but if we want to track a task that happens multiple times each day, then we’re fresh out of luck. If it had this, then it could also be used to track gym workouts, and it would be the best app in that class by a wide margin.

Tasks.org

Next up is a traditional todo list app, Tasks.org. It’s fast, the UI doesn’t get in the way, and it also has a ton of features that I don’t personally use, but which are nice to know exist.

My todo workflow is as follows:

  • I put any task I’m not definitely going to do today in one big list. Tasks.org has ways of prioritising, categorising, and tagging tasks, but I’ve not found that necessary.

  • All tasks have a deadline, although I use this as a target date instead of something hard. Some target dates are “real”; for instance, I entered “Book dentist appointment” in November when my dentist told me to come back in 6 months. And, some target dates are random; for instance, I added “Read Team of Teams” when somebody recommended it to me, and I wanted to let it simmer a bit before actually committing to reading it (and I’m probably just going to delete the task now). The Tasks.org UI is great because it makes it easy to quickly add a task with a deadline, mark a task as done, or postpone a task for a later date.

  • Some tasks are recurring, and get recreated on set dates or sometime after they were last completed. For instance, I have a task every 3 months to make a transaction in a bank account that would otherwise be closed for inactivity. I could do this sort of thing with a calendar, but sometimes I need to postpone a task, and it’s much quicker in Tasks.org than in calendar apps.

So, my workflow requires very few features in a todo app, but that’s still more than most of the apps on the market can do. Almost all of them fail on “fast”, and many of them try to impose some heavy handed workflow. I was previously using Remember The Milk, and that mostly worked, but it was closed-source, and I couldn’t justify the yearly subscription for the few features I needed.

💭 I got hooked on todo lists after reading “Getting Things Done” (GTD) by David Allen almost 15 years ago. Like most productivity books, GTD is mostly a scam to sell seminars and training, but it did have a few very good ideas. I think the most important one is that we get peace of mind by dumping all non-immediate tasks into a todo list. It then becomes the canonical source of truth for what needs to be done, so we can stop worrying about forgetting things.

Wireguard

A VPN is almost necessary on mobile devices these days, and Wireguard is my default choice. It’s small, fast, and we can setup our own server easily. If we’re also using Wireguard to form a mesh between our servers, the mobile app lets us connect our phone to that network, and access services without worrying about authentication.

Wireguard main screen—it's not much to look at, but why should it be more?
Wireguard main screen—it's not much to look at, but why should it be more?

The app also comes with a quick settings applet that we can add to the drop-down menu at the top of the screen. That’s very useful to quickly turn the VPN off and on again in the few cases where it’s necessary (e.g. when logging in to hotel WiFi).

Mullvad

The big downside to running our own Wireguard servers is that it’s a hassle to have lots of them. Mullvad is a paid service built on top of Wireguard that offers servers in many countries, and the mobile app has many more features.

If you’re like me, then you’ve seen lots of ads for VPN services. As far as I know, Mullvad is the only one with an actual open-source client that we can be sure isn’t doing something nefarious. It’s also cool that they blog about technical improvements to their VPN service. For instance, here they are talking about using diskless machines to make extra sure that they don’t accidentally store logs. This feels like a better use of subscription money than buying YouTube ads to sell more subscriptions. They’ve also recently announced accepting Monero payments. I hope I won’t have to use this, but the UK always feels like it’s one step away from banning VPNs.

NewPipe

NewPipe is a YouTube client. It’s not great, but it’s better than the official one since it does background playback, doesn’t show ads, doesn’t hide subscription updates, and doesn’t shove suggested videos in your face constantly.

NewPipe subscription updates screen
NewPipe subscription updates screen

There are many issues with the app. Some are missing features like lack of streaming support. Some are unavoidable like YouTube changing unexpectedly and breaking video playback. But most could be summarised as “UI clunkyness”—it frequently feels like it takes multiple clicks with slow screen transitions to do anything. Still, a bit of clunk is better than constantly fighting the app on what to watch.

Organic Maps

Organic Maps is the least-bad OpenStreetMap (OSM) client I’ve found. It’s fast and gets the job done… unless the job is search, because it does not do search well.

Organic Maps showing central London
Organic Maps showing central London

Organic Maps is actually an offline client to OSM. So, whenever we go to a new geographic area (think SE England), we get a prompt to download an 80 MB blob of data. After this initial download, the client works offline, and everything is displayed quickly. It definitely feels faster than an online client like Google Maps.

The quality of data in OSM has surprised me recently. Almost all restaurants and addresses in the cities I frequent are available, and even opening times are up to date. Funnily enough, because Organic Maps doesn’t try to “recommend” certain locations like Google Maps, it actually shows more places by default.

The big problem with Organic Maps is that search basically doesn’t work. I’ve had some success searching for street names, but searching for a restaurant or a postcode has always failed.

Syncthing

Syncthing is a peer-to-peer folder synchronisation app. Think Dropbox, but without the central server. It’s a convenient way of getting files from one device to another without emailing them. For instance, Syncthing is how I’ve been copying the screenshots for this post from my phone to my laptop.

I’ve also got a guide on how to setup Syncthing on a Kubernetes cluster with a webserver frontend. This is particularly useful in getting files from a Syncthing device like my phone to a foreign computer like a print shop’s.

Syncthing just works once we set it up. The trouble lies in setting it up. On each peer, we have to add the “device ID” of every other peer. These IDs are essentially the public keys of the peers. Once all the peers have been added, we have to add folders on each peer, and enable sharing to other peers. The problem is that the UI doesn’t make this workflow clear, and sometimes, but not always, making a change on one peer causes a prompt to appear on other peers for the equivalent change. Since the peers aren’t always connected to each other, this prompt can appear much later. The result is a mess of duplicate folders. That said, once the confusing setup is complete, folder synchronisation works well (although with some minutes of delay).

Wrapping up

And that’s a wrap: these are the open-source Android apps I use almost daily. It’s sad to say, but even the jankyest app on this list is still better than some of the proprietary apps which have no alternative.

💭 There are other great open-source apps for Android, but they’re either well known, or very domain specific, or I just haven’t tried them.

💭 I learned something about listicles while writing this post. My thinking going in was that, since I’ve seen some people post three of these a day, how hard can it be? It turns out, quite hard. The text was mechanical, and I can imagine writing something like this on a topic I have only tangential knowledge of, but it was not fun to write. It was boring and unexciting. It felt like coding up a form with 10 fields, each of which has similar complicated validation, but which is nonetheless sufficiently different to require separate implementations… in early 2000s Java.

I don’t plan on writing any more listicles.