URL: https://linuxfr.org/users/patrick_g/journaux/linux-ou-posix Title: Linux ou POSIX ? Authors: patrick_g Date: 2011年01月26日T00:40:24+01:00 Tags: lennart_poettering, posix et fosdem Score: 59 [POSIX](http://fr.wikipedia.org/wiki/Posix) c'est le standard officiel qui définit les interfaces communes à tous les systèmes de type [Unix](http://fr.wikipedia.org/wiki/UNIX). Quand vous voulez que votre programme fonctionne sur tous les Unix alors vous codez en respectant les interfaces POSIX et hop, magique, vous êtes compatible avec Linux, les BSD, Solaris, etc. Bien entendu c'est une contrainte puisqu'on doit se limiter au plus petit dénominateur commun et on ne peut plus utiliser les spécificités techniques de chaque plateforme. Ou alors on fait des chemins spécifiques dans le code pour chacun des OS mais on le paye en temps de développement, facilité de relecture, nombre de bugs, etc. Cette question de la portabilité du code entre les différents OS a été évoquée récemment à l'occasion de la sortie de l'environnement de bureau [Xfce 4.8](http://linuxfr.org//2011/01/18/27785.html). Dans [l'annonce officielle](http://www.xfce.org/about/news/?post=1295136000) il était dit que les systèmes BSD allait perdre des fonctionnalités puisque Xfce utilisait des composants n'existant que sous Linux (comme udev, consolekit, policykit, etc). Un [post plus détaillé](http://gezeiten.org/post/2011/01/Xfce-4.8-on-BSD-flavors) a été publié pour bien expliquer le problème qui se pose. L'infrastructure qui entoure Linux est très mouvante puisque la philosophie des développeurs est de ne pas avoir peur de changer les choses si on peut améliorer un point. Cette philosophie est mal vécue par les adeptes des systèmes BSD qui sont souvent plus conservateurs et qui manquent de main d'oeuvre pour suivre le rythme des changements. Quand on lit les commentaires l'opposition se résume souvent à "_Sous Linux c'est pourri car tout change d'une année sur l'autre_" contre "_Si les BSD veulent que ça fonctionne chez eux il faut qu'ils se réveillent et qu'il participent au lieu de chouiner dans leur coin_". Alors que faire ? Doit-on choisir de se limiter à POSIX ou bien ne coder que pour Linux en se disant que les autres suivront ? Nous ne sommes pas vendredi et c'est bien dommage car [l'interview qu'a donné Lennart Poettering](http://fosdem.org/2011/interview/lennart-poettering) à l'occasion du [FOSDEM](http://fosdem.org/2011/) est un petit bijou de provocation sur ce sujet. Lennart évoque [systemd](http://en.wikipedia.org/wiki/Systemd) (le démon init qu'il écrit pour remplacer [sysvinit](http://en.wikipedia.org/wiki/Sysvinit)) et il détaille toutes les fonctions du noyau Linux qu'il exploite dans son code. Que ce soit cgroups, udev, fanotify, timerfd, signalfd, etc, on voit que systemd s'appuie à fond sur du code spécifique à Linux et qu'il serait extrêmement difficile de le porter sur un autre système. Selon lui le fait d'utiliser toutes ces interfaces modernes au lieu de se limiter aux interfaces classiques POSIX est un énorme avantage: "_Ne pas avoir à se préoccuper de la portabilité à deux gros avantages: Nous pouvons utiliser ce que nous offre un noyau Linux moderne sans nous prendre la tête - Linux est un des noyaux les plus complets qui existe mais beaucoup de ses fonctions ne sont pas exploitées par les autres solutions d'init. Et deuxièmement cela simplifie grandement notre code et le rend plus compact. Comme nous n'avons pas à construire des abstractions d'OS la quantité de code glue est minimale et nous avons moins de chance d'introduire des bugs, moins de chance de désorienter le lecteur du code (donc amélioration de la maintenabilité) et une empreinte réduite_". Jusque là tout va bien et, même si les utilisateurs des autres systèmes regrettent sans doute cet abandon de la portabilité, Lennart est dans son droit d'écrire son code comme il le veut. Là ou c'est plus tangent c'est quand il recommande joyeusement aux autres de faire comme lui: "_En fait, de la façon dont je vois les choses, l'API Linux joue maintenant le rôle de l'API POSIX et Linux est devenu le point focal de tout le développement du logiciel libre. De ce fait je ne peux que recommander aux développeurs d'essayer de hacker avec seulement Linux en tête et de faire l'expérience de la liberté que cela apporte et des opportunités que cela vous ouvre. Procurez-vous une copie du livre "[The Linux Programming Interface](http://man7.org/tlpi/)", ne vous préoccupez pas de tout ce qui est écrit dedans au sujet de la compatibilité POSIX et écrivez votre super logiciel Linux. Ça soulage !_". Je ne sais pas si ça soulage mais en tout cas ce n'est pas avec ce genre d'appel qu'il va se faire des amis chez les BSDphiles.