Speeding Up F-Droid
October 27, 2021  |  

I spent a good number of years working on Android apps, mostly because I believe that mobile platforms should be open, and Android has long been the only viable option. Android is the only thing that keeps the market from getting back to the dark ages of closed platforms. That said, some parts of Android ecosystem are horrible. For instance, it’s really hard to distribute your apps via Google Play, and things are only getting worse. With a closed platform, developers and users alike have no choice but to accept the rules set by a vendor, and that’s exactly where the open source nature of Android gives us much needed leverage which allows us to fix the things we don’t like.

Google Play is a sad place which regularly bans good apps for bullshit reasons while having no problem with apps filled with trackers and all kinds of dark patterns. Fortunately, we don’t really need Google Play in order to use Android. Some people think that Google Play is the only way to install apps, but it’s mostly a result of (probably criminal) conspiracy by Google and friends to fend off their competitors. Every Android user can use an alternative store and one of those alternatives is F-Droid.

I like to think of F-Droid as of Android’s package manager such as pacman or apt. It’s basically a collection of open source software built and maintained by a group of volunteers. I have an app there, and my experience with this repository has been great so far. As a developer, I love it. The problems start when I try to recommend it to more users. The most important thing an app store can do is to allow users to quickly discover and install apps. Unfortunately, F-Droid is extremely bandwidth-constrained, and it’s practically impossible to download apps, unless you’re living in Europe in proximity to their servers.

Why is F-Droid so slow and unreliable? It turns out, it doesn’t use a CDN for its static assets. It’s a very easy problem to solve, and it can have a huge impact on F-Droid adoption rate. It looks like the maintainers realize the severity of this problem, and they have a solution in the works:

https://gitlab.com/fdroid/admin/-/issues/229

I tried a CDN-backed repo, and it was blazing fast. Hopefully, CDN will soon become a default option for F-Droid.