- L’adoption de Rust par Ubuntu montre que, dans le cycle d’adoption des technologies, Rust est en train de passer des early adopters au grand public du marché, en franchissant le gouffre
- Canonical a adopté Rust comme langage par défaut pour les nouveaux logiciels d’infrastructure, en remplacement de certains usages de C, C++ et Python, tout en investissant à la fois financièrement et en réputation dans le développement d’utilitaires sûrs en mémoire
- Comme les utilisateurs de la majorité précoce (Early Majority) veulent des « standards du secteur » et de la compatibilité avec les workflows existants, le remplacement d’utilitaires en mode drop-in est une stratégie clé pour franchir ce gouffre
- La question de l’extension de la bibliothèque standard de Rust revient sur le devant de la scène, avec une réévaluation de l’idée de « Rust Platform », rejetée en 2016, qui pourrait en réalité mieux convenir à la majorité précoce
- Une structure capable de transformer l’adoption en investissement, ainsi que la capacité d’inclusion fondée sur l’empathie de la communauté open source, sont essentielles pour la prochaine phase de croissance de Rust
Le « franchissement du gouffre » de Rust varie selon les domaines
- Le fait que Rust ait franchi le gouffre dans le Technology Adoption Life Cycle dépend du domaine considéré
- Chez Amazon, Rust s’est solidement imposé pour construire de vastes data planes ou des agents sensibles aux ressources, mais il reste souvent perçu comme excessif pour le développement généraliste
- Dans le domaine des Safety Critical Software, il existe des réussites, mais la plupart des acteurs du secteur restent encore en mode observation
L’importance des « clients de référence »
- La clé pour franchir le gouffre est de disposer de clients de référence (reference customers)
- Les premiers adopteurs achètent des agents du changement (change agents), tandis que la majorité précoce cherche à améliorer la productivité de l’existant en minimisant les ruptures
- Voir des organisations similaires réussir est le facteur le plus convaincant pour adopter une nouvelle technologie
- Le succès de Rust au sein de l’équipe S3 est convaincant pour les grandes équipes de services, mais beaucoup moins directement pour les équipes qui développent des services CRUD
La stratégie d’adoption de Rust par Ubuntu (Canonical)
- Lors de Rust Nation, le VP of Engineering de Canonical, Jon Seager, a présenté une keynote intitulée « Rust Adoption At Scale with Ubuntu »
- Canonical limitait jusqu’ici ses langages de développement internes à Python, C/C++ et Go, mais y a récemment ajouté Rust comme langage par défaut pour les nouveaux travaux d’infrastructure
- À l’image de la keynote de Lars Bergstrom sur l’adoption de Rust chez Google, l’approche combine vision et pragmatisme
- C’est précisément le type de caractéristiques nécessaires pour passer des premiers adopteurs à la majorité précoce
Investir dans des utilitaires sûrs en mémoire
- Jon Seager a indiqué qu’Ubuntu devait soutenir la création d’utilitaires fondés sur la sûreté mémoire dans une logique de « pay it forward »
- Canonical finance actuellement le développement de sudo-rs et ntpd-rs au sein de la Trifecta Tech Foundation, ainsi que le travail de uutils sur coreutils
- L’idée est qu’Ubuntu essaie et valide d’abord ces nouveautés, afin que d’autres distributions puissent ensuite en bénéficier
- Les utilitaires drop-in qui s’intègrent tels quels dans les workflows existants répondent au besoin de la majorité précoce de minimiser les discontinuités
Les attentes des nouveaux adopteurs : étendre la bibliothèque standard
- Lors d’un dîner, Jon Seager a déclaré qu’il fallait réexaminer la politique de petite bibliothèque standard de Rust
- C’est une demande récurrente depuis des années ; il ne s’agit pas simplement de fournir une grande bibliothèque standard, mais d’envisager une alternative sous forme de projet appelée « Battery Packs »
- La Rust Platform proposée en 2016 — l’idée de reconnaître certaines crates comme une bibliothèque standard étendue — avait été rejetée par les premiers adopteurs à l’époque, mais pourrait en réalité convenir à la majorité précoce
- À l’époque, l’opinion dominante était qu’ajouter des dépendances dans
Cargo.toml suffisait
La nécessité de changer pour continuer à croître
- Pour passer des premiers adopteurs à la majorité précoce, le message doit être celui d’un « standard du secteur » et non d’un produit « state-of-the-art »
- Rust a réussi à gagner en reconnaissance dans l’industrie ; désormais, il doit devenir le meilleur choix non pas en fonction de « ce qu’il pourrait être », mais de « ce qu’il est réellement »
- Ces deux dimensions peuvent parfois entrer en tension
- Pour parler aux pragmatiques, il faut de la patience, une compréhension des enjeux du secteur concerné et une présence dans les conférences de l’industrie
Une structure qui transforme l’adoption en investissement
- L’élargissement de l’adoption de Rust entraîne une hausse de la demande envers le projet Rust et son écosystème
- Pour des organisations open source comme Canonical, les relations inter-organisations et les contributions comptent davantage que les $$
- Les développeurs de Rust for Linux ont d’abord été aidés par les maintainers de Rust, puis ils ont progressivement commencé à corriger eux-mêmes les bugs, tandis que les maintainers évoluaient vers un rôle de mentor
- Fait intéressant, les financements proviennent souvent davantage d’entreprises qui envisagent d’adopter Rust que de celles qui l’ont déjà adopté
- Des premiers adopteurs en interne poussent l’adoption dans leur organisation et allouent des budgets au développement de fonctionnalités « table stakes »
- D’après Alexandru Radovici, du Rust Foundation Silver Member Directory, de nombreuses entreprises de logiciels critiques pour la sécurité disposent de financements pour combler les lacunes de Rust, mais ne savent pas comment les utiliser
Le rôle de l’open source et l’importance de l’empathie
- L’open source est une excellente plateforme pour franchir le gouffre, mais les cliques et les « traditions orales » peuvent devenir des barrières à l’entrée
- Une idée peut être rejetée à cause d’un mauvais terme employé, ou une seule réponse impolie peut suffire à faire partir un nouveau contributeur
- Ce dont Rust a le plus besoin pour sa prochaine phase de croissance, c’est d’empathie dans l’open source
- L’essentiel est d’aller là où Rust peut aider les gens, puis de les soutenir et leur donner les moyens d’agir
1 commentaires
Avis sur Hacker News
Le fait qu’Ubuntu utilise un userland sous licence non GPL signifie qu’on pourrait autoriser davantage de TiVoization dans l’écosystème Linux
Combiné à la direction prise par Amutable du camp systemd, cela pourrait faire émerger des distributions Linux fermées que les utilisateurs ne pourraient pas modifier
Du point de vue des entreprises, un environnement fermé avec vérification complète des signatures peut être attractif. Imaginer un monde où même
lsoucddeviennent closed source a quelque chose d’étrangement apocalyptiqueLe vrai gouffre (chasm) que Rust doit franchir, c’est la prise en charge du lien dynamique avec une ABI sûre
Il faut pouvoir modifier une bibliothèque tout en garantissant la sûreté, et obtenir une stabilité d’ABI au niveau du C pour permettre l’adoption de Rust dans le monde C/C++
Plus que l’adoption de Rust par Ubuntu, le vrai problème est qu’ils continuent à gérer des builds importants avec des scripts
curl|bashC’est évident quand on regarde le snapcraft.yaml de firefox-snap
curl|bash, on pense généralement à des modifications de configuration aléatoires ou à des changements dans.bashrc, mais ici il s’agit simplement d’exécuter un script d’installation d’une toolchain statique. C’est très années 90, mais relativement sûrLe fait que le projet Rust Coreutils soit sous licence MIT me dérange
Même si la philosophie de la FSF est parfois critiquée, la GPL protège l’open source. Si Canonical bascule tout Ubuntu vers MIT, difficile de savoir ce qui pourrait arriver
À cause de rust-coreutils, il était impossible d’installer CUDA Toolkit. L’incident est documenté sur le forum NVIDIA
Le concept de “Crossing the chasm” est intéressant. Au-delà du cas des coreutils dans Ubuntu, Rust a beaucoup d’autres gouffres à franchir
Il y a Rust for Linux ou Rust dans l’automobile, mais cela semble encore se limiter surtout au niveau des drivers
L’idée qu’on pourra changer la bibliothèque standard plus tard est dangereuse. Les utilisateurs veulent des systèmes stables et de qualité, plus que des “gouffres” à franchir
L’immaturité de l’écosystème Rust freine son adoption. Beaucoup de crates sont encore en version pré-1.0 ou ne sont guère plus que de simples wrappers C. Pour la crypto ça va, mais pour des choses comme SAML, c’est difficile à trouver
libc, ont aussi du mal à changer de version. Personnellement, je me réfère à des listes curatoriales comme blessed.rsIl existe un mouvement qui consiste à “traduire à l’intuition” du code C++ en Rust pour changer de licence. Par exemple, sudo-rs a en réalité un bilan de sécurité pire que la version C
L’immense bibliothèque standard de .NET est vraiment agréable. On peut faire la plupart des tâches de manière standard, et si une implémentation étrange apparaît, la majorité pousse à la standardisation
Les modules std/core de Rust sont déjà trop gros, au point qu’il faut des astuces comme les weak symbols sur microcontrôleur.
Une petite stdlib facilite la stabilité de l’API et réduit la charge de maintenance. C++ a beaucoup souffert de ce problème, donc Rust doit rester prudent