Anbindung für Pakete: Dependency-Management in Android und Push Requests in F-Droid

Eine Sache, die GNU/Linux-Distributionen so beliebt machte, ist, dass die Verwaltung von Abhängigkeiten im Betriebssystem eingebaut wurde. In Debian ist sämtliche installierte Software in eine .deb gepackt und sie wird komplett aus Debian-Repositorys installiert. Android fehlte diese Art des Dependency-Managements immer und viele von uns vermissen es schmerzlich. Das Modell von Android geht davon aus, dass alle Abhängigkeiten in der APK-Datei der App enthalten sein sollten, während das Betriebssystem nur die grundlegendsten APIs bereitstellt. Viele Apps hängen von der Installation weiterer Apps ab. Weder Android noch Google Play bieten einen Weg, das darzustellen.

Über die Jahre gab es verschiedene Versuche dazu, wie ein gutes Dependency-Management in Android zu implementieren sei. Das letzte Dependency-Management-Experiment in F-Droid war “Push Requests”. Die Grundidee war, eine Liste für Abhängigkeiten pro Repo zu haben. Zum Beispiel, da alle Apps des Guardian Project Tor unterstützen, könnte es sinnvoll sein, dass bei Verwendung des Repos von Guardian Project, Tor automatisch mitinstalliert wird. Auf der Grundlage der Erfahrungen aus den letzten Jahren ist klar geworden, dass so etwas besser auf andere Weise geregelt wird. Apps können prüfen, ob andere benötigte Apps installiert sind. Die App sollte Nutzer fragen, ob sie Tor möchten und sie dann durch den Installationsvorgang führen. Als Push Requests eingeführt wurden, gab es keine ROM-Projekte, die F-Droid beinhalteten. Mittlerweile ist es eindeutig besser, Tor als Teil des ROM einzuschließen als über Push Requests. Der Einrichtungsassistent von CalyxOS liefert ein großartiges, Android-spezifisches Benutzererlebnis zur Einrichtung der Kernabhängigkeiten.

Wir führen nun die Entfernung der Unterstützung von Push Requests aus dem offiziellen F-Droid-Client durch. Es ist klar, dass andere Vorgehensweisen besser zu Android passen, somit ist es besser, die kleinen aber vorhandenen Sicherheitsrisiken, die mit dieser Funktion verbunden sind, zu entfernen. Das “Rüstzeug” für Push Requests wird in den Grundlagen des Codes erhalten bleiben, sodass sogenannte whitelabeled Forks sie immer noch verwenden können. Sie sind immer noch praktisch bei Dingen wie voll automatisierte, führerlose App Stores oder automatische Installationen als Teil einer Standardkonfiguration.