IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Un ingénieur de Microsoft envoie des correctifs pour améliorer l'initialisation des modules dans Rust for Linux
Un autre ingénieur Microsoft s'engage pour un langage plus inclusif dans le noyau Linux

Le , par Stéphane le calme

46PARTAGES

11  1 
Faut-il opérer le retrait de termes comme master ou slave au motif de ce qu’ils véhiculent des stéréotypes raciaux ? Microsoft, qui a déjà étendu ses contributions au noyau Linux au-delà de son focus initial sur le support Hyper-V et d’autres besoins pour Azure, continue de s’impliquer dans des domaines plus généraux. Récemment, des ingénieurs de Microsoft ont travaillé sur des améliorations du langage Rust pour le noyau Linux. Maintenant, ils ont envoyé des correctifs pour rendre le langage du noyau Linux plus inclusif.

Microsoft contribue activement au noyau Linux depuis un certain temps, et l’introduction du support du langage de programmation Rust en est un exemple. Cette fois-ci, Wedson Almeida Filho, un ingénieur de Microsoft impliqué dans l’initiative Rust pour Linux, a révélé que des correctifs ont été envoyés pour révolutionner l’initialisation des modules au sein du noyau.

Les derniers correctifs de Filho montrent l’engagement de Microsoft à faciliter la croissance de Rust au sein de l’écosystème Linux. Ces correctifs affinent les API d’allocation pour le code du noyau Rust et introduisent un nouveau concept : l’initialisation des modules directement à leur emplacement mémoire prévu. Cela élimine le besoin d’allocations de mémoire inutiles et permet aux modules de gérer efficacement des structures de données complexes telles que les verrous.

En résumé :
  • Suppression de la bifurcation de la bibliothèque alloc.
  • Utilisation de paramètres de drapeau d’allocation (par exemple, GFP_KERNEL, GFP_ATOMIC) lors de l’allocation.
  • Élimination de la dépendance à la fonctionnalité instable allocator_api.

Ces efforts continus pour intégrer Rust au noyau Linux témoignent de l’importance croissante de ce langage dans le développement des systèmes d’exploitation. Microsoft, en tant qu’acteur majeur, contribue activement à cette évolution.

Des contributions qui vont au-delà de l'objectif commercial initial

Avec le temps, les contributions de Microsoft au noyau Linux se sont étendues au-delà de l'objectif commercial initial, à savoir la prise en charge d'Hyper-V et d'autres besoins pour Azure, ainsi qu'autour du sous-système Windows pour Linux (WSL), pour devenir des contributions plus générales. Microsoft a également embauché d'autres contributeurs clés à Linux, tout en s'intéressant à d'autres projets tels que systemd. Au début de la semaine dernière, un ingénieur de Microsoft a apporté des correctifs pour améliorer le langage Rust pour le noyau Linux, tandis qu'à la fin du week-end, des correctifs ont été apportés pour rendre le langage du noyau Linux plus inclusif.

Easwar Hariharan, ingénieur Linux chez Microsoft, a soumis un ensemble de quatorze correctifs visant à nettoyer le langage du code source du noyau Linux. Easwar travaille sur la plomberie Linux d’Azure, l’activation du silicium cloud comme Azure Cobalt et les affaires de virtualisation. Cette contribution de Microsoft, qui ne se limite pas à son cœur de métier, vise à rendre le langage du code plus respectueux et inclusif. En particulier, il s'agit de s'adapter aux dernières spécifications I2C, SMBus et I3C en amont afin d'utiliser les termes appropriés.

Concrètement, ces correctifs ajustent le vocabulaire utilisé dans le code et les commentaires pour adopter des termes plus appropriés. Par exemple, ils remplacent les termes « maître » et « esclave » par « contrôleur » et « cible » (ou « client »). Mais même pour ces correctifs, certaines questions ont été soulevées car les spécifications de l'industrie ont tendance à se référer à la nouvelle terminologie contrôleur/cible par opposition à client qui est utilisée dans la plupart de ces nouveaux correctifs du noyau. Parmi les développeurs du noyau en amont, il n'y a apparemment pas encore de consensus clair sur la distinction entre client et cible.

Ces modifications touchent près de quatre cents lignes de code, allant des sous-systèmes principaux aux pilotes graphiques AMD et Intel, en passant par divers pilotes multimédias et FBDEV, et d'autres codes I2C/I3C/SMBus.

Ces correctifs, qui visent à promouvoir un langage plus inclusif, sont disponibles sur la liste de diffusion du noyau Linux. Il est encourageant de voir Microsoft s’engager activement dans l’amélioration du noyau Linux, même au-delà de ses propres intérêts commerciaux.


Des changements qui s'opèrent depuis des années sur divers écosystèmes

Des projets comme Django (2014), CouchDB (2014), Drupal (2014), Redis (2017) et Python (2018) se sont déjà opposés à l'utilisation des termes master/slave. Tous ont le même argument : bien que ces termes aient été utilisés depuis des décennies, ils peuvent avoir des significations à caractère raciste, entre autres, pour les utilisateurs. Il serait donc bon de les éviter.

« Le mot "slave" a des connotations négatives (bien que cela puisse ou non être pertinent dans la dénomination d'un terme technique), y compris l'histoire de l'esclavage sur plusieurs siècles au bénéfice des puissances coloniales européennes, les travailleurs pénitentiaires aujourd'hui forcés de travailler dans des conditions parfois similaires à l'esclavage, les jeunes filles vendues dans l'esclavage sexuel dans de nombreuses régions du monde aujourd'hui », expliquait le projet Drupal. La connotation sexiste de ces termes avait particulièrement été citée lorsque la question était débattue pour le projet Django. Une ingénieure DevOps s'était en effet plainte que ses collègues lui faisaient souvent des blagues en utilisant les termes "master" et "slave".

Chez Python, il a été suggéré que la paire "master/slave" soit remplacée par des terminologies comme "leader/follower" ou "primary/replica". Dans le cas de Python, l'idée est venue de Victor Stinner, un développeur travaillant pour Red Hat. Il a publié cinq pull requests, ciblant plusieurs domaines, pour changer "master" et "slave" dans la documentation et le code Python par des termes comme "parent", "worker", "child" ou autres termes similaires.

« Pour des raisons de diversité, il serait bon d’essayer d’éviter la terminologie "master" et "slave" pouvant être associée à l’esclavage », a-t-il expliqué dans son rapport de bogue. Ses propositions n'ont pas du tout fait l'unanimité parmi les développeurs Python. « Est-il vraiment nécessaire de polluer la base de code Python avec l'idéologie/terminologie SJW ? Qu'est-ce qui viendra près cela ? » Demanda un développeur. Pour information, SJW (ou Social Justice Warrior) est un terme désignant un individu défendant, d'une manière outrée selon ses détracteurs, des causes sociales jugées progressistes (comme le féminisme, la lutte pour les droits civiques, le multiculturalisme, etc.).

« Pour autant que je sache, il n’y a pas un seul cas où les docs utilisent "master" pour faire référence à l’esclavage humain. Il n'y a pas non plus de cas où l’utilisation pourrait être considérée comme une approbation de [l'esclavage humain] », lance un autre développeur qui a demandé s'il y avait un préjudice démontrable causé par l'utilisation de ces termes.

GitHub a aussi pris part au bal en décidant en septembre 2020 de faire usage du terme « main » en lieu et place de « master » pour désigner la branche par défaut des projets. Voici l’explication que des responsables de la plateforme ont fourni : « main est le remplacement de master le plus populaire que l'on rencontre sur GitHub. Nous l'aimons parce qu'il est court, qu'il garde la mémoire musculaire intacte et qu'il se traduit bien dans la plupart des langues. »

Par défaut, GitHub utilisait le terme « master » pour désigner la version primaire d'un dépôt de code source. Les développeurs faisaient des copies de cette dernière sur leurs ordinateurs et y ajoutaient leur propre code, puis fusionnaient les modifications dans le dépôt master. « Dès le premier octobre 2020, tous les nouveaux dépôts que vous créerez utiliseront main plutôt que master pour désigner la branche par défaut », a alors annoncé GitHub.

Cette année de 2020 a été particulière pour le monde informatique. Suite au meurtre de Georges Floyd, qui a provoqué une vague d’indignations collectives laissant place à de violentes manifestations dans plusieurs villes du pays. Le monde de l'informatique n'a pas été en reste : des développeurs souhaitaient débarrasser l'industrie de termes jugés racistes ou violents comme "whitelist-blacklist", "master-slave" et "kill".

Aussi, début juin 2020, c’était au tour de l’équipe du langage de programmation Go de Google de se prononcer sur la question. Dans une publication, elle a annoncé le retrait des termes "whitelist" (liste blanche), "blacklist" (liste noire), "master" (maître) et "slave" (esclave) de sa documentation et de sa base de code. À la place de "whitelist" et "blacklist", elle annonce l’introduction des termes "allowlist" (liste d’autorisation) et "blocklist" (liste de refus) jugés plus explicites.

« Il est clair que certaines personnes sont blessées par ces termes et que leur utilisation suscite chez elles un sentiment de malaise, non pas pour des raisons techniques, mais en raison de leur contexte historique et social », a déclaré Google, en estimant qu'il s'agissait d'arguments suffisants pour les faire disparaître. « Master-slave est une métaphore oppressive qui ne sera et devrait jamais être totalement détachée de notre histoire », souligne un développeur de Microsoft, qui appelle à leur remplacement.

Puis, le même mois, les développeurs de la base de données MySQL ont annoncé leur intention de cesser d'utiliser et de remplacer des termes tels que master, slave, blacklist et whitelist dans le code source et la documentation de la base de données.

Dans un billet de blog, l’équipe Oracle MySQL a expliqué :

« Cela fait 20 ans que la réplication MySQL a été introduite dans MySQL 3.23.15 (sortie en mai 2000). Depuis lors, pratiquement tous les déploiements de bases de données MySQL en production utilisent la réplication afin d'atteindre une haute disponibilité, une reprise après sinistre, une évolutivité en lecture et divers autres objectifs.

« Quiconque utilise la réplication MySQL connaît les termes : ‘master’ et ‘slave’. Les origines de ces mots sont négatives. C’est clair. Chez MySQL, nous avons pris la décision de changer cette terminologie. Déjà, beaucoup d'entre nous ont changé la façon dont nous nous référons à ces rôles dans les billets de blog et les présentations - en utilisant généralement des termes comme ‘primaire’, ‘secondaire’, ‘source’ et ‘réplique’. Nous avons maintenant commencé le processus de modification de la syntaxe MySQL dans notre code source et notre documentation pour faire correspondre tout cela ».

Source : liste de diffusion Linux (1, 2)

Et vous ?

Quelle est votre opinion sur l’utilisation de Rust dans le noyau Linux ? Certains soutiennent que c’est une avancée majeure, tandis que d’autres craignent que cela puisse introduire des vulnérabilités inattendues. Qu’en pensez-vous ?
Quels avantages voyez-vous à utiliser Rust par rapport à d’autres langages de programmation dans le noyau Linux ? Est-ce que la sécurité, la performance ou la lisibilité du code sont des facteurs décisifs pour vous ?
Comment pensez-vous que l’adoption de Rust pourrait affecter la communauté open source ? Y a-t-il des préoccupations concernant la fragmentation ou la complexité accrue du développement ?
Pensez-vous que ces modifications de terminologie sont importantes pour rendre le code source du noyau Linux plus respectueux et inclusif ? Pourquoi ou pourquoi pas ?
Quelles autres expressions ou termes pourraient être révisés pour promouvoir une meilleure inclusion dans le développement logiciel en général ?
Comment pouvons-nous encourager davantage d’entreprises et de contributeurs à s’engager activement dans des initiatives similaires pour améliorer la diversité et l’inclusion dans les projets open source ?
Avez-vous déjà rencontré des problèmes de langage ou de terminologie dans d’autres projets open source ? Comment cela a-t-il été résolu ?

Voir aussi :

Microsoft Word propose par défaut d'adopter l'écriture inclusive et le politiquement correct, que pensez-vous de cette fonctionnalité ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Ti-Slackeux
Membre expérimenté https://www.developpez.com
Le 02/04/2024 à 11:35
je me suis arrêté là :
Faut-il opérer le retrait de termes comme master ou slave au motif de ce qu’ils véhiculent des stéréotypes raciaux ?
"Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais, en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue."
Albert Einstein
20  3 
Avatar de denisys
Membre chevronné https://www.developpez.com
Le 03/09/2024 à 18:59
Remonté contre les habitués du C qui freinent les mises à jour de la base de code du noyau vers Rust
Pour faire une bonne vinaigrette.
Il faut de l’huile et du vinaigre !!!!


A mon point de vue, ce n’est qu’une question de temps et de génération.
Ma génération, qui a étais élevé au bon code en C et C++, vers la fin du siècle dernier (1992).
Les jeunes et futures générations qui intégrerons et compileront plus facilement le code en Rust.

Moi, quand j’ai commencé à développer, le Java Scripte n’existais pas.
Aujourd’hui, tous les jeunes savent coder en Java Scripte.

Haaa !!!
Il ne faut pas oublier, non plus, que le créateur de PHP a conçu ce langage en C, parce que il en avait marre de répéter les mêmes routines en C, pour construire des pages Internet , a l’époque.

C’est une question de temps, uniquement !!!
14  0 
Avatar de OrthodoxWindows
Membre expert https://www.developpez.com
Le 02/04/2024 à 12:03
Citation Envoyé par Ti-Slackeux Voir le message
je me suis arrêté là :

"Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais, en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue."
Albert Einstein
Je suis d'accord, ce débat est vraiment con. Mais bon, visiblement certains n'ont pas mieux à faire que perdre du temps au lien de réaliser des vrais corrections dans le code.
Cependant, ce genre de polémique stérile est souvent soutenu pas des grosses entreprises ; peut-être faut-il y voir un intérêt pour détourner l'attention de leur méfaits.
Parfois c'est plus direct, c'est le logiciel libre qui est visé (je pense à la polémique sur Stallman).

C'est comme ceux qui sont contre l'utilisation des termes "liste noir/blanche". Alors que culturellement, associer le noir au "mal" ou a la mort n'a rien de raciste, c'est quelque chose de très ancien qui vient du fait que sans lumière, on ne voit rien (on risque donc sa vie). Je ne serai pas surpris que certains peuples en Afrique fassent la même association.
Comparer ça au racisme c'est à peu près la même logique que de dire qu'utiliser la couleur orange pour indiquer un chantier revient à traiter tous les roux de travailleur du BTP
Surtout qu'en plus, aucun homme n'est vraiment "noir" sur Terre, en réalité, il n'y a que des nuances de brun...
12  0 
Avatar de Aspartame
Membre confirmé https://www.developpez.com
Le 02/04/2024 à 13:08
Bonjour

étudiant en master, je m'inquiète sérieusement sur mon diplôme.
14  4 
Avatar de chrtophe
Responsable Systèmes https://www.developpez.com
Le 02/04/2024 à 20:03
Comme si ne plus utiliser les termes maitres/esclaves allait faire disparaitre l'esclavage ou rendre justice aux victimes présentes, passés, ou futurs.

On peut aller très loin dans la connerie :

Nous tous (ou quasiment) travaillant dans l'informatique sommes des prestataires de services.
service désigne l'action de servir, càd être au service, à la disposition de quelqu'un. Du coup faut-il remettre ce terme en question dans ce contexte, surtout que service vient du latin servitium signifiant état d’esclave, cervitude).
11  1 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 22/10/2024 à 18:09
Linus Torvalds est de plus en plus frustré par le matériel bogué et les attaques théoriques du processeur
Moi aussi ! (mais on s'en fout)
9  0 
Avatar de eomer212
Membre confirmé https://www.developpez.com
Le 22/10/2024 à 18:50
je me rappelle d'une époque, l'époque "bénie" (j'étais jeune, beau, et je le suis toujours dans ma tête) ou n'y avait pas de coprocesseur, et ou il fallait comprendre comment calculer un sinus à partir d'entiers en assembleur.
bref, on devait ramer comme des malades pour sortir les processeurs et les cartes graphiques vga de leur létargie. il fallait comprendre le materiel, et en particulier le processeur, son fonctionnement et ses limites. qu'on pouvait éventuellement dépasser, par la ruse et l'intelligence.
une des astuces existantes était le déroulé de code.
on déroule des fonctions qui auraient du faire un saut pour boucler, pour éviter le plus possible les branchements qui brisent la prédiction ou le pré chargement de code du processeur.
c'est con, c'est basique, et c'est très, très efficace.
moi je dis ca. mais bon, je peux me tromper, mais je pense que ca doit encore marcher..
en passant, un petit coucou extrêmement révérencieux à Mr Torvald, à qui nous devons tous beaucoup.
10  1 
Avatar de petitours
Membre émérite https://www.developpez.com
Le 02/04/2024 à 17:02
Citation Envoyé par shunesburg69 Voir le message
L'esclavage s'est terminé en France en 1848 et aux USA en 1865, je vois personne de vivant concerné par cette histoire d'esclavage. Pour info, la plupart du temps c'est des militants (noir ou blanc) qui non jamais eux de famille dans l'esclavage et qui oublient que des blancs comme moi ont des ancêtres esclaves et qui s'en foutent de ses débats stériles. Ils feraient mieux de s’inquiéter de la discrimination positive (et autre racisme anti-blanc) qui font du racisme en passant faire l'inverse.
Inde, Chine (les Ouïghours ), Pakistan, et bien d'autres pays. L'esclavage existe bien encore aujourd'hui. Mais une fois de plus le problème est l'esclavage, pas le mot qui le désigne très bien et ça n'a rien à faire dans les discussions sur l'intégration de Rust dans Linux.
8  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 03/09/2024 à 20:00
Cette "mégalomanie" existe dans toutes les équipes qui sont formattés à travailler avec un langage informatique. Vous allez dans les banques où on fait du COBOL, les développeurs rabaisseront ceux qui font du Java pour sa syntaxe, ceux qui font du Java rabaisseront ceux qui font du NodeJS/TypeScript pour son manque de typage runtime, ceux qui font du NodeJS/TypeScript rabaisseront ceux qui font du Python pour ses performances, et généralement tout le monde excepté ceux qui font du PHP rabaisseront PHP

Il faut aller au-delà de cela, de cette passion qui nous anime pour un langage informatique, parce que oui nous avons appris, travaillé et en quelque sorte "grandi" avec un certain langage, et on arrive d'ailleurs à reconnaitre les générations grâce à leur formation universitaire Pascal, C++, Java, et plus récemment Python... Et je comprends aussi que certains en ait marre d'apprendre le dernier langage à la mode (je pense personnellement aux langages JVM tels que Scala complètement mort et Kotlin propulsé par IntelliJ+Google suite au procès d'Oracle en ayant fait du Java), ce qui me perturbe c'est que Rust soit considéré comme une mode ou bien les goûts syntaxiques évoqués par certains pour ne pas adopter le Rust. Rust est basé sur le retour d'expérience des langages existants, il existe des raisons pour laquelle Rust inclu/limite des features, comme pourquoi il n'y a pas d'héritage à plusieurs niveaux, pourquoi on continue à utiliser le point-virgule etc (je ne vais pas rentrer dans les détails ici)

Un langage informatique est un outil, ce n'est pas votre enfant ou votre animal de compagnie, l'affect n'a pas lieu d'être. Il faut citer les "vrais" avantages et inconvénients techniques de Rust pour être juste, Rust n'est pas parfait : moins de libraries contrairement à Go qui est supporté par Google (quelqu'un sait s'il existe un driver Sybase en Rust ? ), lent à compiler etc... mais en tant qu'expert seriez-vous capable de me citer des langages libres (compilateur inclu) qui sont à la fois memory-safe, null-safe, thread-safe et qui ne requirent pas une VM que l'on doit installer et qui doit gérer un système de ramasse-miettes ?

Bref, pour en revenir à Linux, bien que le C soit un langage simple et très apprécié, ce dernier ne respecte pas les critères cités au-dessus (je vous invite à regarder les taux des failles de sécurités causés par l'absence du memory-safe ou null-safe), donc qui maintiendra aussi bien le noyau lorsque Linus Torvalds ne sera plus de ce monde ?
8  0 
Avatar de kain_tn
Expert éminent https://www.developpez.com
Le 03/09/2024 à 21:20
Citation Envoyé par Gugelhupf Voir le message
Cette "mégalomanie" existe dans toutes les équipes qui sont formattés à travailler avec un langage informatique.
Je dirais même: Cette "mégalomanie" existe dans toutes les équipes qui sont formatées à travailler avec un seul langage informatique.

Citation Envoyé par Gugelhupf Voir le message
Un langage informatique est un outil, ce n'est pas votre enfant ou votre animal de compagnie, l'affect n'a pas lieu d'être. Il faut citer les "vrais" avantages et inconvénients techniques de Rust pour être juste,
Je ne suis que partiellement d'accord. Je pense personnellement qu'il y a une forme d'art à concevoir et écrire du code. Il y a tout simplement quelque chose de plaisant et d'harmonieux à voir les patterns se former, les couches communiquer. Il y a de la beauté dans certaines expressions épurées.

Et dès le moment où ce n'est plus seulement un outil ou un travail alimentaire, alors les goûts de tous entrent en considération, un peu comme pour la musique et pour tant d'autres sujet ou soudain tout le monde a un avis extrêmement tranché sur ce qui est bien et ce qui ne l'est pas.

J'aime bien la syntaxe de Rust, mais ça doit venir du fait que j'ai pratiqué plusieurs langages assez différents au lieu de me spécialiser dans un seul, et du coup, mes goûts personnels ont évolué avec chaque langage et la philosophie qu'il portait.

J'essaye toujours de choisir mes outils en fonction des avantages qu'ils vont me procurer, mais il y aura toujours certains outils qui me plairont plus que d'autres pour une question de goûts personnels, sur un périmètre donné.

Bien entendu, quand on collabore sur un projet, il faut être capable de faire des compromis, comme sur le style par exemple, pour garder une base de code maintenable et compréhensible.

Je pense que le gros souci, là, c'est qu'il y a deux langages avec une philosophie différente, et sur deux périmètres différents: un est à l'origine de l'ensemble du noyau, l'autre n'est utilisé que pour certains modules (souvent nouveaux), et c'est peut-être vu par certains développeurs comme du code de seconde zone - d'où le manque d'effort et d'engouement de leur part.

Et le gars de redox_os fait un peu le malin dans son tweet et en profite pour se faire de la pub, mais je suis certain que si demain, ses nouveaux modules étaient développés en Lua (pour gagner du temps sur la compilation, puisque tu as évoqué le temps de compilation de Rust) avec le reste en Rust, il y aurait la même animosité de la part d'une partie de ses développeurs, et peut-être une forme de mépris.

Désolé pour le pavé, mais ta réponse m'a inspiré!
8  0