F-Droid Metriken und Clean Insights

Die F-Droid-Community diskutiert schon lange darüber, wie man messen kann, welche Apps beliebt sind. Von 2012 bis 2015 wurden einige einfache Downloadzahlen in fdroiddata gepflegt. Wir skizzierten auch eine Idee, die auf Debians “Popularity Contest” basiert. Dann bestimmten wir einen sicheren Weg, um Logs von unseren Webservern zu sammeln.

Ein zentraler Gedanke war immer, dass ein gutes Metriksystem für F-Droid niemals irgendwelche persönlich identifizierbaren Informationen (PII) wie Telefonnummern, IP-Adressen, MAC, SSID, IMSI, IMEI, Benutzerkonten usw. enthalten würde. Außerdem muss jede zusätzliche Datenerfassung auf Zustimmung stoßen, z. B. alles, was von der Client-Software gemeldet würde.

Kürzlich hatte ich etwas Zeit, um mich mit tatsächlichen Metriken zu beschäftigen, dank des Clean Insights Projekts des Guardian Project für private, ethische Metriken. Jetzt gibt es ein paar konkrete Zahlen, mit denen man arbeiten kann!

F-Droid-Websites

Wir haben neue datenschutzfreundliche Protokollierungseinstellungen zu allen unseren Webservern außer f-droid.org hinzugefügt. Die Apache-Konfigurationen verwenden das “privacy+geo“-Format, das die Datums-/Zeit-/Zeitzone auf das Datum reduziert und die IP-Adresse, den User-Agent und den Referer entfernt. Die nginx-Konfigurationen verwenden das “privacy+geo“-Protokollformat, das auch IP-Adresse, User Agent und Referer entfernt. Der Hauptunterschied besteht darin, dass es mit nginx Log-Konfigurationen nicht möglich ist, das Datum zu normalisieren, so dass sie intakt gespeichert werden. Die Logs werden dann nicht länger als zwei Wochen gespeichert, danach werden sie gelöscht. Der metrics Prozess läuft auf dem Server selbst, und schiebt dann nur die bereinigten Daten in private, pro-Site git repos. Diese werden für die Kern-Mitwirkenden privat gehalten, für den Fall, dass private Daten durchgesickert sind. Sie können dann manuell entfernt werden, bevor sie veröffentlicht werden.

Das striktere Apache-Protokollformat wird irgendwann auf f-droid.org kommen. Für den Moment bleiben wir bei der bestehenden Einstellung, die Standard-Apache-Protokolle beizubehalten. Es ist eine große Seite und wir sind ein kleines Team, also müssen wir mit Änderungen dort sehr konservativ umgehen. Die Metriken, die von f-droid.org kommen, werden derzeit manuell bearbeitet und überprüft. Die öffentlichen, bereinigten Daten für f-droid.org werden nach demselben strengen Verfahren wie die übrigen Seiten erzeugt.

Alle diese Daten werden dann zusammengefügt und für den öffentlichen Gebrauch unter https://fdroid.gitlab.io/metrics veröffentlicht. Dies sind derzeit nur JSON-Datendateien: index.json listet die verfügbaren Wochenberichte auf, dann wird jeder Bericht nach dem ersten Tag des Berichts benannt, z. B. 2021-02-15.json. Der Berichtszeitraum ist Montag 0:00:00 bis Sonntag 23:59:59.

Diese bereinigten JSON-Daten werden auch in die Analyseinstanz Clean Insights Matomo hochgeladen (die von Guardian Project betrieben wird), um zu testen, ob Matomo ein nützliches Analysetool für Daten ohne PII ist. Obwohl das Übermittlungsskript nur mit bereinigten Daten arbeitet, werden die Berichte an den Clean Insights Matomo Proxy (CIMP) übermittelt, der unnötige Informationen, einschließlich der IP-Adresse, entfernt, bevor sie an Matomo übermittelt werden. Der CIMP sendet dann die bereinigten Daten an Matomo, das Ansichten auf die Daten generiert.

Interpretieren der Daten

Bei allen Webservern außer f-droid.org handelt es sich um eine einfache Ein-Server-Einrichtung. Das bedeutet, dass die Webserver-Protokolle alle Zugriffe auf die Website enthalten. Für f-droid.org ist es etwas komplizierter. Die aktuellen Metriken sind vom kanonischen Webserver. Das bedeutet, dass die meisten Zugriffe bei den Caching-Servern stoppen und nie in den Protokollen des kanonischen Webservers auftauchen. Die Protokolle von den Caching-Servern werden derzeit nicht verarbeitet oder irgendwo veröffentlicht.

F-Droid Kern

Es gibt auch metrics submission für den offiziellen F-Droid Android-Client. Im Kern sammelt er Informationen aus der Vorwoche (z. B. der letzten abgeschlossenen Woche) und stellt diese in einem JSON-Bericht zusammen. Dieses JSON wird dann an https://metrics.cleaninsights.org übermittelt, wobei Netzwerkeinstellungen wie die Notwendigkeit von Tor berücksichtigt werden. Es muss zuerst aktiviert werden, indem man den “Expertenmodus” einschaltet, dann “Keep Install History” und dann “Send to F-Droid Metrics”. Im “Install History”-Viewer gibt es einen Report-Viewer. Wenn sich dies als nützlich erweist und es keine Datenschutzlecks oder andere ethische Bedenken gibt, kann es erweitert werden. Das heißt, es wird immer ein Opt-in sein. Im Moment ist das ein globaler Toggle. Wir untersuchen die Möglichkeit der Zustimmung pro Bericht und andere Ideen, um sicherzustellen, dass die Metriken immer in erster Linie die Wünsche des Benutzers respektieren.

Hier ist ein tatsächlicher, aber relativ einfacher Bericht als Beispiel:

{
  "events" : [ {
    "action" : "isPrivilegedInstallerEnabled",
    "category" : "device",
    "name" : "true",
    "period_end" : 1613606400,
    "period_start" : 1613001600,
    "times" : 1
  }, {
    "action" : "Build.VERSION.SDK_INT",
    "category" : "device",
    "name" : "25",
    "period_end" : 1613606400,
    "period_start" : 1613001600,
    "times" : 1
  }, {
    "action" : "Build.SUPPORTED_ABIS",
    "category" : "device",
    "name" : "[armeabi-v7a, armeabi]",
    "period_end" : 1613606400,
    "period_start" : 1613001600,
    "times" : 1
  }, {
    "action" : "PackageInfo.firstInstall",
    "category" : "APK",
    "period_end" : 1614211200,
    "period_start" : 1613606400,
    "times" : 1
  }, {
    "action" : "PackageInfo.firstInstall",
    "category" : "APK",
    "name" : "org.fdroid.fdroid.privileged",
    "period_end" : 1614211200,
    "period_start" : 1613606400,
    "times" : 1
  }, {
    "action" : "PackageInfo.lastUpdateTime",
    "category" : "APK",
    "name" : "org.fdroid.fdroid.privileged",
    "period_end" : 1614211200,
    "period_start" : 1613606400,
    "times" : 1
  }, {
    "action" : "org.fdroid.fdroid.installer.Installer.action.INSTALL_STARTED",
    "category" : "package",
    "name" : "ryey.easer.beta",
    "period_end" : 1614211200,
    "period_start" : 1613606400,
    "times" : 1
  }, {
    "action" : "org.fdroid.fdroid.installer.Installer.action.INSTALL_COMPLETE",
    "category" : "package",
    "name" : "ryey.easer.beta",
    "period_end" : 1614211200,
    "period_start" : 1613606400,
    "times" : 1
  } ],
  "idsite" : 3,
  "lang" : "en",
  "ua" : "F-Droid 1.12-alpha1-4-gbc8ae2144-debug"
}