For F-Droid to be trusted, we need to be transparent. Making it easy for people to pay attention to all the processes and systems we use helps us stay secure. These are the APIs with key information about the publishing process.
Paquets actifs
Il existe une API par application accessible via
https://f-droid.org/api/v1/packages
, qui peut être utilisée pour demander
des informations sur les applications dans le dépôt principal. L’API JSON
liste actuellement les versions publiées et suggérées. Les applications et
paquets archivés ne sont pas disponibles dans cette API.
Exemple de demande :
GET https://f-droid.org/api/v1/packages/org.fdroid.fdroid HTTP/1.1
Exemple de réponse :
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"packageName": "org.fdroid.fdroid",
"suggestedVersionCode": 1009000,
"packages": [
{
"versionName": "1.10-alpha0",
"versionCode": 1010000
},
{
"versionName": "1.9",
"versionCode": 1009000
}
]
}
Cette API est déjà utilisée par le projet shields.io pour fournir les badges de F-Droid, comme ceux-ci.
L’index du dépôt
F-Droid est construit autour d’un index signé de toutes les applications et
paquets qui sont disponibles. Ceci est un fichier JSON, mais plus un index
qu’une interface de programmation car toutes les informations sont
distribuées par un seul fichier. L’index du dépôt est sous la forme d’un
fichier JAR signé qui contient index-v1.json. La meilleure façon est de
vérifier la signature JAR, puis ensuite extraire index-v1.json si elle est
valide. La bibliothèque fdroidserver de Python fournit
fdroidserver.download_repo_index()
pour faciliter cela. Il est aussi
possible de tout simplement lire _index-v1.json sans utiliser une
bibliothèque pour ZIP.
Métadonnées de la version de l’application
Chaque application dans f-droid.org a un
fichier de métadonnées de compilation
qui lui y correspond dans fdroiddata. Pour encourager
la réutilisation créative, nous gardons nos données dans des formats standards dans des endroits faciles à trouver.
La collection entière des applications est en format YAML. Le fichier peut être directement accessible
par ID d’application en utilisant l’URL de GitLab Raw
https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/<ApplicationID>.yml
(p. ex. https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/org.fdroid.fdroid.yml).
L’index de dépôt et l’interface de programmation de GitLab
pour les fichiers de dépôt peuvent être utilisés pour faire une requête
pour connaître les ID d’application disponibles. Ces fichiers sont aussis disponibles dans le
miroir sur GitHub,
p. ex. https://raw.githubusercontent.com/f-droid/fdroiddata/master/metadata/org.fdroid.fdroid.yml
État du serveur de compilation f-droid.org
Les quatre étapes principales du cycle de compilation sont: checkupdates, build, update et deploy. Il y a un fichier JSON pour chacun avec de l’information sur leur état. Il est publié quand cet étape se termine. L’étape qui est en traîn d’être exécuté est publié à running.
- https://f-droid.org/repo/status/running.json
- https://f-droid.org/repo/status/build.json
- https://f-droid.org/repo/status/update.json
- https://f-droid.org/repo/status/deploy.json
Deux exemples de comment ces interfaces de programmation JSON peuvent être utilisées sont le site F-Droid Monitor et l’application F-Droid Build Status.
Surveillance du dépôt et des miroirs
mirror-monitor et repo-monitor sont des travaux automatiques qui contrôlent plusieurs statistiques à propos des miroirs de f-droid.org et les dépôts de tierce partie respectivement. Chacun fournit un seul large journal en JSON de tous les fois que les contrôles sont exécutés :
- État des miroirs f-droid.org : https://fdroid.gitlab.io/mirror-monitor/report.json
- état des dépots de tierce partie : https://fdroid.gitlab.io/repo-monitor/report.json
Compilations reproductibles
verification.f-droid.org est un recompileur qui recompile les publications officielles
provenant de f-droid.org, puis qui vérifie qu’elles sont compilées
de manière reproductible. Il y a un fichier JSON par APK qui
a été vérifié, avec un nom qui suit le schéma
<ApplicationId>_<VersionCode>.apk.json
, par exemple :
https://verification.f-droid.org/org.fdroid.fdroid_1010050.apk.json
Il y aussi une liste de tous les APK vérifiés avec succès : https://verification.f-droid.org/verified.json
Journaux de transparence des fichier binaires
La transparence des fichiers binaires est l’idée que tous les paquets publiés devraient être enregistrés lorsqu’ils sont publiés. Ceci fournit une façon de vérifier si un fichier binaire a été produit par l’éditeur, où s’il provient d’ailleurs, p. ex. en tant qu’un exploit. fdroidserver a des outils intégrés pour gérer un registre de transparence des fichiers binaires comme partie du processus de publication. Ceci a été activé sur le dépôt du Guardian Project : https://github.com/guardianproject/binary_transparency_log
Il y a aussi un prototype pour exécuter un registre de transparence des fichiers binaires pour f-droid.org. https://gitlab.com/eighthave/f-droid.org-binary-transparency
Puisque Gradle et l’équipe de Google Android Tools n’en publie pas, F-Droid l’a fait. L’interface de programmation basique est un fichier JSON avec une liste de toutes les URL qui sont publiés de manière connue. Chaque URL contient une liste de sommes de contrôle SHA-256 que le processus de journal a vu. Il y aussi d’autres fichiers qui sont suivis, dépendant de ce que fournit l’éditeur.
- https://gitlab.com/fdroid/gradle-transparency-log/-/raw/master/checksums.json
- https://gitlab.com/fdroid/android-sdk-transparency-log/-/raw/master/checksums.json
issuebot
issuebot s’exécute sur des requêtes de fusion d’applications et les requêtes de paquetage (RFP) pour fournir des informations aux examinateurs à propos de l’application. La plupart de cette information est aussi publié en format JSON. Chaque rapport est fait de données provenant des modules qui s’exécutent sur une application spécifique. Il y a deux points d’entrée :
- https://fdroid.gitlab.io/rfp/issuebot/applicationIds.json
- https://fdroid.gitlab.io/rfp/issuebot/sourceUrls.json
Mesures
Les données d’usage proviennent de plusieurs sites Web F-Droid et sont publiés avec aucune information identifiable personellement (PII). Il est publié avec un seul fichier JSON par semaine, avec un fichier d’index JSON par site. Par exemple, voici une semaine de statistiques : https://fdroid.gitlab.io/metrics/search.f-droid.org/2021-01-18.json
Même si ce n’est pas vraiment une interface de programmation, le miroir
Statistiques Git
Chaque dépôt git a beaucoup de métadonnées intéressantes. Le projet GitStats génère des graphiques agréables à partir de ces données. Ce n’est pas tellement une interface de programmation, mais ça a un rapport car elle utilise des données publique du projet. Des pages pré-générées pour chaque dépôt git central sont visibles ici : https://fdroid.gitlab.io/.