Skip to main content

NLnet is funding FMD

· 4 min read

We are happy to announce that we received a grant from NLnet to support our continued work on FMD. This is part of the NGI Mobifree fund.

We will add more details on what we are planning to work on once the project plan has been finalised!

Update (2025-06-05): All the paper work is done and we have agreed with NLnet on a project plan. This plan outlines the items we plan to work on that will be funded by NLnet. Here is the plan:

Project plan

1. Publish dev-signed APKs

Currently, FMD Android is published only on F-Droid and is signed by F-Droid. Users have asked us to provide releases outside of F-Droid. Thus we need to sign and publish APKs ourselves.

Most importantly, we need to organise key management and key backup among the FMD maintainers. As an output of this, we want to write documentation on our processes for other FOSS maintainers to reuse.

Issue: https://gitlab.com/fmd-foss/fmd-android/-/issues/228

2. Set up a custom F-Droid repo

Currently, FMD Android is published only on F-Droid's main repo. Due to F-Droid's long update cycle (2-5 days), releases are slow. We want to host our own repo that users can add to their F-Droid client. This will allow users to get faster updates.

Signing our own APK releases is a prerequisite for this.

3. Package FMD Server for more platforms

Currently, FMD Server is officially available as a Docker image. There is community AUR package. We would like to also package FMD Server for multiple other platforms to make it more accessible and easier to self-host. This includes Debian (.deb), Snap, and Flatpak.

This also needs key management between maintainers, which we can re-use from Task 1 (signing APKs).

4. Redesign FMD Server's REST API

The current API has grown over time, with many patches added to it, and no documentation. It can hardly be called "REST" anymore. For example, uploading a location is done by POST /api/v1/location and getting a location is done via PUT /api/v1/location. As part of the redesign, we will create a proper specification using OpenAPI.

Issue: https://gitlab.com/fmd-foss/fmd-server/-/issues/40

5. Manually delete individual pictures/locations

Currently, there is no way to delete individual data from FMD Server. You can only delete your entire account. Even though this data is stored encrypted, we still want to add the ability to delete individual data points from the server.

Issue: https://gitlab.com/fmd-foss/fmd-android/-/issues/250

6. Make background execution on Android more reliable

Currently, when FMD Android receives a command, it uses the JobScheduler API to execute the work in the background. This currently works for vanilla AOSP. Unfortunately, on non-vanilla AOSP jobs don't execute completely or not at all. Even Vanilla AOSP is becoming more restrictive about background location access by rate-limiting them.

Therefore, we plan to rewrite the command execution job to a foreground service to make it more reliable.

7. Fine-grained permission control

When you add a phone number/PIN/server account in the Android app, this grants it access to all commands that FMD offers. This is too powerful. We want to implement permissions. These will allow users to grant phone numbers/PINs permissions to execute only certain commands. For example, to only run "locate" and "ring", but not "wipe".

Issue: https://gitlab.com/fmd-foss/fmd-android/-/issues/277

Next steps

The items in this plan are in no particular order, and there is no strict timeline either. We are going to continue to work on FMD as a side project, at our own pace, working on the things that we think make the most sense. We will likely work on the project plan out-of-order. Importantly, we will continue to work on non-funded items, as new bugs and feature requests come in.

NLnet promising funding (in legal terms, as donations) for the work items above is a great motivation, and we are happy and honored by the trust they are placing in us.

Nulide and Thore, the FMD mainainers.