CalyxOS & F-Droid
CalyxOS has always shipped with 2 app stores - F-Droid, and Aurora Store.
We include F-Droid by default because we want to promote free and open source software, but at the same time we would also like to give users an option to use other applications, which is why we include the Aurora Store which lets you download apps from the Google Play Store.
At The Calyx Institute we’ve always wanted to help the open source software community, and as such we try to contribute our code changes to all of the software we use and rely on, which includes both F-Droid and Aurora Store.
This post is about F-Droid, we’ll have a separate post for Aurora Store later.
- Calyx is now sponsoring a maintainer position for the official F-Droid Android app, for the benefit of both CalyxOS users and all other F-Droid users.
- We’re also making many improvements to our entire app install / update setup.
|User app in CalyxOS since 4.12.2,
|No longer included in CalyxOS, updated to
|Available in F-Droid,
|Included by default in CalyxOS as a user app,
|F-Droid Privileged Extension
|Work in progress
|Included by default
|CalyxOS App Installer
|CalyxOS App Updater
|Work in progress
|Included by default
We’ve contributed quite a bit to F-Droid over the years.
In May 2023, we proposed to officially sponsor a maintainer position for the F-Droid Android app and after discussing it with the F-Droid community and the existing maintainer(s), this was approved..
Announcing F-Droid Basic. Testing and feedback appreciated!
F-Droid Basic 1.17.0:
targetSdkset to 33 (Android 13), and a bump to 34 (Android 14) planned soon.
- Need to confirm updates only once per app, after that they’ll install automatically in the background.
- No extra privileges required!
One of the first things we wanted to do was increase the
targetSdk of the F-Droid app to the latest, and the quickest way we found of doing that was through this “basic” variant the F-Droid codebase already had, but was never released.
It’s the same as “full” F-Droid with 2 major omissions - Nearby / Swap feature, which lets you share apps to other devices, and the Panic trigger functionality. This was an advantage for the
targetSdk work though because some of that code was (and still is) taking time to port.
All this work on bumping “Basic” to
targetSdk33 has also already allowed a bump to
targetSdk 28 for “full” F-Droid, version 1.17.
That meant we were able to work on parts such as support for automatically installing updates without user confirmation, and the many other under the hood changes needed to support that on modern Android versions.
This app works on CalyxOS and also any other Android you want to use it on - Calyx has always wanted to do things in a way that benefits the greater community.
We’ll continue working on the F-Droid app and try and keep doing bugfixes and feature improvements all around.
While deciding to go ahead with this, we also considered various other options, such as:
- Other alternative F-Droid clients, switching to one of those and improving that
- Other app stores, same.
- Writing our own to do what we need
However, in the end we decided to stick with improving the official F-Droid client, because that way our work not only benefits CalyxOS users, but also all F-Droid users.
F-Droid status for existing CalyxOS users
CalyxOS currently ships with the “full” version of the F-Droid app. That is also being updated gradually, with our aim being to test out the new code via “Basic” first before it all ends being deployed in “full” to a much wider userbase.
The F-Droid app was previously a system app in CalyxOS (although it does not specifically directly have any extra privileges), and has become a user app since CalyxOS 4.12.2 (meaning it’d be just like any other app)
F-Droid will just keep working the same for you as it goes through this transition.
CalyxOS will eventually switch to “F-Droid Basic”, meaning the panic functionality found in the “full” F-Droid won’t be available. However, we now have a replacement “Panic” app built into the OS, since CalyxOS 4.12.2. It is able to work with any apps, not just apps installed from F-Droid, leading to a better experience.
CalyxOS currently includes the F-Droid Privileged Extension. Once all of the above is done, it’ll no longer be needed given that updates can be automatically installed in the background without any additional user confirmation (after the first time). As such, we will be removing it in the future.
CalyxOS App Installer
CalyxOS offers a list of apps to optionally install during first setup. This list is actually a local, on device F-Droid repo. Previously it used some custom code to keep things simpler, but we’re happy to say that it’s now using the F-Droid libraries.
The libraries make it much easier to use F-Droid’s code and functionality.
It is already shipping since CalyxOS 4.6.0 (February 2023)
The app is called Lupin, and it’s built using Jetpack Compose!
CalyxOS App Updater
Work in progress.
As a part of all of these changes, the CalyxOS team has also been working on a new simple app updater. It also uses the F-Droid libraries, which means that it’s a relatively simple application.
It’s also going to be a non-privileged system app, meaning it’ll be able to update apps in the background without any extra system permissions needed.
It’s not currently shipping yet but will be available in a future CalyxOS release.