CalyxOS

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.

TL;DR

App Name Current status Future status
F-Droid User app in CalyxOS since 4.12.2, targetSdk 28 No longer included in CalyxOS, updated to targetSdk 34
F-Droid Basic Available in F-Droid, targetSdk 33 Included by default in CalyxOS as a user app, targetSdk 34
F-Droid Privileged Extension Included Removed
Panic Work in progress Included by default
CalyxOS App Installer Included Further improvements
CalyxOS App Updater Work in progress Included by default

F-Droid maintenance

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..

F-Droid Basic

Announcing F-Droid Basic. Testing and feedback appreciated!

F-Droid Basic 1.17.0:

Background

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.

Why F-Droid

While deciding to go ahead with this, we also considered various other options, such as:

  1. Other alternative F-Droid clients, switching to one of those and improving that
  2. Other app stores, same.
  3. 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.

Panic

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.

Privileged Extension

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.