Sans huile dans le moteur, Linux risque de rouiller
La semaine dernière, Wedson Almeida Filho, l’un des principaux collaborateurs du projet Rust for Linux, a décidé d’arrêter de travailler sur l’intégration de ce langage dans le noyau libre. En cause, son «
manque d’énergie et d’enthousiasme
» face à des problèmes qui, selon lui, relèvent d’ «
absurdités non techniques
», confirmant les difficultés de relations humaines qui entourent la gestion du noyau Linux.
Wedson Almeida Filho, l’un des responsables de l’équipe chargée d’encadrer l’utilisation du langage Rust dans le noyau Linux, a annoncé son départ la semaine dernière sur la
liste de discussion
du projet. Cet ingénieur de Microsoft explique qu’ «
après presque 4 ans,
[il n’a]
plus l’énergie et l’enthousiasme qu’
[il avait]
autrefois pour répondre à certaines des absurdités non techniques
».
Ce langage est de plus en plus utilisé dans des projets critiques pour assurer une gestion de la mémoire plus robuste. La DARPA l’utilise par exemple, ayant pour ambition d’éliminer «
une fois pour toutes les vulnérabilités liées à la sécurité de la mémoire
» et a même
lancé
un projet pour traduire automatiquement le code C/C++ en Rust. La Maison-Blanche
exhorte même les développeurs
à se mettre au Rust.
Une intégration qui prend du retard
Débuté en 2020, le projet
Rust for Linux
a pour ambition d’aider à augmenter encore la sécurité du noyau le plus connu du logiciel libre. En avril 2021, travaillant alors dans l’équipe Android de Google, Wedson Almeida Filho
affirmait
dans un billet de blog : «
nous pensons que Rust est maintenant prêt à rejoindre le langage C en tant que langage pratique pour l’implémentation du noyau. Il peut nous aider à réduire le nombre de bugs potentiels et de vulnérabilités de sécurité dans le code privilégié, tout en s’intégrant proprement avec le noyau central et en préservant ses caractéristiques de performances
».
Mais il a fallu attendre fin 2023 pour que le langage s’insère pour la première fois dans la version 6.8 du noyau via un
driver réseau
, comme l’expliquent le chercheur Hongyu Li et ses collègues, dans une
étude
de l’intégration du langage dans le noyau publiée début juillet. Linus Torvalds, le créateur de Linux et toujours responsable de son développement, avait pourtant
annoncé
cette intégration pour la version 6.1.
Altercation virulente entre développeurs C et Rust
Mais ce retard ne mine pas la confiance de Wedson Almeida Filho dans l’utilité de Rust pour écrire des noyaux robustes. Au contraire, il affirme dans son message : «
je crois vraiment que l’avenir des noyaux passe par des langages à mémoire sécurisée
». Il ajoute même que Linux pourrait se faire dépasser par d’autres noyaux : «
je ne suis pas un visionnaire, mais si Linux n’intériorise pas cela, je crains qu’un autre noyau ne lui fasse ce qu’il a fait à Unix
».
Wedson Almeida Filho intègre aussi dans son message un lien vers une
vidéo
filmée en mai lors de la conférence Linux Storage, Filesystem, Memory-Management, and BPF Summit. Le passage qu’il pointe montre une discussion difficile entre l’ingénieur et un de ses collègues, Ted Ts’o, qui l’accuse de vouloir «
convaincre tous les autres de s’orienter vers une religion promue par Rust
».
«
Et la réalité, c’est que ça ne va pas arriver, car nous avons plus de 50 systèmes de fichiers dans Linux qui ne vont pas être convertis immédiatement en Rust. Avant ça, nous allons continuer à réécrire du code C, car nous voulons que le code en C soit meilleur
», argumentait le second. Il avait ajouté : «
vous n’allez pas tous nous forcer à apprendre Rust
».
Des développeurs Rust solidaires
Comme l’a
repéré
ArsTechnica, la développeuse Asahi Lina (responsable du projet Asahi Linux) a
partagé
un avis similaire à celui de Filho en le soutenant : «
je comprends malheureusement tout à fait les frustrations de Wedson
».
Elle évoque son expérience lorsqu’elle a voulu proposer des modifications au
Direct Rendering Manager
(DRM) de Linux : «
lorsque j’ai essayé d’apporter en amont des corrections mineures au code C pour rendre le comportement plus robuste et les exigences de durée de vie plus raisonnables, le mainteneur l’a bloqué et a dit que je devais simplement faire « ce que font les autres pilotes »
». Elle ajoute qu’ «
un sous-ensemble de développeurs du noyau C semble déterminé à rendre la vie des mainteneurs de Rust aussi difficile que possible
».
«
À ce jour, des bugs dans l’ordonnanceur du DRM ont été les seules causes de kernel panics déclenchées par le pilote de mon GPU Apple en production
[…] », explique Asahi Lina, «
parce que je code en Rust
».
Dans un
billet
de blog, Drew DeVault, le fondateur de la plateforme d’outils open source
Source Hut
, suggère aux développeurs Rust de développer un noyau compatible Linux à partir de zéro. Ceci devrait, selon lui, les libérer des batailles politiques des mailing lists du noyau Linux. Celles-ci seraient plus un «
far west
» qu’un milieu «
enthousiaste et prêt à accueillir en son sein des innovateurs motivés pour faciliter cet impact
».
Constat désemparé de Linus Torvalds
Ce n’est pas le premier conflit interpersonnel à surgir dans le projet du noyau Linux. Linus Torvalds a lui-même installé pendant longtemps un climat brutal dans ses conversations, qu’elles soient internes ou externes. En 2018, il avait envoyé un
message
d’excuses.«
Je vais prendre du temps pour moi et demander de l’aide pour comprendre les émotions des autres et comment y répondre de manière appropriée
», annonçait-il.
Torvalds
expliquait
à Zdnet au mois d’aout : «
je m’attendais à ce que les mises à jour soient plus rapides, mais le problème réside en partie dans le fait que les développeurs de noyau de longue date sont habitués au C et ne connaissent pas Rust. Ils ne sont pas vraiment enthousiastes à l’idée de devoir apprendre un nouveau langage qui est, à certains égards, très différent. Il y a donc eu des réactions négatives à l’égard de Rust
». Il ajoutait cependant qu’ «
une autre raison est que l’infrastructure Rust elle-même n’a pas été très stable
».
Le créateur de Rust, Steve Klabnik, a
commenté
sur Bluesky : «
des responsables du noyau Linux se comportent si mal que d’autres abandonnent. Windows se contente de livrer discrètement du code Rust. Nous verrons comment tout cela va se dérouler…
»