Le « build once, run everywhere », un fantasme dans le monde du logiciel libre ?
lundi 4 juillet 2016 à 17:54Dans ce billet coup de gueule – oui, j’ai sorti l’orangina rouge à l’orange sanguine, je voudrai vous parler d’un truc qui me lasse au dernier point : les paquets universels ou cruci-distributions.
Comme Java qui promettait au début du « write once, run everywhere » – écrire une seule fois, lançable partout – le monde du logiciel libre voit arriver deux technologies concurrentes, Snappy poussée par Canonical et FlatPak poussé par RedHat.
Technologies incompatibles entre elles, elles entrent en concurrence avec une troisième technologie, AppImage qui veut elle aussi accomplir le fantasme de l’informatique : compiler une seule fois le code source d’un logiciel, et le lancer tel quel sur toutes les distributions existantes. En gros, reprendre le principe des fichiers images DMG d’Apple. En rajoutant la marotte actuelle en terme de sécurité, le bac à sable.
Dans un article du mois de juin 2016, Canonical faisait entendre que son projet Snappy fonctionnerait indépendamment des distributions cibles.
Un annonce a été récemment faite sur l’arrivée du daemon snapd qui permet d’avoir le support des « paquets » Snaps sur Archlinux. Il y a même une page de wiki pour le logiciel en question.
Dans sa gazette du 4 juillet 2016, Distrowatch a tiré un bilan préliminaire du couple infernal Snappy / Flatpak en mettant en perspective que ce sont des technologies encore jeunes. Voici les morceaux de choix, pour Snappy :
[…]What made my experience more bitter this week was that not only were Flatpak and Snap not universal across distributions, the packages I tried did not even work on the distributions which claim to support them. Snap, on Ubuntu, looked promising. The snap command line utility feels a lot like apt-get and automatically handles dependencies. It might not work yet, but the concept seems viable once the edges get polished. Unfortunately, it looks as though Snap’s backend (the server side of things) is proprietary and unlikely to be accepted in the larger Linux community.[…]
Ce qui donne traduit :
[…]Ce qui a rendu mon expérience plus amère cette semaine, c’était que non seulement Flatpak et Snap ne sont pas universel entre les distributions, mais que les paquets que j’ai essayé n’ont même pas fonctionner sur les distributions qui prétendent les soutenir. Snap, sur Ubuntu, semblait prometteur. L’utilitaire snap ligne de commande ressemble un peu à apt-get et automatiquement gère les dépendances. Il pourrait ne pas fonctionner encore, mais le concept semble viable une fois que les angles seront arrondis. Malheureusement, il semble que le backend Snap (le côté serveur des choses) soit propriétaire et il y a peu de chances qu’il soit accepté par la communauté Linux au sens large.[…]
Pour Flatpak ?
Flatpak though is broken by design. Like Snap, Flatpak has a rough command line interface, but it also requires far too many steps to get it working. These steps involve installing Flatpak, then typing out long, complex commands which will immediately turn away most users. To even try to run a Flatpak application the user must import signing keys, manually install dependencies and then hope that is enough to get the application working. Further, Flatpak relies on systemd and only works in desktop sessions, preventing the package format from working on servers and in embedded environments. This makes Flatpak a non-starter in the race for universal packages.
Ce qui donne traduit :
[…]Flatpak bien est défectueux par la conception. Comme Snap, Flatpak dispose d’une interface de ligne de commande rugueuse, mais il faut aussi beaucoup trop d’étapes pour le faire fonctionner. Ces étapes impliquent l’installation de Flatpak, puis en tapant sur de longues commandes complexes qui feront s’éloigner automatiquement la plupart des utilisateurs. Pour même essayer d’exécuter une application de Flatpak l’utilisateur doit importer les clés de signature, installer manuellement les dépendances et avec l’espoir que ce soit suffisant pour obtenir le fonctionnement de l’application. En outre, Flatpak repose sur systemd et ne fonctionne que dans les sessions de bureau, ce qui empêche le format de paquet de travailler sur des serveurs et dans des environnements embarqués. Cela donne à Flatpak un faux départ dans la course au les paquets universels.[…]
La conclusion est une « balle en pleine tête » des deux projets.
[…]The most frustrating thing in this situation is we already have a cross-platform package format which works. AppImage has been around for years, automatically handles dependencies, truly works across multiple distributions and does not require root/sudo access to install. AppImage requires no additional framework or libraries to be installed, there is no new package manager to learn and AppImage programs can be launched through any distribution’s file manager.[…]
Ce qui donne traduit :
Le plus frustrant dans cette situation est que nous avons déjà un format de paquets multi-plateforme qui fonctionne. AppImage est présent depuis des années, gère automatiquement les dépendances, fonctionne vraiment sur de multiples distributions et ne nécessite pas l’accès root / sudo à installer. AppImage nécessite pas de cadriciels ou de bibliothèques supplémentaires à installer, il n’y a aucun nouveau gestionnaire de paquets pour apprendre et programmes AppImage peut être lancée via le gestionnaire de fichiers de toute distribution.
Snappy et Flatpak vont tuer un truc à peu près fonctionnel, AppImage. Cependant, j’ai voulu faire ma propre expérience, et j’ai pris deux logiciels supportés par les trois formats : LibreOffice et Gimp. Ce sont deux logiciels suffisamment complexe pour tester la solidité du principe et surtout son côté cruci-plateforme. Pour des raisons de légèreté, j’ai pris une Archlinux Mate installée dans VirtualBox que j’ai cloné autant de fois que nécessaire.
Première surprise : aucun Gimp en paquet snap… Ni de LibreOffice. Mal cherché ? Paquets indisponibles ? Heureusement que j’ai pu me retourner vers VLC
Deuxième surprise : outre que Flatpak est laxatif à installer, le port pour Archlinux semble être encore un peu vert. Au point que j’ai fini par jeter l’éponge.
Pour être franc, je ne crois pas le moins du monde dans un format de paquet universel… Sans que le nombre de distributions existantes ne se réduisent qu’à une grosse dizaine. Vu qu’on en est à environ 270 distributions indexées et vivantes sur Distrowatch…
Je laisse 18 mois à 2 ans avant qu’on enterre aussi bien snappy que flatpak. Le « compiler une fois, installer partout », cela restera du domaine du rêve à moins de vouloir décider de transformer le monde du libre en une copie de ce qui se fait sous Apple ou Microsoft.
Si je me trompe, et bien, je le reconnaitrai et je ferai amende honorable. Dans le cas contraire, je constaterai que mon intuition était correcte.