- Flatpak gagne actuellement en popularité auprès des développeurs et des utilisateurs, mais le projet lui-même fait face à un problème de stagnation du développement
- Le départ de développeurs clés et des goulots d’étranglement entraînent des retards dans l’intégration de nouvelles fonctionnalités et les revues de code
- Diverses améliorations ont été proposées, comme la prise en charge des images OCI, la granularité des permissions et le contrôle d’accès audio, mais leur intégration effective progresse lentement
- Pour le développement à long terme du projet, l’adoption du standard des technologies de conteneurs (OCI) et une réimplémentation en Rust sont envisagées
- La résolution de problèmes majeurs comme l’amélioration des portails, la prise en charge des pilotes et le sandboxing réseau sera déterminante pour la croissance de Flatpak
Présentation générale et état actuel du projet Flatpak
- Flatpak a commencé en 2007 sous la forme d’un projet similaire, a connu une première sortie en 2015 sous le nom de XDG-App, puis a été renommé Flatpak en 2016
- Il fournit des outils en ligne de commande, des outils de build et des composants d’exécution, et s’appuie sur cgroups, namespaces, bind mount, seccomp, Bubblewrap, etc., pour assurer l’isolation des applications (sandboxing)
- OSTree est le mécanisme de distribution par défaut, et plus récemment la prise en charge des images OCI a aussi été ajoutée et utilisée notamment dans Fedora
- Le succès de Flathub, la croissance de la boutique d’applications et l’adoption par des distributions sont réels, mais le projet connaît en interne un ralentissement du développement actif
Stagnation du développement et causes principales
- Les activités de maintenance et de correctifs de sécurité continuent, mais le développement de grandes nouvelles fonctionnalités et les revues de code sont bloqués depuis longtemps
- Le départ de développeurs majeurs (comme Larsson) a réduit le nombre de relecteurs, rendant plus difficile l’arrivée de nouveaux contributeurs ou l’intégration de changements d’ampleur
- Même des fonctionnalités comme l’installation préalable de Flatpak (Preinstall), sur lesquelles contribuent Red Hat et d’autres, ont connu à plusieurs reprises des délais de plusieurs mois avant intégration à cause du retard des revues et du départ de responsables
OSTree et prise en charge des images OCI
- OSTree a été appliqué avec succès à Flatpak, mais son caractère non standard et son outillage limité font qu’il n’évolue guère au-delà de la maintenance
- OCI bénéficie d’un large écosystème d’outils pour les images de conteneurs, ce qui permettrait à l’équipe Flatpak de réduire la charge de maintenance et les efforts redondants en l’adoptant
- La prise en charge de formats de compression efficaces comme zstd:chunked a aussi été proposée via de nouvelles PR, mais reste retardée et non intégrée
Gestion des permissions et granularité du sandbox
- Flatpak met l’accent sur la limitation de l’accès système par le sandboxing, et les versions récentes prennent en charge une granularité plus fine des permissions (par exemple
--device=input)
- Les versions de Flatpak diffèrent selon les distributions Linux, ce qui crée des problèmes de diffusion limitée des nouvelles permissions et de compatibilité entre versions
- Pour les permissions audio, les limites de PulseAudio compliquent la séparation entre lecture et enregistrement, d’où la nécessité d’améliorations via PipeWire ou des solutions similaires
- Le support insuffisant du sandboxing imbriqué empêche des applications comme les navigateurs web d’utiliser en interne leur propre sandbox distinct
D-Bus et sandboxing réseau
- Flatpak n’accède pas directement à D-Bus, mais utilise xdg-dbus-proxy pour une communication filtrée
- Wick souhaite déplacer la politique de filtrage vers le broker D-Bus afin de permettre une application dynamique des politiques et un contrôle d’accès basé sur les cgroups
- L’implémentation incomplète des namespaces réseau laisse subsister la possibilité de communications non intentionnelles entre applications Flatpak lorsqu’un port
localhost est exposé (cas réel : AusweisApp)
- Les pilotes NVIDIA sont fournis séparément pour chaque runtime, ce qui entraîne un trafic réseau excessif et des mises à jour difficiles. Des pistes comme le partage depuis l’hôte et la compilation statique, inspirées du modèle de Valve, sont étudiées
Usage des portails et nécessité d’amélioration
- Les portails sont des API d’accès à des ressources externes basées sur D-Bus, utilisées pour les fichiers, l’impression, les URL et bien d’autres fonctions
- Des portails comme Documents sont efficaces à l’échelle du fichier, mais pour des applications à fort enjeu d’ergonomie comme GIMP ou Blender, un modèle de permissions trop fin devient une limite
- En parallèle de propositions de nouvelles API pour le remplissage automatique de mots de passe, les clés FIDO ou la synthèse vocale, des idées sont discutées pour réduire la difficulté de développement, notamment une réimplémentation en Rust
L’avenir de Flatpak (Flatpak-next)
- En partant de l’hypothèse où Flatpak cesserait d’être développé sous sa forme actuelle, une transition majeure vers l’écosystème OCI (images, registres, outils, politiques, etc.) est discutée dans une perspective de long terme
- Une réimplémentation en Rust et une unification avec l’écosystème des conteneurs pourraient apporter des avantages en matière de charge de gestion, de maintenance et d’évolutivité
Résumé des questions-réponses
- À la question de savoir comment seraient gérées les applications Flatpak existantes en cas de transition vers OCI, il a été répondu que l’automatisation du build sur Flathub éviterait de gros problèmes
- Concernant le manque de métadonnées dans les registres OCI, des standards pour des données non liées aux images sont en cours d’élaboration, mais leur adoption réelle demandera encore du développement et de l’intégration
- À propos d’un support direct de PipeWire, des discussions techniques sont en cours, avec une orientation vers une intégration fondée sur les politiques de PipeWire
Conclusion
- Flatpak s’est imposé comme une plateforme standard de distribution et de sandboxing, mais reste confronté à plusieurs chantiers d’amélioration : stagnation des revues et du nouveau développement, problèmes de permissions, de réseau et de pilotes, ainsi qu’évolution vers de futurs standards
- L’usage des technologies de conteneurs basées sur OCI et de Rust pourrait devenir un nouveau moteur pour l’évolution de Flatpak
- Les points clés se résument à la disponibilité de relecteurs, la standardisation, l’extension de l’écosystème et l’amélioration de l’expérience utilisateur
2 commentaires
Je pense qu’au lieu de bloquer complètement les autorisations d’accès, il vaudrait mieux montrer clairement à quels répertoires l’application accède.
Android est plutôt correct sur ce point, mais de ce côté-là les autorisations sont trop largement regroupées, donc il faut aussi autoriser des permissions à un niveau dont on n’a pas besoin...
Avis sur Hacker News
--device=input, impossibilité d’ouvrir uniquement les haut-parleurs tout en bloquant le micro, etc./tmp, ce qui rend l’enregistrement de pièces jointes et leur ouverture dans d’autres applications extrêmement pénibles dans un environnement sandboxé. Selon lui, le propriétaire de l’ordinateur doit être l’utilisateur, non le développeur. Il considère que cet excès de sécurité nuit à la productivité, et le compare à une Useless Machine.git config, dossier de polices, etc.), toutes les instances pourraient partager les mêmes droits d’accès via une option dédiée..rpm. L’auteur espère voir davantage d’innovation autour de Flatpak.flatpak-spawn,polkit-exec, etc., mais cela revient presque à renoncer à la protection du sandbox.