FOSDEM 2025 : reportage, 1ere partie
Le FOSDEM est le plus grand événement open source et des communautés ouvertes d'Europe : +600 sessions, +600 intervenants, 40 salles, +9 000 personnes ! Le FOSDEM est à la fois excitant et frustrant. Excitant car il représentel'état de l'art de l'open source et frustrant, car il est impossible de tout voir. Le campus de l'Université Libre de Bruxelles est très grand et il faut souvent passer d'un bâtiment à un autre pour les sessions. Programmez ! était sur place les 1er et 2 février. Nous proposons un reportage en plusieurs parties.
Lessons from rewriting systems software in Rust
Si Go suscitait un large engouement, avec +650 personnes durant la session State of Go 2025, la track Rust n'était pas à négliger. Nous sommes allés voir la session Lessons from rewriting systems software in Rust. Il s'agit plus d'un retour terrain que d'une séance de pur code. Pour leur projet de logiciel système, les équipes ont opté pour Rust et non pour du C. Un logiciel système est un logiciel sur lequel on construit une plateforme pour exécuter d'autres logiciels.
Faut-il le généraliser à tous les projets ? Comme le disait en introduction Ruben Nijveld, il faut choisir ses combats, tous les projets ne nécessitent pas une réécriture. Si vous optez pour une réécriture en Rust, plusieurs réalités tempèrent ce choix :
- une réécriture en Rust ne suffit pas à justifier le projet
- attention aux éléments négatifs que cela peut engendrer : diviser vos développeurs, les utilisateurs ne voient pas le changement
- mettre en avant le positif
- ne pas en faire un projet uniquement technique pour se faire plaisir
L'autre question qui arrive très vite : pourquoi tel projet et pas un autre ? Répondre à cette question permet de donner une priorité à un code ou une application par rapport aux autres. Mais de là vient une autre question : quel argument avancer pour justifier la nouvelle implémentation ? Bref : comment vendre votre réécriture auprès des équipes, de la direction et des utilisateurs si besoin ? L'argument "Rust réduit les problèmes de mémoire, il est considéré comme safe" n'est pas suffisant. La sécurité, la gestion de la mémoire sont des arguments valables, mais ce n'est qu'une partie du problème.
Rust est plus performant ? En soi, oui, mais peut-être que le code unsafe est tout aussi performant. Il faut trouver un équilibre entre sécurité, utilisabilité et performance. Si vous misez sur le safe code et les performances, vous devez mesurer et prouver cela par rapport au code actuel. Dire que cargo run --release
est rapide, ce n'est pas suffisant.
La stabilité est un argument à manier avec prudence. Ruben dit que l'on peut penser aux fuites de mémoire pour justifier Rust, mais attention : est-ce que j'ai une stabilité de l'API sur la durée ou est-ce incertain ? Voici les deux approches opposées :
- je dois redémarrer le web worker au bout de 1 000 requêtes pour éviter les problèmes mémoires : c'est pas top !
- écrire un code sans fuites mémoires : c'est top !
Si vous décidez de réécrire, restez concentré sur l'objectif. Cela permettra de dynamiser le projet, d'avoir une direction claire et d'aider les autres développeurs. Soyez le moteur du changement, aidez les autres, documentez ce qui fonctionne, ce qui ne fonctionne pas.
Une réécriture, une nouvelle implémentation, est toujours un projet difficile qui peut vite déraper et échouer :
- fonctionner par itération pour évaluer l'avancement du chantier et voir les points de frictions
- prendre le temps nécessaire : une réécriture est toujours longue et difficile, un planning trop serré fera échouer le projet
- plusieurs points sont à surveiller : la documentation, les dépendances, la distribution / déploiement du code final
La documentation est importante : documenter le projet, commenter le code, générer régulièrement la documentation technique avec Rustdoc. Communiquez vers les utilisateurs pour les tenir au courant, les rassurer.
Ne sous-estimez pas la gestion des dépendances. Les dépendances sont les hell dll modernes ! Elles sont là pour vous aider, résoudre des problèmes à votre place. L'écosystème Rust est très riche en librairies : utilisez-les !
Mais attention :
- prenez uniquement les dépendances nécessaires
- il y a risque de confiance et de sécurité : vérifier l'origine de chaque dépendance et avoir confiance envers les mainteneurs
- les dépendances sont indépendantes de votre vision, de votre chantier : elles vivent leurs vies de leur côté
Avoir confiance c'est bien mais VERIFIER c'est encore mieux ! N'oubliez jamais que les dépendances font parties de votre application et donc du cycle de vie de votre projet ! Ayez une stratégie de gestion claire des dépendances dès le départ.
Voilà, mon app à la sauce Rust est prête. Il faut maintenant passer à la distribution, au déploiement. Est-ce que publier sur crates.io est suffisant ? NON ! Les utilisateurs ne sont pas des développeurs Rust. Et ils n'ont pas besoin de le connaître ni de manipuler une CLI ! cargo install n'est pas un mécanisme de distribution et d'installation pour les utilisateurs finaux. Vous devez donc penser binaires, fichiers d'installation pour distribuer facilement. Créez les packages nécessaires. vérifiez aussi que le nom soit disponible sur crate pour éviter toute mauvaise surprise.
![](https://www.programmez.com/sites/default/files/fosdem1.jpg)