La communauté Gandi Le lab des experts

Rejoignez la communauté Rust (et devenez un « rustacé »)

Les atouts et la communauté Rust

Rust pourrait être un langage de programmation parmi tant d’autres, avec un champ d’application très large et l’ambition d’être aussi fiable que pratique. Mais ce langage relativement jeune (sa première version n’apparaît qu’en 2010) semble pouvoir compter sur une communauté d’utilisateurs particulièrement active et enthousiaste, notamment en France.

Gandi a ainsi eu le plaisir d’accueillir les meetups #51 et #52 dans ses locaux, l’occasion de faire plus ample connaissance avec ceux qu’on appelle les “rustacés” (rustaceans en anglais) et essayer de lister les atouts de Rust dans l’environnement tech actuel. Nous avons interrogé Guillaume Gomez, “Rustdoc team leader” ainsi qu’Aurélia et Axel de chez Gandi, deux évangélistes de Rust et artisans du parfait déroulement de ces éditions du Meetup.

Rust, un langage qui a appris de ses prédécesseurs

Le principal atout de Rust est sa relative jeunesse et donc sa capacité à soigneusement éviter les écueils de ses prédécesseurs comme C ou C++, que ce soit en termes techniques ou organisationnels. On pourrait penser que Rust n’a pas beaucoup d’expérience mais il a, en tout cas, su exploiter celle des langages plus anciens.

Rust comme réponse technique aux limites des langages précédents

La genèse de Rust montre clairement la volonté de ses concepteurs de résoudre un problème hérité des langages historiques : Graydon Hoare, créateur de Rust, alors employé de Mozilla, commence à travailler sur ce projet en 2006 pour pallier certaines difficultés.

“Rust a été créé à partir d’un constat venant du développement de Firefox (bien qu’on le retrouve dans n’importe quel gros projet écrit en C/C++) : la gestion de la mémoire est beaucoup trop difficile”, précise Guillaume Gomez. “La majorité des failles de sécurité des logiciels viennent de là et, malgré tous les outils dont on dispose, cela ne semble pas améliorer la situation.” 

Il faut donc imaginer un langage capable de se prémunir contre ces risques sans coût à l’exécution.“Les concepts de « propriété » (NDLR « ownership » en anglais) et de « durée de vie » et bien évidemment le « borrow checker » permettent d’empêcher ces erreurs avant même que le programme ne soit compilé”, ajoute Guillaume Gomez.

C’est un constat similaire qui mène Axel à Rust dès 2013, ce langage est rapidement identifié comme la promesse d’une solution aux erreurs mémoires usuelles en C.

Ce n’était pas stable et changeait encore souvent mais c’était juste l’avenir à mes yeux.” 

Selon lui, Rust était, à l’époque, une bonne synthèse de ce qu’on pouvait faire de mieux en intégrant des notions qui seraient nouvelles pour un programmateur système mais déjà théorisée par les chercheurs.

Outre cette notion de “propriété” en réponse à un problème particulier des langages plus anciens, Rust se caractérise par son usage de concepts éprouvés par d’autres langages sans intégrer de notions nouvelles, d’une certaine manière, un “nain sur des épaules de géant” capable de faire la synthèse des réussites et des erreurs passées. C’est aussi cet aspect qui en a fait, un temps, un potentiel successeur de langages plus installés comme C++ par exemple, si tant est qu’on puisse « remplacer » un langage.

Rust comme modèle d’évolution participative

C’est l’une des spécificités de Rust et la preuve, une fois encore, que ce langage a su apprendre de ses glorieux aînés : le mode d’évolution de Rust (et donc d’une certaine manière sa gouvernance) est soumis à une procédure baptisée Request For Comments, ou RFC. Cette dernière permet à chacun(e) de proposer des changements et de les soumettre à la communauté. La communauté décidera éventuellement d’implémenter cette évolution, amendée ou non, et de la communiquer largement.

Rust a trouvé son public

Ce sont vraisemblablement ces spécificités qui ont favorisé son adoption, d’abord parmi les développeurs aguerris, puis progressivement par les débutants qui découvrent de plus en plus la relative accessibilité de ce langage.

Essayer Rust, c’est l’adopter

C’est certainement un des phénomènes les plus notables concernant Rust : l’affection que ses utilisateurs lui portent. Voilà plusieurs années que Rust caracole en tête du classement des langages plébiscités par les développeurs qui ont déjà eu à travailler avec selon une étude menée chaque année par Stack Overflow.

Si Python ou Javascript demeurent les outils les plus utilisés et les plus prisés par les débutants, Rust est celui qui marque positivement ceux qui ont fait l’effort de s’y intéresser.

“Je ne jurais que par le C++. Après quelques mois d’utilisation, il m’était impossible de revenir en arrière.” évoque Guillaume Gomez.

communauté rust : les langages préférés des développeurs

Les raisons de cette fidélité des utilisateurs à Rust sont multiples : la documentation fournie, les erreurs du compilateur qui aident énormément, un tooling très bien fait qui permet de gérer simplement les dépendances et le fait que, selon Guillaume Gomez, “quand ça compile ça fonctionne”, ce qui est particulièrement appréciable.

Ce même rapport de Stack Overflow nous confirme que Rust gagne du terrain auprès des développeurs professionnels et est adopté en 2021 par 6,4% d’entre eux (contre 4,8% en 2020 et 3% en 2019).

Débuter avec Rust

Si, pendant longtemps, la majorité des utilisateurs de Rust venaient de C et C++ pour les raisons techniques évoquées précédemment, la communauté semble accueillir de plus en plus de profils moins expérimentés, c’est en tout cas ce que Guillaume Gomez observe sur les forums consacrés au sujet. Beaucoup de curieux sont manifestement séduits par l’esprit d’entraide qui règne au sein de la communauté Rust et ont, pour certains, été encouragés à se tourner vers Rust comme premier langage pour les vertus pédagogiques de celui-ci : comme C ou C++, et à la différence de langages plus “intuitifs” comme Python, Rust force son utilisateur à comprendre comment fonctionne la machine, ce qui pose les bases solides d’un apprentissage exhaustif de l’informatique.

Néanmoins, ce langage a les défauts de ses qualités et la difficulté conceptuelle que représente les notions d’“ownership” et de “borrowing” (“propriété” et “emprunt”), qui sont justement parmi les spécificités de Rust, peut constituer une difficulté quand on commence. Axel, qui a une expérience d’enseignant, suggère Rust comme deuxième langage de programmation, ou en parallèle d’un langage plus abordable.

La communauté Rust mobilisée

Cause ou conséquence de cette affection et de cet intérêt grandissant : le développement d’une communauté active autour de Rust qui témoigne d’un état d’esprit bienveillant et solidaire. 

Une communauté plurielle

Ce qui caractérise la communauté des “rustaceans”, et ce qui témoigne de son bouillonnement, c’est sa propension à se spécialiser selon les domaines : “Il y a des communautés par thématique comme « l’embarqué », etc. Au sein même du compilateur, on peut considérer qu’il y a aussi plusieurs communautés : ceux qui bossent sur les basses couches du compilateur, ceux qui bossent sur les erreurs, sur la doc, etc., décrit Guillaume Gomez. Cependant ce qui est intéressant, c’est que toutes ces communautés se recoupent et interagissent très fréquemment et dans un bon esprit d’entraide.” 

Une communauté Rust francophone active

Guillaume Gomez précise que cette capillarité des communautés se fait également aux niveaux géographique et linguistique. Il y a des rencontres physiques entre utilisateurs de Rust au niveau local à New York, Tokyo ou même en Iran. Et dans cette distribution planétaire des “rustaceans”, la France s’en sort très bien avec des événements dans différentes villes, à Nantes, Montpellier ou Paris notamment.

“Le Rust Paris meetup en est un bon exemple. Il y a aussi beaucoup de Français qui contribuent directement sur le langage et certains possèdent des crates parmi les plus populaires de l’écosystème Rust. Je pense que la France a l’une des plus grosses communautés du monde d’ailleurs.”

Meetup rust paris 2022-08 communauté Rust
51ème Meetup Paris Rust, dans les locaux de Gandi

De l’entraide et des ressources multiples

Ces communautés sont diverses dans leurs centres d’intérêts et leurs localisations, mais toutes semblent guidées par un état d’esprit particulier tourné vers l’entraide et la mise à disposition de ressources pour permettre à tous de progresser. 

En 2019, Gandi avait eu le plaisir d’assister à la RustConf de Portland. Nous avions été marqués par l’importance donnée à la communauté Rust dans les conférences et à la nécessité de faire en sorte que cette communauté soit un espace accueillant pour les personnes de toute identité, où les gens sont amicaux et prêts à aider.

Le portail pour se lancer, trouver de la documentation ou suivre l’actualité des différentes communauté est sur le site rust-lang, notamment The Book, ouvrage synthétique sur les aspects théoriques et la syntaxe de ce langage et Rustlings qui permet de s’exercer à utiliser Rust.

Rust a donc tout pour plaire, répondant aux attentes des développeurs aguerris et permettant aux débutants de se familiariser avec des concepts subtils grâce à une riche documentation et des communautés investies, ce langage s’impose peu à peu avec le meilleur indicateur imaginable : la satisfaction de ceux qui ont eu à l’utiliser. 

Chez Gandi, nous exploitons Rust en production depuis 2017. Chaque fois que nos serveurs répondent à des requêtes DNS, par exemple, ils utilisent du Rust.

Alors, on peut compter sur votre présence au prochain meetup qui sera organisé près de chez vous ?