F-Droid, Keyboard Libraries, and Choosing a Browser
Tags: opensource, learning, android
Published: 2024-01-27 14:50:24

This is Part 2 of an ongoing series detailing my experience dumbing down my phone, taking ownership of my data, and learning a lot about FOSS along the way. NOTE: These are living documents that will surely change with time!

Previously I explained the _why_ of the whole project plus my experience with GrapheneOS and why I chose it as my new Android OS. Now we'll get into the other tools and apps. First things first, where am I getting the apps? 

## The App Store
![F-Droid Logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/py26ktbj4f6ucabkpt5c.jpg)<figcaption>F-Droid Logo</figcaption>
I don't really _need_ an app store, especially since I'm trying to cut back heavily on my smartphone reliance, but at this stage in my journey where I'm installing and sampling all kinds of things, I've installed the [F-Droid](https://f-droid.org/en/) "shop." It's very no-frills and I wish there was a way to sort search results, like by installs, but I really appreciate how proactive it is about letting you know when apps have what it calls "anti-features" (like relying on an upstream non-free/proprietary service).

While F-Droid will manage updates to anything installed through it's shop, you aren't stuck manually checking and updating things if you go decide to download APK releases directly. [Obtanium](https://github.com/ImranR98/Obtainium) is essentially a tracker/updater for managing your APKs from a broad range of sources. At the moment I'm only using it for the QUIK messaging app and a Bluesky client I grabbed off GitHub but I can see replacing the F-Droid shop with it once I've really settled on my app choices. Something on the list to investigate later.

## The Keyboard

Something I hadn't really considered before jumping ship on the stock Pixel OS was that the keyboard I've been using for years is obviously a Google product! I _very_ quickly realized this when presented with the standard Graphene keyboard for the first time.

I use what Google apparently calls "Glide Typing" which is kind of like a slippery touchscreen version of T9 (if you're old enough to remember that). Having to accurately hit each individual letter one-by-one to type something out on my phone feels slow and downright bad to me but finding a keyboard that supports glide typing wasn't as straightforward as I had hoped.

I didn't last long with the stock keyboard before installing [AnySoftKeyboard](https://anysoftkeyboard.github.io/) which is one of the few FOSS alternative with support for swipe typing. The experience was... OK. It felt slow and it's accuracy left a lot to be desired. I still had to be slow and pretty accurate, so it didn't really feel like much of a change from the stock experience. [FlorisBoard](https://github.com/florisboard/florisboard) have also introduced their own implementation but the feedback I read suggested it would be much the same as my experience with AnySoftKeyboard's gesture typing.

I considered what many others have done: installing Gboard and using Graphene's settings to deny it network access, potentially even going the extra step of using a root firewall like [AFWall](https://github.com/ukanth/afwall) (something I plan on looking into later regardless) but I was curious to see if I could do without.

After reading a [lengthy GitHub discussion](https://github.com/openboard-team/openboard/issues/3) at the [Openboard](https://github.com/openboard-team/openboard) repo that went into the logistical options and challenges I decided to go with the less-than-ideal option of using [Helium314's Openboard fork](https://github.com/Helium314/openboard) with the proprietary Google swipe library ([libjni_latinimegoogle.so](https://github.com/erkserkserks/openboard/tree/master/app/src/main/jniLibs)) imported. I've been using it for a few weeks now and though it feels slightly different than the Gboard I'm used to, the difference has been negligible and I'll be sticking with this setup for the foreseeable future.

## The Browser
![Icons for Vanadium, Mull, and Fennec](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnhegh6v6rr6whfe0on8.jpeg)<figcaption>Vanadium, Mull, and Fennec</figcaption>
While Graphene comes with [Vanadium](https://github.com/GrapheneOS/Vanadium), their own Chromium-based browser, pre-installed I chose to go with [Mull](https://github.com/divested-mobile/mull-fenix) as my default browser. There wasn't anything wrong with Vanadium, it's just that I've been using Firefox (and the wonderful [uBlock Origin](https://ublockorigin.com/) plugin) on my Linux machine for a little while now and have really grown to prefer it to Chromium-based browsers. In my research I had seen a lot of mentions of Mull and Fennec (the F-Droid version), both based on Firefox but with further hardening and privacy modifications. This detailed browser [comparison chart](https://divestos.org/pages/browsers#fenix-based) (produced by the developer of Mull) is what ultimately led to me choosing Mull. It's definitely worth a look at the chart even if you aren't in the market for a new browser!

This also prompted a change beyond my phone: I've left behind Chrome _and_ Firefox on my Windows and Linux machines in favor of [Librewolf](https://librewolf.net/), a privacy and security-focused Firefox fork for desktops. The experience has been painless and I wish I had just made the switch earlier. I did activate Firefox sync (which is by default disabled in Mull and Librewolf) and have had a smooth experience across my devices. So far so good!

(to be continued...)