Neues aus der ersten Jahreshälfte 2025: RB, Download Statistiken, und mehr

© IzzyOnDroid (CC-BY)
Ein halbes Jahr ist seit unserem letzten Blog-Post vergangen – Zeit für ein Update! Unser Team ist noch immer recht klein, aber das was wir erreicht haben, kann sich dafür um so mehr sehen lassen! Beginnen wir mit einem kurzen Überblick und gehen dann zu den Details über:
- Wir haben einen Grant von NLnet/NGI Mobifree erhalten, der es uns erlaubt, mehr Zeit in wichtige Aufgaben zu stecken
- In unsere Reproducible Builds ist viel Arbeit gesteckt worden
- Wir haben jetzt nicht nur Download Statistiken – sondern auch eine anschauliche Visualisierung dafür!
- Viele Stunden sind ins Repository Overhaul gesteckt worden – auch wenn die Arbeiten hier noch weit davon entfernt sind, abgeschlossen zu sein
- Eine Menge Maintenance Work muss täglich absolviert werden, hier fließt sehr viel Zeit hinein. Das ist etwas, wofür wir noch Untertützung brauchen…
- manche Dinge mögen unbedeutend erscheinen, haben aber dennoch ihre Auswirkungen
NLnet/NGI Mobifree Grant
Im ersten Quartal 2025 wurde uns ein Grant von NGI Mobifree via NLnet zugesprochen. Dies erlaubt Izzy, pro Woche einen vollen Tag von seinem $dayjob abzuzweigen, und in Verbesserungen unserer Frameworks und Tools zu stecken – und weiterhin unseren anderen Kontributoren, an verschiedenen Dingen zu arbeiten und für diese Arbeit auch mit mehr als nur Worten belohnt zu werden. Erste Meilensteine stehen kurz vor ihrer Vollendung, etwa die Arbeit an unserem Reproducible Builds Framework, sowie unsere Download Statistiken einschließlich ihrer Visualisierung. Andere befinden sich noch in der Anfangsphase; da wir in der Regel nur ankündigen, was wir auch zur Lieferung bereit haben, werden diese später erwähnt.
Reproducible Builds
Diese hatten ihren öffentlichen Live-Gang am 1. August 2024. Fast genau ein Jahr später, erreichte die Abdeckung am 16. Juli 2025 50% – was bedeutet, dass mittlerweile mehr als jede zweite App in unserem Repository als reproduzierbarer Build bestätigt ist!
Davon abgesehen, und Dank des NGI Mobifree Grants, konnten wir unser RB Framework deutlich verbessern und ausbauen. Und da wir hier über FOSS sprechen, sind diese Verbesserungen natürlich für alle verfügbar, die sie verwenden wollen – etwa um ihre eigenen Verification Builder zu betreiben und sich als „Unabhängige Builder“ mit einzubringen – oder einfach nur, um ihre eigene(n) App(s) damit zu erstellen und es somit einfacher zu machen, selbige als „reproduzierbar“ bestätigt zu bekommen. Zu diesem Zweck haben wir
- das (mittwerweile archivierte) originale RBTLOG „geforkt“, ein wenig erweitert (zum Beispiel um Unterstützung für selbst gehostete Forgejo/Gitea/GitLab Instanzen), pflegen es weiter, und stellen es euch hier zur Verfügung
- gleiches für gradlew.py und gradle-wrapper-verify getan, die beide für
rbtlogbenötigt werden - rbhelper erstellt, um das Betreiben eines Builders sowie das „Debuggen“ fehlgeschlagener RBs zu vereinfachen
- rbuilder_setup gebaut, um das Setup eines eigenen Builders zum „Kinderspiel“ zu machen (es braucht damit weniger als 5 Minuten, einschließlich der Festlegung in der Konfiguration, welche Teile gewünscht sind – und unterstützt Debian, RPM, und Arch, wie auch deren Derivate)
- mehrere Wiki-Seiten zu Reproducible Builds geschrieben – um Entwicklern dabei zu helfen, die richtigen Maßnahmen zu ergreifen, dass ihre Apps erfolgreich reproduziert werden können – und um Informationen darüber zu geben, wie man fehlgeschlagene RBs debuggt. Und mehr…
Visualisierung dafür, im verschiedener Form, wurde von außerhalb unseres Teams verfügbar gemacht: Ben hat eine Website aufgesetzt, die Entwicklern „Shields“ bereit stellt, um den RB-Status ihrer Apps z. B. in den Readmes ihrer Codeberg/GitLab/Github oder auch selbst gehosteten Forges anzuzeigen. Diese können dann auf die entsprechende Detail-Seite dort verlinkt werden; hier sind weitere Entwicklungen geplant.
Auf unserem Weg dorthin wurden wir in fast jedem der monatlichen Berichte auf reproducible-builds.org erwähnt, während wir Schritt für Schritt unsere RB-Tasks abgearbeitet haben. Dieser Meilenstein ist nun fast erreicht, der letzte Task wird derzeit gerade bearbeitet: Ihr könnt recht bald Unterstützung dafür in unseren Clients, Droidify and Neo Store, erwarten – sodass der jeweilige RB Status einer App dirrekt dort ersichtlich ist. Dies ist bereits implementiert, und wartet nur noch auf das nächste Release!
Das war eine ganze Menge Arbeit. Ihr denkt dabei jetzt wahrscheinlich an enorme Summen an Fördergeldern. Um transparent zu sein: 5.000 Euro wurden für alle oben genannten Punkte bereitgestellt und unter den Mitwirkenden aufgeteilt, so wie wir auch unsere Arbeitsbelastung aufgeteilt haben. Fünf Tasks waren es in diesem Meilenstein; für zwei davon haben wir deutlich mehr Zeit investieren müssen, als gedacht (sie umfassten also große Teile „unbezahlter Arbeit“), einer lag leicht über dem Limit, einer war eine Punktlandung – und der letzte ist noch nicht vollständig abgeschlossen. Außerdem haben wir wahrscheinlich vergessen, etliches von der Zeit zu erfassen, die wir für Forschung, Dokumentation, Tests usw. aufgewendet haben … Offiziell aufgewendete Zeit: 100 Stunden. De facto aufgewendete Zeit: wahrscheinlich doppelt so viel. Die tägliche Arbeit zur Überprüfung und Korrektur von RBs mit einzubeziehen, würde wahrscheinlich eine Potenzierung erforderlich machen (der Aufwand hier würde sich allerdings halbieren, würden alle Entwickler zumindest das beherzigen, was wir als „the first basic rule“ bezeichnen: „Baue Deine APKs immer aus einem sauberen Verzeichnis an dem Commit, auf den Dein Tag zeigt“ (aka „clean build“), wie in unseren hints on reproducible builds for app developers ausgeführt) ![]()
Danke an alle Mitwirkenden an dieser Stelle! In alphabetischer Reihenfolge, speziell:
- Ben: Shields und noch-in-Arbeit-befindliches „RB Dashboard“ (unabhängiger Beitrag, der nicht Teil der Arbeit des Grants ist)
- Izzy: forking/updating/maintaining der oben genannten Git Repositories, Erstellung der Setup Skripte, Dokumentation, Wiki-Seiten, Helper Packages, tägliche Maintenance der laufenden RBs
- LooKeR: Arch-Support für
rbuilder_setup, und natürlich seine Arbeit an Droidify - machiav3lli: unterstützende Arbeiten an Neo Store & Droidify
- Sylvia: Einrichtung von Woodpecker für unsere Codeberg Repos, um Tasks wie „Dependency Updates“ zu automatisieren; Erweiterungen für
rbtlog(Support für selbstgehostete Forges), und jede Menge „background SysOp work“
Download Statistiken

Dies ist wahrscheinlich der sichtbarste Teil unserer Arbeit im ersten Halbjahr. Ebenfalls vom Mobifree Grant gedeckt, hat dies nahezu unser ganzes Team beschäftigt, und sogar darüber hinaus! Fangen wir also mit der „Credit Roll“ an, diesmal in umgekehrter alphabetischer Reihenfolge:
- Sylvia hat viel Arbeit und Energie in die Einrichtung des Deployments gesteckt – unter Verwendung von Docker, Ansible, Woodpecker und verschiedener anderer Tools. Sie hat auch die Python Skripte zum Parsen der Download Statistik Daten unserer Webserver Logs geschrieben, siehe iodstats; um denjenigen, die ihre eigene Website betreiben wollen, ähnliche Funktionen zu bieten, siehe iod-stats-builder; iod-stats-collector um Statistiken von mehreren Servern zu kombinieren (ja, wir haben Mirrors, die hier in Zukunft mit erfasst werden sollen!)
- machiav3lli hat an dem „Frontend“ gearbeitet, dass Ihr beim Betrachten unserer Download Statistiken seht. Der Code dafür findet sich unter iod-stats-viz – und das ist „viz“ für „VIsualiZer“, nicht „wiz“ for „wizzard“ – und definitiv kein „Witz“!). Ben hat sich hier ebenfalls beteiligt – während der Rest von uns geschaut hat, was es zu
meckernverbessern gäbe. - Izzy arbeitete mit am iodstats Parser, für den er ein Wrapper-Skript erstellte, dass die Verarbeitung um Faktor 20 beschleunigte (der Faktor klingt beeindruckend, aber meine Arbeit daran war eher gering: ich habe hauptsächlich
grepgenutzt, um die relevanten Einträge aus den Logs zu filtern, anstatt das gesamte Log an den Parser zu verfüttern). Izzy’s Arbeit umfasste auch das „Drumherum“: dafür zu sorgen, dass die Ergebnisse korrekt über das Git Repo bereitgestellt werden – und somit für den Collector zur Verfügung stehen. - Bene begann ursprünglich, an dieser Stelle zu arbeiten; sein paralleles Projekt wurde jedoch auf seinen eigenen Vorschlag hin zu Gunsten von machiav3lli’s in einen anderen Meilenstein verschoben. Es richtet sich in erster Linie an Entwickler, die auf ihrer Website/in ihren Readmes gern ein paar Statistiken für ihre Apps zeigen möchten. Wer sich hiermit angesprochen fühlt, schaut sich iod-stats-python einmal an!
Das hat nun unsere software-seitige Arbeit aufgelistet. Was geschah sonst noch, hinter den Kulissen? Zunächst haben wir die Domain IzzyOnDroid.Org registriert. Dort wird sich irgendwann all unsere Arbeit wiederfinden – die Download Statistiken machen jetzt lediglich den Anfang. In unserem neuen Download Statistics Dashboard könnt ihr nun sehen:
- welche die am häufigsten genutzten Clients sind, um Apps aus dem IzzyOnDroid Repo zu installieren
- welche Apps am häufigsten heruntergeladen werden – nach Gesamtzahl der Downloads oder sogar nach Client; reine Zahlen, oder auch prozentualer Anteil
- was die Trends bei Euren Lieblings-Apps sind; allgemein und wiederum auch nach Client
- was die generellen Trends für die einzelnen Clients – oder auch das IzzyOnDroid Repo allgemein sind
Jeder Abschnitt ist mit klaren Zahlen versehen, und ihr könnt den Zeitraum, der euch interessiert, eingrenzen/erweitern. Die realen Zahlen sind noch höher, da die Downloads unserer Mirrors noch nicht enthalten sind. Ich bin wirklich begeistert, was unser Team da erreicht hat! Visualisierung in den Clients ist für später™ geplant – einen Zeitplan dafür gibt es noch nicht.
Wie zu Beginn dieses Abschnitts erwähnt, wurde auch diese Arbeit durch unseren Grant from NGI Mobifree abgedeckt. Die Summe war in etwa identisch mit der für die Reproducible Builds weiter oben – ebenso der Arbeits- und Zeitaufwand. Letztere haben wir noch ein Weilchen, da die Arbeiten hier noch nicht abgeschlossen sind (u. a. an den Clients).
Repository Overhaul
Und nun ein ganz anderer Punkt: Dieser Teil ist für die meisten von euch eher „unsichtbar“, und ihr werdet wahrscheinlich davon (zunächst) gar nichts mitbekommen (haben). Dennoch sind viele, viele Stunden harter Arbeit in diesen Bereich geflossen.
Zunächst, und am wichtigsten: Für jede bei IzzyOnDroid gelistete App existiert nun hier auch ein lokaler Clon des zugehörigen Sourcecode Repositories. Ihr fragt euch jetzt vielleicht, wozu – ist doch IzzyOnDroid dafür bekannt, die von den jeweiligen Entwicklern erstellten und signierten APKs auszuliefern. Einer der Hauptgründe war: Welche Implikationen hat es, wenn das Quellcode-Repository einer App „im Nirvana verschwindet“ (etw, weil Entwickler ihren Github-Account gelöscht haben)? Ja, die App erhält das NoSourceSince Anti-Feature hier. Aber da hängen noch weitere Requirements dran: Wenn wir die App in unserem Repo behalten wollen, müssen wir auf Anfrage auch deren Quellcode vorweisen können – libre Lizenzen fordern das. Somit hätten wir bis vor Kurzem eine solche App hier aus dem Repo entfernen müssen. Nun können wir sie weiterhin bereitstellen (sofern das sinnvoll ist).
Aber „Juristerei“ ist nicht der einzige Punkt hier. Da wir nun über lokale Clones für das Repo einer jeden App verfügen, bestehen weniger Abhängigkeiten auf Remote-Zugriffe. Und so war der nächste Schritt, den Abgleich der Fastlane Metadaten lokal durchzuführen. Wir verarbeiten diese für optimale Ergebnisse vor, z. B. unterstützen wir auch Markdown Syntax; ebenso werden Grafiken in der Größe angepasst und optimiert (wir haben immer noch diejenigen unter euch im Auge, die an langsamen Netzen mit geringer Bandbreite hängen, über beschränkte Datenlimits verfügen, oder keine „Flaggschiff-Geräte“ benutzen). All dies geschieht nun per Default lokal – keine Wanderung durch die APIs der Forges mehr. Dies beschleunigt die Verarbeitung für Apps, die viele Sprachen („Locales“) in ihren Fastlane Strukturen haben, enorm: Einige davon benötigen für diesen Schritt bislang mehr als drei Minuten – und brauchen dafür jetzt nur noch 20 Sekunden.
Dann wäre da unser monatlicher Qualitäts-Check, der Apps darauf überprüft, ob eventuell ihre Repositories umbenannt oder archiviert, die Lizenz gewechselt, Issue Tracker geöffnet, Fastlane erstellt (oder neue Elemente hinzugefügt, oder Probleme in bestehende eingefügt) haben, etc. Ein solcher Lauf benötigte zuletzt gut 13 Stunden, während er in mehrere API-Limits lief. Die meisten der Aufrufe betrafen dabei das Parsen von Fastlane – daher habt ihr es vielleicht schon erraten: diese Prüfungen erfolgen jetzt auch lokal. Weniger Netzwerk-Traffik, weniger Bandbreitenverbrauch – Ressourcen gespart. Und Zeit: Ein solcher Lauf benötigt jetzt gerade einmal 20 Minuten, statt der bisherigen 13 Stunden!
Und es wartet noch jede Menge weiterer Arbeit darauf, getan zu werden. Wie üblich werden wir davon berichten, sobald diese jeweils abgeschlossen wurde: „an ihren Taten sollst du sie messen“. Gute Absichten sind gut und schön, aber man kann nun einmal nicht den Speiseplan essen (zumindest macht es weder satt noch glücklich)…
Repository Overhaul wurde (und wird immernoch) von Izzy durchgeführt.
Maintenance Work
Die täglichen „Wartungsarbeiten“ nehmen mittlerweile sehr viel Zeit in Anspruch. Für mich (Izzy) bedeutet das volle fünf Stunden jeden Tag, was nicht viel für „private Freizeit“ übrig lässt. Da kann ich jetzt nichts mehr „draufpacken“, ohne es woanders wegzunehmen. Dummerweise geht auch noch Zeit für den Broterwerb drauf – gern würde ich da etwas abzwacken, um es in IzzyOnDroid zu stecken, wenn es dafür einen „Energieausgleich“ gäbe (analoges gilt auch für jedes Teammitglied, das „Extra-Schichten“ fährt: Obwohl unser Team natürlich gern freiwillig Zeit in IzzyOnDroid investiert, ermöglicht es die Bezahlung für die geleistete Arbeit, mehr Zeit in IzzyOnDroid zu investieren – und zeigt auch die Wertschätzung der Community für unsere Arbeit
). Daher würden wir uns hier über eure Unterstützung freuen, wenn ihr es euch leisten könnt: Ein Euro pro Monat summiert sich ganz nett, wenn mehrere einen solchen schicken. Und ermöglicht es uns, euch weiterhin den gewohnten Service (und je nach Summe, mehr) zu bieten. Wenn man sieht, was wir bisher erreicht haben: Stellt euch vor, was alles möglich wäre!
Der bevorzugte Kanal dafür ist unser OpenCollective, auch für Transparenz. Soll ja keiner sagen, wir würden nur „Geld einsacken“ wollen. Für alternative Kanäle, kommt gern auf uns zu.
Beiträge über OpenCollective erfordern nicht unbedingt ein Konto dort. Ihr könnt auch als Gast beitragen. Besucht dazu einfach unsere Contribute Seite und wählt „Individuelle Spende“ (oder benutzt diesen direkten Link dorthin). Wählt den Betrag, den ihr spenden wollt, gebt eine gültige E-Mail-Adresse für die Quittung an und wählt eine Zahlungsmethode.
An dieser Stelle aber auch ein dickes „Danke!“ an all diejenigen, die uns bereits auf diese (oder andere) Weise unterstützen! Wir haben bisher nur wenig von unserem OpenCollective Konto „abgebucht“ – da wir zunächst sicherstellen wollen, für Eventualitäten und „dringende Bedürfnisse“ auch über entsprechende Rücklagen zu verfügen. Unser Guthaben dort ist noch immer recht niedrig, so dass wir uns nur an kleine Dinge herantrauten...
Verschiedenes
Dank Anregungen und Hilfe von Wolfshappen, konnten wir ein paar kleinere Verbesserungen hinsichtlich der Barrierefreiheit unseres Repo Browsers implementieren. Die meisten von euch werden es nicht bemerkt haben, da diese Veränderungen eher subtil und manchmal nicht einmal sichtbar sind – aber wir hoffen, dass wir unseren sehbehinderten Besuchern eine (zumindest leicht) verbesserte Erfahrung bieten können. Diese Änderungen umfassen geringfügige Kontrastverbesserungen, aber auch Attribute zur Unterstützung von „Screen Readern“. Betroffen davon war überwiegend die App-Liste.
Oh, und für diejenigen, die es noch nicht wussten: ihr könnt alle Tools, die wir bisher entwickelt haben, sowie die, die wir in Zukunft entwickeln werden, bei Codeberg.Org finden. Wir möchten uns an dieser Stelle beim Codeberg Team aus tiefstem Herzen für ihren Support, ihre Hilfe, und all ihre harte Arbeit (nicht nur für uns) bedanken: Dafür, dass ihr einen derart exzellenten Service für uns alle anbietet! Ohne euch wären wir heute nicht, wo wir jetzt sind. Libre Software braucht eine libre Schmiede, ein libre Zuhause (und ich schreibe hier bewusst „libre“) – Danke, liebes Codeberg Team, dass ihr uns all dies bietet! Und natürlich auch dafür, dass ihr einen unserer Mirrors betreibt ![]()



Das Inoffizielle Android-Handbuch
Das Inoffizielle Android Systemhandbuch
Die besten Android-Apps
