Accueil La cyber-sécurité Faire évoluer l’adoption de Rust grâce à la formation

Faire évoluer l’adoption de Rust grâce à la formation

0
Faire évoluer l’adoption de Rust grâce à la formation


Android 14 est la troisième version majeure d’Android prenant en charge Rust. Nous constatons déjà un certain nombre d’avantages :

Ces premiers résultats positifs ont fourni une motivation séduisante pour augmenter la vitesse et la portée de l’adoption de Rust. Nous espérions y parvenir en investissant massivement dans la formation pour nous développer auprès des premiers utilisateurs.

Les premiers utilisateurs sont souvent prêts à accepter plus de risques pour essayer une nouvelle technologie. Ils savent qu’il y aura certains inconvénients et une courbe d’apprentissage abrupte, mais sont prêts à apprendre, souvent pendant leur temps libre.

Pour intensifier l’adoption de Rust, il fallait aller au-delà des premiers utilisateurs. Pour cela, nous devons garantir un niveau de base de confort et de productivité sur une période de temps définie. Un élément important de notre stratégie pour y parvenir était la formation. Malheureusement, le type de formation que nous souhaitions offrir n’existait tout simplement pas. Nous avons pris la décision d’écrire et de mettre en œuvre notre propre formation Rust.

Nos objectifs pour la formation étaient les suivants :

  • Montez rapidement vos ingénieurs : Il est difficile de retirer les gens de leur travail habituel pendant une longue période, c’est pourquoi nous avons cherché à fournir une base solide pour utiliser Rust en quelques jours, et non en quelques semaines. Nous ne pouvions pas faire de quelqu’un un expert Rust en si peu de temps, mais nous pouvions donner aux gens les outils et les bases nécessaires pour être productifs tout en continuant à se développer. L’objectif est de permettre aux gens d’utiliser Rust pour être des membres productifs de leurs équipes. Les contraintes de temps signifiaient que nous ne pouvions pas enseigner la programmation à partir de zéro ; nous avons également décidé de ne pas enseigner en détail les macros ou Rust non sécurisé.
  • Rendez-le engageant (et amusant !) : Nous voulions que les gens voient beaucoup de Rust tout en acquérant une expérience pratique. Compte tenu de la portée et des contraintes de temps mentionnées ci-dessus, la formation était nécessairement riche en informations. Cela nécessitait un environnement interactif dans lequel les gens pouvaient rapidement poser des questions à l’instructeur. La recherche montre que la rétention s’améliore lorsque les gens peuvent vérifier rapidement leurs hypothèses et mettre en pratique de nouveaux concepts.
  • Rendez-le pertinent pour Android : L’outil spécifique à Android pour Rust était déjà documenté, mais nous voulions montrer aux ingénieurs comment l’utiliser via des exemples concrets. Nous souhaitions également documenter les normes émergentes, telles que l’utilisation cette erreur et de toute façon caisses pour la gestion des erreurs. Enfin, comme Rust est un nouveau langage de la plateforme Android (AOSP), nous devions montrer comment interagir avec les langages existants tels que Java et C++.

Avec ces trois objectifs comme point de départ, nous avons examiné le matériel existant et les outils disponibles.

Matériel existant

La documentation est une valeur clé de la communauté Rust et il existe de nombreuses ressources intéressantes disponibles pour apprendre Rust. Premièrement, il y a le disponible gratuitement Livre de rouille, qui couvre presque toute la langue. Deuxièmement, la bibliothèque standard est largement documenté.

Parce que nous connaissions notre public cible, nous pouvions formuler des hypothèses plus solides que la plupart des documents trouvés en ligne. Nous avons créé le cours pour les ingénieurs ayant au moins 2 à 3 ans d’expérience en codage en C, C++ ou Java. Cela nous a permis d’avancer rapidement dans l’explication de concepts familiers à notre public, tels que « flux de contrôle », « pile contre tas » et « méthodes ». Les personnes issues d’autres horizons peuvent apprendre Rust grâce aux nombreux autres ressources disponible gratuitement en ligne.

Technologie

Pour une documentation de forme libre, mdBook est devenu le standard de facto dans la communauté Rust. Il est utilisé pour la documentation officielle telle que le Livre de rouille et Référence sur la rouille.

Une fonctionnalité particulièrement intéressante est la possibilité d’intégrer des extraits exécutables du code Rust. C’est la clé pour rendre la formation attrayante puisque le code peut être édité en direct et exécuté directement dans les diapositives :

En plus d’être un standard communautaire familier, mdBook offre les fonctionnalités importantes suivantes :

  • Maintenabilité : mdbook test compile et exécute chaque extrait de code du cours. Cela nous a permis de faire évoluer le cours au fil du temps tout en veillant à toujours montrer un code valide aux participants.
  • Extensibilité: mdBook a un système de plugins ce qui nous a permis d’étendre l’outil selon les besoins. Nous nous sommes appuyés sur cette fonctionnalité pour les traductions et Diagrammes artistiques ASCII.

Ces fonctionnalités nous ont permis de choisir facilement mdBook. Bien que mdBook ne soit pas conçu pour les présentations, le résultat semblait correct sur un projecteur lorsque nous limitions la taille verticale de chaque page.

Traductions de support

Android compte des développeurs et des partenaires OEM dans de nombreux pays. Il est essentiel qu’ils puissent adapter le code Rust existant dans AOSP pour répondre à leurs besoins. Pour prendre en charge les traductions, nous avons développé mdbook-i18n-helpers. Soutien documentation multilingue est un souhait de la communauté depuis 2015 et nous sommes heureux de voir les plugins adoptés par plusieurs autres projets pour produire une documentation multilingue maintenable pour tout le monde.

Une fois la technologie et le format définis, nous avons commencé à rédiger le cours. Nous avons à peu près suivi les grandes lignes du Rust Book car il couvrait la plupart de ce que nous devons couvrir. Cela nous a donné un cours de trois jours que nous avons appelé Fondamentaux de la rouille. Nous l’avons conçu pour fonctionner pendant trois jours, cinq heures par jour et englober la syntaxe, la sémantique et les concepts importants de Rust tels que les traits, les génériques et la gestion des erreurs.

Nous avons ensuite étendu les principes fondamentaux de Rust avec trois plongées approfondies :

  • Rouille sur Android: un cours d’une demi-journée sur l’utilisation de Rust pour le développement AOSP. Il inclut l’interopérabilité avec C, C++ et Java.
  • Rouille du métal nu: un cours d’une journée complète sur l’utilisation de Rust pour le développement sans système d’exploitation. Les appareils Android embarquent une quantité importante de micrologiciels. Ces composants sont souvent de nature fondamentale (par exemple, le chargeur de démarrage, qui établit la confiance pour le reste du système), ils doivent donc être sécurisés.
  • Concurrence dans Rust: un cours d’une journée complète sur la simultanéité à Rust. Nous couvrons à la fois le multithreading avec des primitives de synchronisation bloquantes (telles que les mutex) et la concurrence async/wait (multitâche coopératif utilisant des futurs).

Un grand nombre de traducteurs internes et communautaires ont aidé à traduire le cours en plusieurs langues. Les traductions complètes étaient portugais brésilien et coréen. Nous travaillons sur Chinois simplifié et Chinois traditionnel les traductions également.

Réception du cours

Nous avons commencé à donner ce cours fin 2022. En 2023, nous avons embauché un fournisseur, Immunisé, pour dispenser la majorité des cours destinés aux ingénieurs Android. C’était important pour l’évolutivité et la qualité : des instructeurs dévoués ont rapidement découvert les difficultés des participants au cours et ont pu adapter la prestation. En outre, plus de 30 Googleurs ont dispensé le cours dans le monde entier.

Plus de 500 ingénieurs Google ont suivi le cours. Les retours ont été très positifs : 96 % des participants ont convenu que cela valait la peine d’y consacrer du temps. Les gens nous ont constamment dit qu’ils aimaient le style interactif, soulignant à quel point il était utile de pouvoir poser des questions de clarification à tout moment. Les instructeurs ont noté que les gens accordaient toute leur attention au cours une fois qu’ils avaient réalisé qu’il était en direct. Le live-coding exige beaucoup de la part de l’instructeur, mais cela en vaut la peine en raison du fort engagement qu’il suscite.

Plus important encore, les gens ont quitté ce cours et ont pu être immédiatement productifs avec Rust dans leur travail quotidien. Lorsque les participants ont été interrogés trois mois plus tard, ils ont confirmé qu’ils étaient capables d’écrire et de réviser le code Rust. Cela correspondait aux résultats du enquête beaucoup plus vaste que nous avons réalisée en 2022.

Nous donnons des cours sur Rust chez Google depuis un an maintenant. Il y a quelques points que nous souhaitons améliorer : meilleur classement des sujets, plus d’exerciceset plus de notes du conférencier. Nous aimerions également prolonger le cours avec des plongées plus approfondies. Les demandes de tirage sont les bienvenues !

Le cours complet est disponible gratuitement sur https://google.github.io/comprehensive-rust/. Nous sommes ravis de voir des gens commencer à utiliser Comprehensive Rust pour des cours à travers le monde. Nous espérons qu’il pourra être une ressource utile pour la communauté Rust et qu’il aidera les petites et grandes équipes à se lancer dans leur voyage Rust !

Nous sommes reconnaissants envers le 190+ contributeurs du monde entier qui a créé plus de 1 000 pull request et problèmes sur GitHub. Leurs rapports de bogues, correctifs et commentaires ont amélioré le cours d’innombrables façons. Cela inclut plus de 50 personnes qui ont travaillé dur pour rédiger et maintenir les nombreuses traductions.

Remerciement spécial à Andrew Walbran pour écrire Bare-metal Rust et pour Razieh Behjati, Dustin Mitchellet Alexandre Senges pour avoir écrit Concurrency dans Rust.

Nous devons également beaucoup de remerciements aux nombreux instructeurs bénévoles de Google qui passent leur temps à donner des cours partout dans le monde. Vos commentaires ont contribué à façonner le cours.

Enfin, merci à Jeffrey Vander Stoep, Ivan Lozano, Matthew Maurer, Dmytro Hrybenko et Lars Bergstrom pour leurs commentaires sur cet article.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici