URL: https://linuxfr.org/users/patrick_g/journaux/gnome-seulement-compatible-avec-linux Title: GNOME seulement compatible avec Linux ? Authors: patrick_g Date: 2011年05月18日T22:06:47+02:00 License: CC By-SA Tags: systemd, gnome, troll, lennart_poettering, debian, fedora et rpm Score: 75 Tout se perd ma bonne dame et les traditions ancestrales ne sont plus respectées. Alors que nous sommes encore à plus de 26 heures du vendredi fatidique [un troll magistral](http://mail.gnome.org/archives/desktop-devel-list/2011-May/thread.html), épique même, a débuté sur la liste de diffusion du projet GNOME. Tout est parti d'un [mail de Lennart Poettering](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00427.html) intitulé « _systemd as external dependency_ » dans lequel notre brave ~~trolleur~~ développeur proposait tout simplement que GNOME accepte systemd en tant que dépendance et devienne, donc, de ce fait, incompatible avec les systèmes sur lesquels systemd n'existe pas (les BSDs par exemple). L'idée de Lennart est de se servir de systemd pour améliorer le fonctionnement général de GNOME. Il propose par exemple de faire gérer les sessions par son démon ou de lancer les applications automatiquement dans des cgroups. Selon lui ce sera un progrès qualitatif sensible que d'interfacer ainsi un bureau avec un système init aussi moderne et versatile que systemd. La vitesse de démarrage de la session serait aussi largement augmentée si c'est systemd qui prenait en charge cette tâche. Bien entendu il aborde le sujet de la compatibilité mais c'est pour l'évacuer aussitôt [en affirmant](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00427.html):>systemd est compatible uniquement avec Linux. Cela signifie que si nous continuons à nous préoccuper des plate-formes non Linux alors des logiciels de remplacement devront être écrits. Josselin Mouette, développeur Debian bien connu, lui a rétorqué que l'abandon de la compatibilité avec tout ce qui n'est pas Linux était [inacceptable](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00432.html):>Je n'ai rien contre le fait de requérir systemd, c'est certainement le meilleur système d'init qui est disponible actuellement. Mais la dépendance sur Linux est complètement inacceptable pour nous. Avoir des fonctionnalités optionnelles qui ne sont compatibles qu'avec Linux c'est OK. Exiger Linux cela ne l'est pas. [Réponse brutale de Lennart](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00434.html):>A la lumière du projet GNOME OS je pense que nous devons nous poser la question à nous même de savoir si il est positif pour le projet de continuer à supporter tous ces noyaux qui ne peuvent pas suivre le rythme de Linux. Nous arrivons ici au coeur de la controverse. Le noeud du problème c'est que le rythme d'évolution du noyau Linux est extrêmement rapide et n'a plus rien à voir avec le train de sénateur des autres systèmes d'exploitations libres. Pour prendre un exemple la technologie qui permet d'avoir la « gestion dynamique des interruptions » date du noyau Linux 2.6.21 (option `CONFIG_NO_HZ`). Avec ça vous pouvez avoir un système qui va arrêter complètement les réveils périodiques (_tickless kernel_). Tout ça date d'avril 2007 soit il y a plus de **quatre ans** maintenant. En comparaison le système FeeeBSD, le plus avancé des BSDs sur cette question, va _peut-être_ proposer un noyau tickless avec la _future_ version 9.0. Selon l'excellente page « [What's cooking for FreeBSD 9 ?](http://ivoras.net/freebsd/freebsd9.html) » la réécriture de l'infrastructure des timers est effectuée mais le tickless kernel n'a que le tag « probably ». Qu'on le veuille ou non il va donc y a voir de plus en plus de tensions entre ceux qui veulent profiter des nouvelles fonctions excitantes implémentées dans Linux et ceux qui préfèrent préserver la compatibilité à tout prix en se limitant au plus petit dénominateur commun ou en ayant des chemins de code différents. En même cette solution n'est pas toujours possible. Après [le mail de Josselin](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00436.html):>Jusqu'à présent rien n'a empêché GNOME de fonctionner sur un BSD, et ajouter une dépendance à Linux juste parce que tu ne veux pas maintenir quelques #ifdef dans systemd serait une grande perte. Lennart [a eu beau jeu](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00447.html) de souligner que systemd utilisait à fond des dizaines de fonctions spécifiques de Linux et qu'il ne s'agissait nullement d'ajouter quelques bifurcations dans le code:>Il ne s'agit pas de quelques #ifedf. Laisse moi lister quelques interfaces Linux que nous utilisons dans systemd et pour lesquelles il faudrait trouver des remplacements:>`cgroups`>`timerfd`>`signalfd`>`epoll`>`autofs4`>`inotify`>`fanotify`>`/proc/*/stat`>`/proc/*/comm`>`/proc/*/cmdline`>`libudev`>`POSIX mqueue comme fd`>`AF_UNIX/SOCK_SEQPACKET`>`espace de nommage abstrait AF_UNIX`>`get_current_dir_name()`>`canonicalize_file_name()`>`O_CLOEXEC/SOCK_CLOEXEC`>`/proc/*/fd`>`des tonnes de contrôles prctl() comme PR_SET_NAME, PR_CAPBSET_DROP, PR_SET_PDEATHSIG, ...`>`capabilities`>`des quantités d'ioctls, comme TIOCLINUX, VT_ACTIVATE, TIOCSTTY/TIOCNOTTY ...`>`/sys`>`/dev/urandom`>`/dev/char/*, /dev/disk/by-label/*, /dev/disk/by-uuid/*`>`openat() et toutes les variantes`>`O_DIRECTORY`>`waitid()`>`/sys/class/tty/console/active`>`/sys/class/dmi/id`>`ioprio`>`toutes les rlimits, comme RTPRIO/RTTIME`>`F_SETPIPE_SZ`>`IP_FREEBIND`>`oom score`>`binfmt_misc`>Bien entendu certaines de ces fonctions seraient faciles à émuler ou bien ont des contreparties évidentes chez les autres OS, mais ce que je voulais montrer c'est qu'il ne s'agit en rien de quelques #ifdef. Il faudrait en mettre dans chaque ligne de systemd et je ne voudrais pas maintenir un tel monstre.>Ceci dit git est votre ami. Si des gens veulent porter ça sur d'autres systèmes il sont les bienvenus. Mais je ne partagerai pas votre souffrance si vous vous lancez. [Il a été pointé](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00455.html) que le manque de bonne volonté de Lennart rendait les choses difficiles et décourageait les bonnes volontés des éventuels volontaires pour le portage:>Les gens ne feront pas ce boulot parce que tu a choisi de leur faire un doigt dès le début.>C'est la raison principale pour laquelle nous ne pouvons pas utiliser systemd dans Debian. Cela impliquerai, pour chaque paquet d'un démon, de fournir un script d'init sysv pour insserv un service systemd. Donc nous sommes coincés, au mieux, à devoir utiliser le plus petit dénominateur commun entre les différents systèmes d'init.>Au final ce comportement ne rend pas seulement la vie des volontaires pour le portage impossible. Cela dessert aussi l'adoption de ton logiciel. [Lennart a répliqué](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00456.html) que Debian kFreeBSD ne devait pas se transformer en boulet empêchant l'innovation:>Je ne rend pas les choses plus difficiles. C'est vous mêmes qui vous rendez les choses difficiles. Debian kFreeBSD est un système d'exploitation jouet (toy OS). Environ 10 personnes sur cette planète l'utilisent. A peu près 0,4 de ces personnes fait tourner GNOME dessus. Et, sur cette demi-personne, seulement 0,2 s'attend à ce que ça marche correctement.>Je ne suis pas certain de comprendre pourquoi vous me demandez de m'intéresser à cet OS joujou. Je ne suis pas certain de comprendre pourquoi vous vous attendez à ce que votre intérêt pour ce système fixe l'agenda du projet GNOME. Outre l'immense travail que nécessiterait une adaptation de systemd aux autres systèmes, [Lennart a souligné](http://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00451.html) que son objectif était de se servir de son démon comme un moyen pour standardiser certains fichiers de configuration. Cet objectif serait remis en cause si les autres OS avaient la possibilité de tout bloquer:>C'est du logiciel libre. Vous pouvez toujours démarrer votre projet, mais en définitive je ne pense pas que ce soit sensé pour moi de supporter tout ce travail de portage dans mon dépôt. Et n'oubliez pas que nous pourrions être amenés à utiliser systemd comme un moyen de standardiser des fichiers de configuration et que j'ai des doutes sérieux que nous puissions faire accepter ça aux autres noyaux. Par exemple si nous disons que `/etc/locale.conf` est le seul endroit ou on peut définir les paramètres des locales alors je doute sérieusement que les gars des BSDs ou de Solaris seront enthousiastes pour faire ça. Voilà ou nous en sommes actuellement dans le monstro-thread lançé par Lennart. Il n'y a évidemment pas de décision de prise et, à la lecture des réactions, il semble fort probable que la proposition d'ajout de systemd comme une dépendance de GNOME sera rejetée...pour cette fois. Si systemd démontre qu'il est vraiment supérieur à tout ce qui existe, si les fonctions qu'il apporte aux utilisateurs sont réellement uniques alors la tentation sera grande pour le bureau GNOME de profiter de ces bienfaits et de basculer complètement vers ce système. Nous verrons bien. Et en attendant j'ai envoyé une demande d'interview à Lennart histoire de finir d'exaspérer complètement le squad ;-)