De Linux et de l’opportunité d’une synchronisation des distributions

Classé dans : Logiciel libre | 17

Temps de lecture 14 min

image_pdfimage_print

Voici une traduction[1] un peu technique mais qui illustre bien la problématique de la démocratisation de GNU/Linux.

Elle fait suite à la proposition récente de Mark Shuttleworth (Monsieur Ubuntu) de synchroniser les cycles et donc les sorties des principales distributions Linux (outre Ubuntu il cite celles de Red Hat, Novell et Debian ainsi que le noyau, GNOME/KDE, X et OpenOffice.org). Histoire que tout ce petit monde avance groupés, ce qui d’après lui simplifierait la vie de tout le monde à commencer par celle des utilisateurs.

Mais Ryan Paul du site Ars Technica n’est visiblement pas tout à fait de cet avis. Au ce serait bien si… de Mark Shuttleworth il répond avec des arguments précis qui évoquent souvent le quotidien collaboratif d’un développeur de logiciels libres (en particulier tout ce qui touche à la gestion de versions). Et lorsque l’on est, comme moi, utilisateur mais non développeur de logiciels libres, c’est culturellement fort enrichissant.

On notera qu’à la suite de sa proposition et du vif débat suscité, Shuttleworth a précisé voire nuancé son propos quelques jours plus tard sur son blog.

Copie d'écran - Ars Technica

Pourquoi Linux n’est pas encore prêt pour des cycles de parution synchronisés

Why Linux isn’t yet ready for synchronized release cycles

Ryan Paul – 21 mai 2008 – ars technica

Le fondateur d’Ubuntu, Mark Shuttleworth a répété son appel aux développeurs des principaux logiciels libres et des distributions Linux pour une synchronisation des développements et des cycles de publication. Il avance que l’adhésion fidèle et universelle à un modèle de parution régulier encouragerait la collaboration entre les projets, assurerait aux utilisateurs l’accès aux dernières nouveautés des applications populaires et ferait de la plateforme Linux une cible plus stable et prévisible pour les vendeurs de logiciels.

Shuttleworth souhaite organiser les principales sorties en trois vagues distinctes, chacune formant un ensemble cohérent. La première vague concernerait les composants fondamentaux comme le noyau Linux, le compilateur GCC, les boîtes à outils graphiques comme GTK+ et les plateformes de développement comme Python et Java. La deuxième vague apporterait les environnements graphiques et les applications tandis que la troisième vague serait composée des distributions.

Bien qu’un cycle de sortie unifié rendrait plus aisée la création d’une distribution Linux, ce concept apporte d’importantes difficultés et n’est que peu gratifiant pour les développeurs de logiciels. Pour parvenir à une synchronisation à grande échelle comme Shuttleworth le souhaite, certains logiciels libres devraient radicalement changer leur modèle de développement actuel et adopter une nouvelle approche qui ne sera pas viable pour nombreux d’entre eux.

Comprendre les cycles de sorties réguliers

Un cycle de sorties régulier nécessite de sortir de nouvelles versions à une fréquence donnée. Le processus de développement pour les projets qui emploient ce modèle implique en général une planification des fonctionnalités prévues et ensuite une implémentation maximale jusqu’à ce que le projet gèle le code lorsque l’échéance approche. À partir de ce moment là, les fonctionnalités qui ne sont pas terminées sont reportées. On se concentre alors sur la correction des bogues et sur l’assurance qualité jusqu’à la date butoir, quand le logiciel est officiellement sorti.

Ce modèle fonctionne bien pour de nombreux projets, en particulier pour l’environnement GNOME. Mais, une conséquence de ce modèle est que les développeurs doivent travailler par incrémentation et il décourage les modifications de grande ampleur, celles qui nécessiteraient plus de temps que n’en offre le cycle. Parfois cet intervalle n’est simplement pas suffisant pour ajouter au code principal et tester des changements d’architecture importants qui sont incubés en parallèle en dehors de l’arbre principal du code.

Quand cela se produit, les développeurs doivent se demander si les avantages de la nouvelle fonctionnalité compensent les effets néfastes de la régression (comme avec l’adoption de GVFS dans GNOME 2.22 par exemple). Ils doivent parfois décider de retirer des fonctionnalités à la dernière minute ou de repousser la date de sortie pour améliorer la stabilité. Ce sont des choix difficiles à prendre et, comme le reconnaît Shuttleworth lui-même, faire ces choix demande beaucoup de discipline.

Même si des cycles réguliers peuvent convenir à certains projets, tenter d’imposer l’adoption de cette approche à tous les projets et ensuite les faire correspondre universellement pourrait gravement endommager le processus de développement. Si les projets deviennent dépendants de la synchronisation, alors un retard à n’importe quelle étape aurait des conséquences sur toutes les autres étapes. Chaque projet subirait alors une pression énorme pour tenir les délais et ce serait néfaste pour le programme et ses utilisateurs finaux.

L’utilisation des branches pour faciliter des sorties régulières

D’après Shuttleworth, de bons outils, en particulier des systèmes de contrôle de version possédant de bonnes capacités de création de branches et de fusion, peuvent rendre ce problème obsolète. Il se réfère spécifiquement à Bazaar, un système de contrôle de version mis au point par Canonical qui s’intègre à la plateforme de développement Launchpad de l’entreprise. J’ai beaucoup testé Bazaar durant ces deux dernières semaines en cherchant des technologies de contrôle de version distribuées et je ne peux qu’être d’accord avec l’argument de Shuttleworth.

Bazaar rend très facile le portage du flot continu de petits changements, du tronc vers les branches, où les fonctionnalités importantes sont développées, afin que ces fonctionnalités puissent être fusionnées sans accroc dans la branche principale quand elles sont achevées. En utilisant cette approche, où la majeure partie du développement est faite dans des branches, le code du tronc est naturellement et systématiquement plus robuste qu’il ne le serait autrement. Shuttleworth va même plus loin encore et théorise que lorsque cette approche est employée en parallèle à des tests automatisés le code du tronc est toujours prêt à être sorti à n’importe quel moment.

« Un ensemble de tests complet vous permet d’être plus ouvert aux gros ajouts au tronc parce que les tests assurent les fonctionnalités que les gens ont avant l’ajout. Un ensemble de tests agit comme un champ de force, il protège l’intégrité du code dont le comportement était connu le jour précédent face au changement perpétuel. » écrivait ainsi Shuttleworth sur son blog.

« La plupart des projets que je finance maintenant ont adopté une politique de tests avant ajout. Les ajouts au tronc sont gérés par un robot qui refuse de valider l’ajout s’il ne satisfait pas à tous les tests. Vous ne pouvez pas discuter avec un robot ! Ce que je trouve beau là-dedans c’est que le tronc est toujours dans un état publiable. Ce n’est pas complètement vrai ; on peut toujours faire un peu plus d’assurance qualité avant de sortir quelque chose, mais vous avez cette garantie que l’ensemble de tests est toujours satisfait. Toujours. »

Les ensembles de tests et les très bons systèmes de contrôle de version peuvent simplifier le développement et améliorer la qualité du code, mais ils ne sont pas la panacée. Shuttleworth surestime largement la capacité de ces outils à pallier aux problèmes associés aux sorties régulières. Des bogues surgiront toujours quand de grosses nouveautés sont fusionnées au code existant et parfois ces bogues nécessitent un report de la date de sortie. Si les développeurs ne peuvent ou ne veulent pas faire cela, la qualité du logiciel s’en retrouvera forcément affectée.

Ubuntu 8.04 est le parfait exemple de la voie à ne pas suivre

Pas besoin de chercher très loin pour constater la baisse de qualité résultante d’un engagement sans compromis à un cycle de sorties régulières. Prenez l’exemple de la dernière version d’Ubuntu. Shuttleworth vante Ubuntu 8.04 comme l’exemple d’une gestion plus intelligente des sorties et soutient que cela démontre la capacité des développeurs à s’en tenir à un programme strict.

« 8.04 LTS représente pour nous un grand pas en avant dans notre conception de la gestion d’une sortie. Pour autant que je sache, jamais une sortie de cette envergure ne s’est faite exactement le jour prévu jusqu’à maintenant, dans le monde des OS propriétaires ou des OS libres. » commente Shuttleworth sur son blog. « Nous avons non seulement démontré que l’on peut préparer une version LTS dans les 6 mois impartis, mais cela prouve également que l’on peut s’engager par anticipation sur un tel cycle LTS. Félicitations aux preneurs de décisions techniques, aux responsables versions et à toute la communauté qui a calqué nos efforts sur le but fixé. »

Ubuntu 8.04, qui est parue le mois dernier, est une version avec support à long terme (LTS pour Long Terme Support), ce qui signifie qu’elle sera maintenue trois ans pour la version Desktop et 5 ans pour la version serveur. Depuis le début, Shuttleworth affirmait aux utilisateurs que la qualité et la fiabilité seraient les mots d’ordre pour la 8.04 et qu’elle serait faite pour durer. Malheureusement, la version n’a pas atteint ces objectifs et est sortie avec quelques bogues importants. Le problème le plus frustrant que nous avons relevé dans notre test d’Ubuntu 8.04 est la configuration défectueuse de PulseAudio, qui affecte à la fois les fonctionnalités audio et vidéo.

Un léger retard aurait permis de résoudre les problèmes de ce genre avant la sortie, mais ce n’est jamais arrivé, peut-être parce que l’engagement de faire la sortie à temps l’a emporté sur l’engagement de la qualité. Mais certains diront qu’une version défaillante n’est pas un problème parce que les bogues peuvent être réparés par des petites mises à jour après sa sortie.

« Les grands déploiements attendent la première ou la deuxième version consolidée de toute façon » fait noter Shuttleworth en réponse à un commentaire sur ton blog (NdT : La sortie de Ubuntu 8.04.1 est prevue pour le 3 juillet). Je me doute que je ne suis pas seul à avoir pensé aux Service Packs de Microsoft en voyant cette remarque. Mais une version officielle n’est-elle pas censée être un gage de qualité ? Si les sorties sont basées sur des jalons arbitraires posés sur une chronologie plutôt que sur une réelle amélioration, alors elles perdent leur sens ou leur pertinence pour les utilisateurs finaux.

D’autres approches

Les cycles de sortie devraient être flexibles et les développeurs devraient pouvoir en ajuster la durée pour qu’ils collent à leur activité. Selon les projets, la culture de développement et les buts peuvent être très différents, les stratégies de publication sont par conséquent différentes. L’appel de Shuttleworth en faveur d’une synchronisation reflète une forme d’incapacité à reconnaître la valeur et la profondeur de la diversité dans la communauté du logiciel libre. Des distributions qui visent des publics différents et qui ont des priorités différentes pourraient ne pas rentrer dans le même moule que les distributions généralistes comme Ubuntu. On retrouve également des logiciels libres multi-plateformes, comme le navigateur Web Firefox par exemple, qui réunissent beaucoup d’utilisateurs sur d’autres systèmes d’exploitation et qui peuvent avoir d’autres priorités que la fréquence de sortie des distributions Linux.

Je tiens à dire quand même que je ne rejette pas catégoriquement les idées de Shuttleworth. Même si je suis vraiment contre une approche descendante et centralisée de la planification des sorties synchronisées je pense qu’il y pourrait y avoir des bénéfices à tirer d’un meilleur alignement du calendrier de quelques distributions principales qui partagent déjà des buts, une technologie et une méthodologie similaires.

La simultanéité des sorties est déjà à l’ordre du jour (Fedora 9, Ubuntu 8.04 et OpenSolaris 2008.05 ont toutes vu le jour à quelques semaines d’intervalle) et je suis convaincu que de meilleurs résultats sont atteignables si on laisse cette tendance se développer d’elle-même. Encourager trop d’interdépendance créerait des risques sévères, on parle d’un domaine où une planification consciencieuse et un calendrier gravé dans la roche seraient à l’origine de plus de problèmes qu’ils n’en résolvent.

Aaron Seigo, développeur KDE, est l’un des détracteurs ayant exprimé des inquiétudes convaincantes et perspicaces au sujet de la proposition de Shuttleworth. Seigo met à plusieurs reprises en avant que le genre de synchronisation que souhaite Shuttleworth améliore l’efficacité d’intégration au dépend de l’efficacité des développeurs, une concession qu’il décrit comme contre-productive car c’est dans le développement que se trouve le richesse des logiciels.

« Mark parle de processus en flux tendu, mais seulement du point de vue de l’intégration ; il existe aussi des processus en flux tendu dans le développement et définir le cycle de développement à l’aune du cycle de sorties, surtout s’il n’est pas bon, érode la fluidité du flux de développement », écrit Seigo sur son blog. « Il ne faut pas oublier que c’est le processus de développement qui fait toute la valeur d’une distribution Linux. La distribution rend cette valeur accessible à grande échelle et crée un autre type de valeur ajoutée par-dessus (le support, le marketing, etc.) mais c’est le développement, pas l’intégration, qui est la source primaire de valeur. Il devrait alors être évident que le processus de développement n’est pas quelque chose qu’on peut prendre comme ça à la légère. »

Seigo propose une alternative qui faciliterait la synchronisation en aval sans nécessiter de synchronisation ou de chamboulement en amont. D’après lui, les distributions devraient gérer par elle-mêmes les sorties en créant leurs propres branches et en tenant compte des contraintes de leurs propres cycles.

« Puisqu’il y a cette volonté en aval pour des cycles de parution synchronisés… pourquoi est-ce que l’aval ne prendrait pas en charge les sorties ? Pourquoi attendre que les tarballs soient livrées devant leur porte pour mettre en place une équipe de publication ? » s’interroge Seigo. « Pourquoi ne pas demander à la communauté d’intégration (les vendeurs de systèmes d’exploitation en gros) de coordonner leur efforts pour créer une branche en vue d’une sortie à un moment donné, moment qu’ils définissent eux-mêmes, et travailler avec l’amont pour la stabilisation de cette branche ? Plutôt que d’espérer que l’amont fasse ce qu’ils désirent, pourquoi ne peuvent-ils pas regrouper un tas de gars des communautés de chez Novell, Red Hat, Debian, Mandriva, MacOS et Microsoft, de chez Canonical ou encore de chez n’importe qui qui voudrait s’impliquer et offrir un vrai processus sérieux de sortie par lequel l’amont pourrait s’intégrer naturellement ? »

Les suggestions de Seigo sont plus viables que les propositions de Shuttleworth. Elles permettraient aux distributions Linux de bénéficier des avantages pratiques de la synchronisation dont bénéficieraient également les utilisateurs finaux sans avoir à bouleverser ou synchroniser le développement en amont. Cela engendrerait cependant un coût additionnel et un défi nouveau pour les distributeurs et leur ferait porter le poids de la gestion des sorties. Seigo assure que si les distributeurs veulent vraiment des sorties synchronisées en aval autant que ça ils seront prêts à accepter cette charge supplémentaire et trouveront un bon moyen pour y parvenir.

Il est bien probable que cette discussion dure pendant encore quelques temps à mesure que les acteurs principaux pèsent le pour et le contre. La communication a déjà fait avancer le débat de bien des manières et a déjà fait émerger des alternatives attirantes et des variations de la proposition initiale. Le résultat final pourrait avoir des implications importantes sur la gestion des sorties par les logiciels libres et les distributions, mais pour l’instant aucune des idées proposées n’est suffisamment mature pour être appliquée à grande échelle.

Notes

[1] Traduction : Olivier – Relecture : Daria – Café : Framalang.

17 Responses

  1. Yanightmare

    Très intéressant tout ça ! 🙂

    Effectivement, pour Shuttleworth avec Hardy, c’est peut-être pas le moment de la ramener…

    Je vous écris depuis windows tellement mon ordinateur bug. -_-‘

  2. macsim

    Je dois bien reconnaitre qu’il a raison, c’est utopique comme idée, tous les développeurs ne sont pas payé, ils doivent pouvoir développer quand/comme ils veulent, sans contrainte. La Hardy est la pire démonstration d’un OS non près et non fini, je galère avec pulse audio et des plantage récurrent de gdm que je n’avais pas avec gusty au point réfléchir à repasser sous debian. 6/12mois on s’en fou pourvu que ce soit bien fait. 1 release par an me semble résonnable. Laisserai plus de temps, parsque l’argument "linux=stabilité" s’éffondre avec ubuntu Hardy :/

  3. Jean

    Merci pour la traduction de cet article qui donne à réfléchir.

  4. Omnisilver

    Félicitations pour la traduction 🙂

    Tiens moi aussi mon ordinateur est devenu inutilisable après le passage à Hardy (pas à cause de PulseAudio mais de Xorg 7.3 qui configure soit-disant les écrans automatiquement, mais pas mon HP1723 …)

  5. plf

    En résumé, Mark Shuttleworth aimerait bien imposer la logique et la culture d’entreprise au monde libre. Ça fait un petit peu froid dans le dos…

  6. Ned

    "…imposer la logique et la culture d’entreprise au monde libre…"
    + 1 pour cette remarque, c’est exactement ce que je me suis dit à la lecture de cet article (que je te remercie d’avoir publié)

  7. Raum_Schiff

    A voir les galères que vous avez avec Hardy, je suis bien content d’avoir opté pour une debian stable … Sur ce, je plussoie sur "..imposer la logique et la culture d’entreprise au monde libre ".
    Aaron Seigo à raison, mettre en commun les modes de distribution et laisser les, développeurs travailler à leur rythme c’est bien la garantie de la stabilité du libre.

    Encore merçi pour l’article.

  8. Sardem FF7

    Je n’arrive pas à comprendre les gens qui ont des problèmes avec Hardy, sur mes deux ordinateurs les composants sont reconnus sans effort (mis à part la carte son de mon fixe, mais Ubuntu n’a jamais réussi à trouver la solution, même Windows XP a du mal, faut dire avec deux cartes sons…), et sur les deux PulseAudio fonctionne parfaitement, en quelques clics (et j’arrive à faire transiter le son du fixe muet mais le portable). Mais bon vive Gentoo !

    Pour revenir au sujet principal voila une intéressante analyse sur la logique et la culture d’entreprise ; cependant si c’était "possible" cela n’en serait que mieux, dans une certaine mesure j’entends.
    Maintenant quand on voit la fréquence de sortie des Windows (pour ne citer qu’un exemple) on peut se dire que le libre a le temps de s’améliorer et que une nouvelle version par an c’est déjà trop, il ne faudrait pas dépasser l’avancée technologique de Microsoft trop vite tout de même…

    Belle traduction sinon, rien à redire là-dessus.

  9. padoup-padoup

    Réflexion intéressante et très juste à mon avis ; on ne peut imposer des cycles de sortie à tous les développeurs, d’ailleurs je vois mal la Debian sortir à un rythme régulier 😉

    Pour ce qui est de Hardy, c’est pour moi la Ubuntu la plus stable depuis la 6.06…
    Mais ça vaut pas une Debian niveau stabilité (niveau convivialité j’aurai tendance à plussoyer pour ubuntu, mais comme j’ai testé que des versions serveur de Debian…) bon ok…

  10. stroky.l

    Article très intéressant et surtout très critique, très réfléchi, en bref un article comme on en voit trop peu sur le planet ubuntu, où des fois j’ai l’impression de me retrouver sur le site apple tellement certain font l’éloge d’ubuntu (bon la j’hyperbolise un peu). C’est vrai qu’ubuntu est une distribution d’excellente que ce soit pour un débutant ou pour un utilisateur avancé qui ne veux pas se prendre la tête avec la configuration. Moi personnellement, Hardy m’a plus arrangé de problème que posé. Mais bon on ne peut que constater que le nombre de problème à augmenter et je trouve ça triste pour une version censé être LTS, donc stable et sure. Pourquoi pas prendre 6 mois pour les versions normal et 12 mois pour les LTS. Ou pourquoi ne pas faire comme debian ne pas fixer de date et la sortir quand elle est prête tout en gardant un rythme de développement rapide. Est ce vraiment aussi une bonne idée pour une distribution destiné au large public de faire une nouvelle version tous les six mois. Parce que franchement je pense que ça n’intéresse que les geeks d’avoir la toute dernière de open office ou de firefox et je pense que ça fait chier un peu le débutant de formater son dd tout les 6 mois ou de faire une maj sauvage, surtout si à chaque nouvelle version des problèmes nouveaux doivent être résolu.

  11. moi

    D’où l’avantage de distributions comme Archlinux, pour la simple (et bonne ?) raison que les nouveautés y sont intégrées au fur et à mesure (pas de développement cyclique mais continu).

  12. Omnisilver

    @ Sardem FF7 : "Je n’arrive pas à comprendre les gens qui ont des problèmes avec Hardy, sur mes deux ordinateurs les composants sont reconnus sans effort"

    Donc comme ça fonctionne avec ta configuration, tu ne comprends pas qu’il puisse y avoir des bugs avec d’autres configurations ?

    Etrange façon de penser … à la http://www.chezmoicamarche.org/

  13. furet

    Il faut quand même se souvenir dune chose : on ne peut pas avoir à la fois les dernières nouveautés, la rapidité des sorties et la stabilité en même temps. Je pense que cette LTS aurait du murir un peu avant de sortir. Le problème principal du modèle ubuntu est qu’il repose sur des dates de sorties fixes comme le résume assez bien cette traduction. Canonical applique un recette trop commerciale : on préfère sortir un produit à date fixe si possible avec le plus de nouveautés (gnome 2.22, firefox beta 3) quite à sortir un produit pas finalisé et à sortir des màj pour finaliser le produit (un peu comme le sp1 de vista).

    Je suis parfaitement en accord avec les propos de Seigo : il faut pas imposer le rythme ubuntu aux autres projets libres. Il faut du temps pour faire un logiciel de qualité, et pour ma part je préfère un logiciel robuste et fini qu’un snapshot en attente de patch : si vous voulez les dernières nouveautés pourquoi ne pas essayer des distrubutions comme archlinux ou les version "devel" des distributions plus "user-friendly" comme ubuntu ?.

  14. skysk8er

    J’ai donc bien fait de rester sous Gutsy 😉

  15. VV666

    @Sardem FF7

    J’ai eu la même réflexion que toi sur un forum et on ma rétorqué la même chose (Omnisilver).
    Je te comprend, pourquoi ça marche chez moi et pas chez les autres ???? Question de config bien sur !

    Chez moi aussi Pulsaudio marche bien, mais j’ai découvert d’autre bug vraiment majeurs. Exemple, compiz-fusion plante 1 fois par jour… Pourquoi ??? J’en sais rien, c’est comme ça.

    C’est vrai que les promesse de stabilité d’Hardy ne sont pas toujours tenu, J’ai moi aussi pensé au SP1 XP quand ils ont annoncé la 8.04.1 !
    Valait mieux avoir 10 jour de retard ou même 1 mois ! Tant pis pour la date….

    Si Ubuntu tourne comme les OS proprio avec MAJ après la sortie officiel pour STABILISER le système et non pas corriger des bug mineur, je me verrai obligé de changer de distro, et pourtant, j’aime bien Ubuntu !

    Le libre qui est constamment en développement permet paradoxalement de garantir la stabilité, et même plus que les monde proprio. Pourquoi ne pas en profiter ???

  16. kilaam

    J’ai eu la mauvaise idée de mettre à jour Ubuntu en 8.04 et c’est vraiment pourri. Je retrouve tous les problèmes (que le support via forum n’avait pas résolu) de la version 6.06 LTS… J’aurais du m’en tenir à la version 7.x qui réglait tout.

    Maintenant, je regarde vers Mandriva actuellement. Dommage, car cette distribution semblait avoir de l’avenir.

  17. Telimektar

    Les remarques de Shuttleworth m’étonne à peine, venant du fondateur d’une distribution qui ignore la notion d’upstream.
    Please don’t feed the troll, c’est une constatation…
    Alors peut-être que Canonical place ses chèques en marketing et RH et Novell en R&D, c’est un choix que je respecte, mais dans ce cas là, ce n’est pas la peine de venir donner des lecons sur la gestion du développement.