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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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
Nom : Screenshot_2020-06-12 Remove unnecessary references to slavery · openzfs zfs f664342.png
Affichages : 2784
Taille : 59,2 Ko

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