L’équipe du projet OpenZFS retire « les références inutiles à l’esclavage » de sa base de code en mettant de côté le terme « slave »Qui fait remonter une expérience humaine douloureuse au souvenir
C’est Matthew Ahrens, l’un des membres fondateurs du projet OpenZFS, qui s’est chargé de proposer le correctif il y a peu. Brian Behlendorf et Ryan Moeller – développeurs principaux du projet OpenZFS – l’ont passé en revue avant de l’intégrer au dépôt. Dans la mesure du possible et surtout sans causer de soucis d’ordre technique, le correctif trouve un remplaçant au terme « slave » (esclave).
Le patch ne modifie pas la façon dont le code fonctionne. Il change simplement les noms des variables de sorte à les aligner avec la terminologie utilisée au sein du code source d’un gestionnaire de volume logique au sein du noyau Linux. C’est un total de 42 lignes de code qui disparaissent de la base de code OpenZFS et 48 qui font leur entrée.
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/bin/sh # # Show device mapper slave devices. This is useful for looking up the # /dev/sd* devices associated with a dm or multipath device. For example: # # $ ls /sys/block/dm-113/slaves/ # sddt sdjw # Show device mapper dependent / underlying devices. This is useful for # looking up the /dev/sd* devices associated with a dm or multipath device. # if [ "$1" = "-h" ] ; then echo "Show device mapper slave devices." echo "Show device mapper dependent (underlying) devices." exit fi @@ -29,4 +26,4 @@ if [ -d "/sys/class/block/$dev/slaves" ] ; then val=$(echo "$val" | sed -r 's/[[:blank:]]+/ /g') fi echo "slaves=$val" echo "dm-deps=$val" |
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | @@ -74,10 +74,10 @@ check() {
local blockdevs
local fstype
local majmin
local _slavedev
local _slavedevname
local _slavedevtype
local _slavemajmin
local _depdev
local _depdevname
local _depdevtype
local _depmajmin
local _dev
if [[ $hostonly ]]; then
@@ -108,15 +108,15 @@ if [[ $hostonly ]]; then
host_fs_types["$dev"]="$fstype"
majmin=$(get_maj_min "$dev")
if [[ -d /sys/dev/block/$majmin/slaves ]] ; then
for _slavedev in /sys/dev/block/$majmin/slaves/*; do
[[ -f $_slavedev/dev ]] || continue
_slavedev=/dev/$(basename "$_slavedev")
_slavedevname=$(udevadm info --query=property --name="$_slavedev" | grep "^DEVNAME=" | sed 's|^DEVNAME=||')
_slavedevtype=$(get_devtype "$_slavedevname")
_slavemajmin=$(get_maj_min "$_slavedevname")
dinfo "zfsexpandknowledge: slave block device backing ZFS dataset $mp: $_slavedevname"
array_contains "$_slavedevname" "${host_devs[@]}" || host_devs+=("$_slavedevname")
host_fs_types["$_slavedevname"]="$_slavedevtype"
for _depdev in /sys/dev/block/$majmin/slaves/*; do
[[ -f $_depdev/dev ]] || continue
_depdev=/dev/$(basename "$_depdev")
_depdevname=$(udevadm info --query=property --name="$_depdev" | grep "^DEVNAME=" | sed 's|^DEVNAME=||')
_depdevtype=$(get_devtype "$_depdevname")
_depmajmin=$(get_maj_min "$_depdevname")
dinfo "zfsexpandknowledge: underlying block device backing ZFS dataset $mp: $_depdevname"
array_contains "$_depdevname" "${host_devs[@]}" || host_devs+=("$_depdevname")
host_fs_types["$_depdevname"]="$_depdevtype"
done
fi
done |
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | @@ -336,25 +336,25 @@ function on_off_disk # disk state{online,offline} host
if [[ $state == "offline" ]] && ( is_mpath_device $disk ); then
dm_name="$(readlink $DEV_DSKDIR/$disk \
| nawk -F / '{print $2}')"
slave="$(ls /sys/block/${dm_name}/slaves \
dep="$(ls /sys/block/${dm_name}/slaves \
| nawk '{print $1}')"
while [[ -n $slave ]]; do
while [[ -n $dep ]]; do
#check if disk is online
lsscsi | egrep $slave > /dev/null
lsscsi | egrep $dep > /dev/null
if (($? == 0)); then
slave_dir="/sys/block/${dm_name}"
slave_dir+="/slaves/${slave}/device"
ss="${slave_dir}/state"
sd="${slave_dir}/delete"
dep_dir="/sys/block/${dm_name}"
dep_dir+="/slaves/${dep}/device"
ss="${dep_dir}/state"
sd="${dep_dir}/delete"
log_must eval "echo 'offline' > ${ss}"
log_must eval "echo '1' > ${sd}"
lsscsi | egrep $slave > /dev/null
lsscsi | egrep $dep > /dev/null
if (($? == 0)); then
log_fail "Offlining" \
"$disk failed"
fi
fi
slave="$(ls /sys/block/$dm_name/slaves \
dep="$(ls /sys/block/$dm_name/slaves \
2>/dev/null | nawk '{print $1}')"
done
elif [[ $state == "offline" ]] && ( is_real_device $disk ); then
@@ -380,9 +380,9 @@ function on_off_disk # disk state{online,offline} host
if is_mpath_device $disk; then
dm_name="$(readlink $DEV_DSKDIR/$disk \
| nawk -F / '{print $2}')"
slave="$(ls /sys/block/$dm_name/slaves \
dep="$(ls /sys/block/$dm_name/slaves \
| nawk '{print $1}')"
lsscsi | egrep $slave > /dev/null
lsscsi | egrep $dep > /dev/null
if (($? != 0)); then
log_fail "Onlining $disk failed"
fi |
Les blocs de code l’illustrent : on passe du terme « slave » à « dependent » qui signifie « périphérique sous-jacent. » D’un point de vue historique, la manœuvre se justifie pour Matthew Ahrens : « Les horribles effets de l'esclavage humain continuent à avoir un impact sur la société. L'utilisation occasionnelle du terme esclave dans les logiciels informatiques est une référence inutile à une expérience humaine douloureuse. » Elle n’est pas sans faire penser à celle de l’équipe du langage Go qui, il y a peu, a annoncé le retrait des termes "whitelist", "blacklist", "master" et "slave" de sa documentation et de sa base de code au motif de ce qu’ils véhiculent des stéréotypes raciaux. L’équipe du langage de programmation Go rejoignait celles des projets Python (2018), Django (2014), CouchDB (2014), Drupal (2014) et Redis (2017) dans cette démarche. Le même argument revient : 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.
Grosso modo, ce sont des changements que les différents projets justifient également d’un point de vue technique. À la place de "whitelist" et "blacklist", l’équipe Go a par exemple procédé à l’introduction des termes "allowlist" (liste d’autorisation) et "blocklist" (liste de refus) jugés plus explicites (ou moins ambigu) que ceux d’origine.
Source : GitHub
Et vous ?
Quel est votre avis sur la suppression de ces expressions ? Est-ce un exemple à suivre ?
Est-il préférable d’éviter ces expressions au nom de l’inclusion ? Si oui, quelle pourrait être votre proposition ?
Êtes-vous du même avis que ceux qui pensent que les remplaçants proposés ne restent pas souvent fidèles au sens originel ? Si oui, quels sont les cas de figure qui vous ont marqué ?Voir aussi :
Commission d'enrichissement de la langue française : ne dites plus « cryptojacking » mais « minage pirate », voici la nouvelle vague de traductions proposées
Commission d'enrichissement de la langue française : ne dites plus « hackathon » mais « marathon de programmation », voici la nouvelle vague de traductions proposées
La commission d'enrichissement de la langue française s'attaque au vocabulaire de la cyberdéfense avec des équivalents français pour les anglicismes
Vous ne devez plus dire « data scientist », mais plutôt « expert en mégadonnées », d'après la Commission d'enrichissement de la langue française
Vous avez lu gratuitement 2 163 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.


.
.