Statistiques F-Droid et Aperçus propres

La communauté F-Droid a eu des discussions à propos de la meilleure façon de mesurer les applications populaires depuis longtemps. De 2012 à 2015, quelque simples comptes des téléchargements étaient maintenues dans fdroiddata. Nous avons aussi esquissé une idée basée sur le “concours de popularité” de Debian. Ensuite, nous avons déterminé une méthode sécuritaire pour recueillir des journaux de nos serveurs Web.

Une de nos idées centrales a toujours été qu’un bon système de statistiques pour F-Droid ne doit jamais inclure des informations identifiables personnellement (PII) comme des numéros de téléphone, adresses IP, MAC, SSID, IMSI, IIEM, comptes d’utilisateurs, etc. Aussi, la récolte des données additionnelles doit être volontaire, par exemple, n’importe quoi qui est signalé par des logiciels clients.

J’ai eu du temps récemment pour explorer des statistiques actuelles, grâce au projet Clean Insights du Guardian Project pour des statistiques confidentielles et éthiques. Maintenant, nous avons de vrais nombres que les gens peuvent travailler avec !

F-Droid websites

Nous avons ajouté des installations de journalisation qui préservent la confidentialité à tous nos serveurs Web sauf f-droid.org. Les configurations Apache utilisent le format “privacy+geo” qui change date/temps/fuseau à seulement la date et enlève l’adresse IP, l’agent d’utilisateur et le référent. Les configurations nginx utilisent le format de journal “privacy+geo” qui enlève aussi l’adresse IP, l’agent d’utilisateur et le référant. La différence clé avec les configurations de journal nginx est qu’il est impossible de normaliser la date, alors elles ne sont pas touchées. Les journaux ne sont pas gardés pour plus de deux semaines, après lesquels ils sont supprimés. Le processus de statistiques est exécuté sur le serveur, puis envoie les données propres à des dépôts git privés par site. Ils sont privés sauf pour les contributeurs essentielles au cas où les données privées fuient. Ils peuvent alors être enlevés à la main avant d’être publicisées.

Le format de journal Apache plus stricte viendra éventuellement à f-droid.org. Pour maintenant, nous gardons l’installation actuelle qui utilise les journaux défauts d’Apache. C’est un grand site et nous sommes une petite équipe, alors nous devons nous restreindre avec les changements là. Les statistiques qui viennent de f-droid.org sont en ce moment traités et passé en revue à la main. Les données propres et publiques pour f-droid.org sont générées avec le même procédé stricte que le reste des sites.

Tous ces données sont ensuite assemblées et publiées pour la consommation publique à https://fdroid.gitlab.io/metrics. C’est en ce moment seulement des fichiers de données JSON : index.json fait la liste des rapports hebdomadaires disponibles, puis chaque rapport est nommé après la première journée, p. ex. 2021-02-15.json. La période des rapports est lundi 0 :00 :00 jusqu’à dimanche 23 :59 :59.

Ces données JSON propres sont aussi téléchargés à l’instance d’analyse Clean Insights Matomo (gérée par le Guardian Project) pour déterminer si Matomo est un outil d’analyse utile sans PII. Même si le scripte de soumission ne fonctionne qu’avec des données propres, les rapports sont soumis à Clean Insights Matomo Proxy (CIMP), qui enlève les données inutiles, comme les adresses IP, avant qu’ils sont soumis à Matomo. Le CIMP soumet alors les données propres à Matomo, qui génère des graphiques à propos des données.

L’interprétation des données

Pour tous les serveurs Web sauf f-droid.org, ils sont une configuration simple avec un serveur. Cela veut dire que les journaux du serveur Web inclueront tous les requêtes au site. Pour f-droid.org, c’est plus compliqué. Les statistiques en ce moment proviennent du serveur Web canonique. Cela veut dire que la plupart des requêtes s’arrêtes aux serveurs de cache et ne se montreront pas dans les journaux du serveur canonique. Les journaux des serveurs de cache ne sont pas traités ou publiés en ce moment.

Client F-Droid

Il y a aussi les soumissions de statistiques pour le client officiel de F-Droid sur Android. En bref, elle recueille des informations de la dernière semaine (p. ex. la semaine complétée la plus récente), puis elle met tout cela dans un rapport JSON. Ce JSON est soumis à https://metrics.cleaninsights.org, en respectant des préférences de réseau comme l’utilisation de Tor. Il doit être activé en activant « Mode Expert », « Garder historique d’installation », puis « Envoyer à Statistiques F-Droid ». Il y a un lecteur de rapports dans « Install History ». Si cela est utile et il n’y a pas de fuites de confidentialité ou d’autres problèmes éthiques, il peut être élargi. Ceci dit, il sera toujours volontaire. En ce moment, c’est une option globale. Nous sommes en traîn d’explorer l’inscription pour les rapports individuels et d’autres idées pour s’assurer que les statistiques respectent toujours les souhaits de l’utilisateur en priorité.

Voici un vrai rapport, qui est cependant simple, en tant qu’exemple :

{
  "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"
}