ZFS Removes References to Slavery
github.com
github.com
Let's ask Mr Torvalds nicely to remove all master / slave references in the Linux kernel because it is 'offensive'. /s
I don't think such a request is practical given the kLOCs of those references which will break other software.
https://lore.kernel.org/git/CAOAHyQwyXC1Z3v7BZAC+Bq6JBaM7FvB...
I've been using git for a long time and this is the first time I have ever considered any sort of racial connection to the naming of the master branch. Last I checked master has more than one definition in the dictionary - which by the way might actually be something worth reading instead of pointlessly causing drama for the sake of marketing. Because let's face it - Microsoft didn't just pull this stunt because they decided to be noble.
My Swiftian Proposal: lets just remain all uses of the word "slave" to "forcedChildLaborer". It's more accurate anyway, since in software a "slave" is usually "born" into the role and often times doesn't live very long. We are striving for accuracy after all, right?
And for my two cents that will inflame this even more: We should considering deprecating the use of "kill" to signify terminate. I haven't used it in my 15+ years of writing software professionally and no one has impugned my code quality for not using "kill" enough.
Edit: I'm not being snarky. I truly don't understand this distinction.
Edit: another post in this thread suggested master and puppet, I think that this is a cute yet clear variant.
I.. know? I would not say that they are worse if you had said it yourself after all.
In some contexts (e.g. Jenkins), a "master" tells the "slave" what to do and the "slave" does it. This at least is plausibly connected to the real-world meanings of the term, although given that the "slave" can start and stop work at any time and the "master" needs to accommodate that, the analogy isn't great. "Coordinator/worker" works well here.
In some contexts (e.g., MySQL), a "master" sends a copy of all its work to the "slave," and both of them execute it. The "slave" stands ready to replace the "master" if the "master" becomes unavailable, and usually at that point the "master" becomes the new "slave" once it catches up. This makes no sense. "Primary/replica" works well here.
In some contexts (e.g., network device bonding, and, I think, ZFS), a "master" is a logical construct, consisting of multiple physical "slaves". All interactions with the "master" are actually algorithmically sent to one or more "slaves," and if all the "slaves" are offline, there's no "master" left. This, also, makes no sense. Terms that would make sense include things like "bond device/bonded member" (the members being bonded to each other), "logical volume/physical volume", etc. In this pull request they seem to use "dependency."
In some contexts (e.g. disk drives), the "master" and "slave" are both devices that provide the same type of service to the host, but the "slave" connects to the "master" instead of directly to the host, and while the "master" is communicating, the "slave" can't. This, also, makes no sense. "Primary/secondary" works well here.
In pseudoterminals, the "master" is a limited API to the PTY object, held by the terminal emulator, which copies text to the screen, interpreters rendering commands, and sends input. The "slave" is a more featureful API to the same PTY object, held by the shell / the command under execution, which does what it wants. This, also, makes no sense. I don't know of a standard term here, but I'd sort of suggest "monitor" and "application" (or perhaps "monitor" and "session" if you want to keep the initials).
All of these are different uses, and you can't generally map one to another. For instance, if you're used to a database where "master/slave" is used in the primary/replica sense, and you see a database where the "master" just coordinates requests for work and all actual data is sent to/from some "slave," your knowledge of primary/replica architecture is misleading here.
Agreed, although my mind immediately went to "manager" and how that is one of the most useless names. See e.g. https://stackoverflow.com/questions/1866794. Need to be careful with this type of naming.
> [MySQL] "Primary/replica" works well here.
Agreed.
> [ZFS] Terms that would make sense include things like "bond device/bonded member" (the members being bonded to each other), "logical volume/physical volume", etc. In this pull request they seem to use "dependency."
These names more than double number of syllables/characters, which will severely hamper adoption. I find "dependency" to be a bad descriptor for individual components fully making up a whole, but I expect that the ZFS people deliberated over that name and that my extremely limited familiarity with the topic(s) is the reason why I find "dependency" weird.
> [disk drives] "Primary/secondary" works well here.
Agreed.
> [pseudoterminals] I don't know of a standard term here, but I'd sort of suggest "monitor" and "application" (or perhaps "monitor" and "session" if you want to keep the initials).
I would strongly discourage overloading the meaning of "monitor" in the context of terminals. Otherwise, you all but guarantee confusion.
Re terminals, it's the end that's connected to the monitor (or terminal emulator), just like the other end is connected to the application/session. There aren't two actual pseudoterminals in any sense, just two views of the same thing, so the idea of "the pty master"/"the pty slave" doesn't quite make sense unless you're very careful to realize you're talking about the open FD and not the actual thing. I'd probably say something like "the monitor end" and "the session end" (and continue to abbreviate them as "ptm"/"pts").
This pull request does concern language, yes. But it retains the use of the term "slave" in existing APIs, while updating a script that is named "slaves" to use the term "deps," a term that is already used elsewhere in the API. At the end of the pull request, both terms remain meaningful. Furthermore, no attempt is made to hide previous use of the term - or to prevent using the term "slave" to refer to human slavery.
So I'm not sure I see the comparison.
That might be the first Orwellian thing in this thread - people see a thing they've been told is bad and done by bad people and they need to get their Two Minutes Hate out, and they don't have the intellectual curiosity to spend those two minutes figuring out what's actually happening. (Actually, maybe there's a bit of Brave New World in there too.)
> there is plenty of language redefinition, history rewriting and statues toppling as we speak.
Give me specific examples, and we can talk about whether this is 1984 or not.
(I'm aware of some statues being toppled over the last couple of weeks that were originally put in place by people who wanted to rewrite history - and the act of toppling those statues has caused much more public discussion about the subjects of their statues and their true history than the statues themselves ever did. That hardly seems like 1984 to me. I'm not sure what you mean by language redefinition and history rewriting, otherwise.)
"To meet the ideological requirements of English Socialism (Ingsoc) in Oceania, the ruling Party created Newspeak,[1] a controlled language of simplified grammar and restricted vocabulary, meant to limit the freedom of thought—personal identity, self-expression, free will—that threatens the ideology of the régime of Big Brother and the Party, who have criminalised such concepts into thoughtcrime as contradictions of Ingsoc orthodoxy."
On the other hand, you have "old masters" referring to great historical artists or colloquially, their artwork, "Masters" referring to golf tournaments, "mastery" when you get better at something over time, etc. None of these connect to a slave concept.
The word slave, on the other hand, is more problematic since it doesn't have those other contexts, and always means some sort of subservience. We already went through this exact exercise back when multiple hard drives were referred to as a single master and however many slaves. We still call it a Master Boot Record, but any other boot sectors don't get called slaves anymore.
Primary is a perfectly fine word that we're already using in this context nowadays. I'd be perfectly happy if we didn't have a dozen names for the same things. Everything else is secondary.
P.S. - Indians were taken slaves to Africa, west indies etc. etc.
my opinion - I don't give a flying hoot. There's no way I am changing my codebase for this BS.
You have a master with unidirectional control over the slaves.
Just like in IDE drivers of old.
But this is silly, I totally understand for PostgreSQL change from master-slave to master-standby. Standby is actually much better word to describe node's function.
The change for the sake of word being offensive is just plain stupid. The use of it did not really encourage slavery based on race. So it feels less about offending then being reminded about horrible American's history.
If they want to go all PC, what about use of word "kill"[1]?
[1] https://github.com/openzfs/zfs/search?q=kill&unscoped_q=kill
I’m gonna write a whole blog post about this
And it's our choice whether to be neutral and inclusive or miserly trolls clinging to meaningless out of date terms coined in times when these weren't considerations. Rise above it. Embrace other people's experiences that maybe you have not had and have no idea about. Just appreciate that it may have happened to someone and not you and you do not have to reject them by posting a petty comment. Call it Big Cantaloupe / Little Cantaloupe. It doesn't matter. At least then nobody would be reminded of a murdered ancestor or the nature of the person who named it when all they wanted to do was use a stupid file system.
Don't be a dick. Be nice. x
I’d much rather people spent the time and energy teaching underprivileged kids some coding, for instance.
Pointless changing of words because of "feelings" is why the majority is laughing at you behind your back. If there is something you want to change, go for something with meaning. Stupid things like this illustrate that there is no issue and you need to make up problems because there are none.
Maybe I am not fine-tuned into 'spotting' such things, which is the argument I would expect; but maybe some just have developed a sensitivity far beyond any reasonable amount in taking offense, which is my suspicion. How about we talk about meaningful ways to stop racism, which we can all agree is bad and unwarranted, jumping into action blindly might feel like you are doing something, but what exactly is this doing?
I am very annoyed by such blindly executed and in my opinion unwarranted activism, and as soon as one speaks out against, one has to hide from the incoming attacks. So I guess HR departments have to check naming conventions in programs now for misogyny / politically non-correct / possibly racist terminology before release?
By the way: I actually always thought of master / slave as completely racially independent terminology in general? If in a book a white man were enslaved by some Asian tribe, how would master/slave terminology be non-correct in describing the participants?
> So I guess HR departments have to check naming conventions in programs now for misogyny / politically non-correct / possibly racist terminology before release?
Of course. Why is that a question?
>If in a book a white man were enslaved by some Asian tribe, how would master/slave terminology be non-correct in describing the participants?
Edit:
xxxYes absolutelyxxx
The terminology would be correct. But that's fiction. This is real life with real consequences. The reason it's being removed here is because it's ignorant and disrespectful.
> Yes absolutely
Ehh what?
I genuinely doubt that many people are offended at master/slave terminology. I personally am not offended, yet I would prefer if we did not use such terms.
Why? Because words matter, and I recognize that where we decide to move terms into every day parlance has an impact on how people think. This after all is the basis of some groups trying to “reclaim” a word by trivializing it’s usage.
As a thought experiment imagine if we got into the habit of naming services or concepts after the Holocaust. How do you think that the casual, daily reference to that event in a different context would affect our perceptions of the 20th century genocide? Would it make us treat the Holocaust more casually? Now imagine how you’d feel if German companies started using that term casually. Kind of icky, right?
That being said, I don’t think that anyone who doesn’t want to go to the trouble to replace every instance of these words going forward is a racist, nor should we tolerate such abuse from a crowd that’s nominally supposed to be doing the right thing. We can advocate for well-meaning changes without being jerks, I hope.
Personally I plan on just using new terms going forward, but I won’t go back and rename every single thing I’ve ever written.
Also, master/slave really isn’t racially independent in America. Slavery is an institution that has cropped up in many places at many times; but here in America slavery refers specifically to the form of chattel slavery that occurred here, and therefore does carry more than a hint of racial overtones.
Obviously you don't name something in programming 'pimp' / 'bitch', or even more extreme I suppose: 'white_guard' / 'n_____', that's obviously childish, unwarranted, and just for the sake of provocation. Like I've said though I think of 'master/slave' as perfectly fine descriptions regarding their function and I have always thought of them as racially neutral terms, and if you want to change long-standing naming convention there should be a case for it. And I just think it isn't there.
By the way: For the very first time in my life, a few days ago, have I ever thought of 'whitelist'/'blacklist' in terms of skin color.
white vs black, bright vs dark, , "shining bright light" vs "tempted by darkness", etc, it was almost a Eureka moment: "How can people think of skin color there?"
That makes me think that people are spurted into activism, blindly 'looking for problems', and once you start looking it's easy to see it everywhere. We are pattern seeking animals - if I believe in conspiracy theories, I will over evaluate whatever confirms my beliefs - and I honestly think the same happens in cases of people who take social justice too far (thinking of 'master/slave' as inappropriate naming conventions in programming after decades of use) ; (and I hope it's unnecessary to add: I am not denying the reality of racism ; just trying to doubt the usefulness and legitimacy of taking the sensitivity into far off areas and to a degree that is unwarranted)
I guess I am just emotionally detached from this as can be, as someone who doesn't follow daily news, and is not an American. It's weird for me to accept:
'why can't I use master/slave anymore?'
'because a black man was murdered by police in a country across the Atlantic, and now they are looking to prune any mention of slavery from everywhere they can find it'
'what?'
You can't clean up the language to a point of where 'no one' is offended. Master/Slave seems like such a low level of 'potential for controversy' to me, that I am really worried about 'if that one isn't acceptable after decades of use anymore, what next'
> Obviously you don't name something in programming 'pimp' / 'bitch', or even more extreme I suppose: 'white_guard' / 'n_____', that's obviously childish, unwarranted, and just for the sake of provocation.
These are all words with literal meanings that could theoretically apply to some aspect of some system. But you admit that these words are inappropriate to use, presumably because of the additional connotation and cultural context that comes along with them.
Is it so difficult to imagine that other words, words that you do not personally have the cultural context to find offensive, could feel the same way to other people who have lived through different experiences?
I am glad that you realized that it’s theoretically possible that the bias in our language of associating blackness with evil or badness might be something that affects people. I think it’s easy to say something like, “oh it’s never been about skin color, don’t be so touchy” when you’ve never had that language constantly around you while society is also actively telling you that you are worth less because you are black. But if you’re a black child being bullied in school for your skin color, that language might take on shades of meaning that seem much more sinister.
I don't think there is a racial bias in associating blackness w/ evil or 'whiteness' with good, I rather think it has to do with night/darkness vs day/light. Do you think 'red' as a widely used 'warning light' somehow relates to 'native Americans'?
Like I've said, I never thought of it in terms of race ; once you start actively believing that biases are EVERYWHERE, you will see them everywhere, automatically. And I think for one, that this is an extremely obsessive way to live, and also a battle one can never ever win, and the question 'where does your quest for justice stop', is warranted.
I always thought there was a 'common sense' approach, pruning any mention of 'slave' as terminology in programming / system administration after decades of use for me seems to be extremely far away from it.
Whatever happens w/ naming conventions here, I will eventually adapt. But I seriously fear that this quest for justice, especially in 'language' goes far beyond common sense and is about actively looking for problems, that are none until identified.
I think maybe I didn’t make my point clear here. I don’t think that in these particular examples there exists racial bias in the language. The language (most languages) is biased (but not racially) towards associating darkness with evil and light with good. If you personally are experiencing racial bias due to having darker skin, I think language like this can feel very different than it would otherwise, even if the language itself is not explicitly racially biased. I’m not saying we should abandon the whole light/dark evil/good dichotomy, but just pointing out that things built in to the culture that aren’t technically related to race in any way may feel very different if you’re on the “good” side than if you’re on the “bad” side.
> It's not at all difficult to assume that something is offensive to someone, but not to me. It's extremely easy that for any different person, different phrases are considered offensive. But the solution of 'let's create a world where nothing is offensive anymore' seems ludicrous.
I agree that it seems impossible to avoid offending every individual. But, when it’s so easy to avoid using language that has negative connotations for a significant portion of the population, why shouldn’t we? Why cling so tightly to not being kind, out of some kind of slippery-slope assumption that if we give ground and have empathy this once, the word will end?
It’s really odd to me how offended people get by the suggestion that there might be something offensive about the language they use. I have no ties to the words I use. If I want to be friends with someone or to include them in what I’m doing, and they have a problem with some word I use because of some context that I haven’t experienced, it does me no harm to use a different word.
> I always thought there was a 'common sense' approach, pruning any mention of 'slave' as terminology in programming / system administration after decades of use for me seems to be extremely far away from it.
Here I think you’re taking offense at a situation that doesn’t exist. What I’ve seen is people trying to avoid perpetuating the problem by not adding new instances of the world slave to new code/systems, or making updates to use different language when it’s convenient and someone’s already touching the code. These actions hardly seem to me to be pruning any mention of the term from decades’ worth of software.
Language, it’s important to remember, is descriptive, not prescriptive. It is always changing along with society and culture. It’s therefore natural that what is considered acceptable or not is going to change over time, and we’ve always had to deal with this as a society. Look at people wanting to ban books for using words that have become offensive, as an example. The interesting thing about software, as opposed to books or words engraved in stone on monuments, is that it’s often very easy to change the words that are used, because software isn’t a historical artifact but a living thing. And as a living thing, people are going to want it to reflect their own current societal norms. So changes like this seem an inevitable part of a long-lived industry that creates such mutable products.
Regardless, it hardly seems worth getting so worked up over someone else choosing to make this decision in the codebase that they maintain. It is their right as maintainers to do so, and if you disagree so strongly with them making this small token of empathy, you can of course choose to use another filesystem.
- It's about where the goal post is. Let's not forget what the original discussion is about. You invoke a lot of 'emotional imagery' ('why not be kind'), we are talking about long standing naming conventions that can be thought of as being non-racial and no one had a problem with 2 months or 2 years ago, now becoming a problem because people think they are doing something positive here, while it's not addressing ANY problem regarding racism at all ...
- software is both, living and artifact - we are not talking about a new program written in 2020 using some weirdly offensive and arcane naming conventions, we are talking about retroactively updating naming conventions in programs. Regarding societal norms we always play catch up, should I vet my code once a week to check if it is still conforming to PC-culture?
- software is a technical thing, we programmers like to think of it as non-political ; like I've said multiple times I think already: when I read source code thinking about racism is so far off my radar, that it's insane to see 'master' and 'slave' and think of it (for me, at least). Which also ties in with the point I tried to make, that some people are so ingrained in their social justice war, that I think they just see 'racism' and 'bias' EVERYWHERE.
- a lot of people feel 'pressured' into complying with what they regard to be ridiculous changes (when it comes to technical merit) because there is a certain amount of people who view non-compliance with whatever their current crusade is about as 'unkind' - if you think me using master/slave terminology has something to do with the topic of racism in the United States, I refuse to make that connection I guess.
- ultimately: it's probably more about people patting themselves on the back, for having done something, and for having changed nothing - and I deeply resent that. In other words: blind activism at its best.
> Like I've said though I think of 'master/slave' as perfectly fine descriptions regarding their function
I disagree with this. Master/Slave is in fact a pretty terrible description of most of these systems, and appears to have been shoe horned in.
In most master/slave systems the master does all of the work, and the slave nodes exist either for duplicate read capacity, or as a hot standby in case the master fails. This is not the way that historical masters and slaves interacted, to say the least. I believe that "primary/secondary" or "primary/standby" is actually a much better description of the actual function of these systems.
> white vs black, bright vs dark, , "shining bright light" vs "tempted by darkness", etc, it was almost a Eureka moment: "How can people think of skin color there?"
Some of those are tricky, because lightness and darkness is also a good faith description of how human vision works.
But who would see black and white as a description of skin color? Pretty much every American. There is some nuance to terms like whitelist and blacklist (that I have not yet made up my mind on, btw), but when it comes to naked terms like "black" and "white", that is exactly how Americans refer to each other's skin color.
Maybe it's different in your culture. Again, a lot of the people discussing these things are Americans talking to other Americans.
> 'because a black man was murdered by police in a country across the Atlantic, and now they are looking to prune any mention of slavery from everywhere they can find it'
That is a pretty poor explanation of the phenomena at hand. A better description would be "a murder of a black man triggered massive social upheaval and a society wide moment of soul searching about the nation's history both of slavery and poor post-slavery treatment of black Americans. This change has included everything from significant reversals in opinions on policing, the Black Lives Matter movement, the naming of military bases, public display of confederate monuments and flags, all the way down to an investigation of the use of language in software engineering."
The discussion around the use of terms in software isn't because "a black man was murdered", it is because America is experiencing massive social shifts around how we treat race in America. A discussion of how we name pieces of software is probably the absolutely smallest portion of a massive change.
That's partly my point though. That if you are bombarded with 'racism' as a topic daily, and want to do something about it, you are tempted to do something, at least something, and once you are actively looking for problems, you will find them. Once you are convinced that it's everywhere and has to go, there is next to no limit where your quest might lead you. It having lead to this right here is the perfect example.
'Master/Slave is in fact a pretty terrible description'
'primary/secondary' is nice, master/slave is just extremely ingrained, let's agree on that, so you know what is meant by it. I deeply hope we won't have 500 various naming conventions for what used to be called master/slave.
"But who would see black and white as a description of skin color? Pretty much every American."
Then let's discuss THE CAUSE FOR THIS. Because it's wrong, it's wrong to invoke race everywhere those two colors are mentioned in some specific context. Is renaming everything maybe just putting a shade over something that Americans should confront themselves with more honestly, more deeply, because I know via my upbringing, that I never would have thought about whitelist/blacklist as skin color, it would have been so far away from my radar... maybe you think renaming master/slave here will somehow have a ripple effect, or is part of something bigger and a warranted change. I think it will do exactly nothing, and is just blind activism that breaks decades of convention.
'That is a pretty poor explanation of the phenomena at hand.'
I was over simplifying on purpose, because what I wanted to portray was 'someone outside of it' I guess.
'software is probably the absolutely smallest portion of a massive change.'
I think it's just something to make people feel better, 'we've done something about it now', it's the 'smallest portion' of massive change, it's also the most non-impactful, which is why I find the case for it to be weak.
The thing is, it's not even "mass" insanity. Working people who are busy with a family and such don't really post on social media, as they simply have no time. This creates a pretty large divide between the internet and real life. Though, I say this as someone not being part of the tech world which is more closely connected with social media.
What a strange world, really. Imagine the Germans renaming the command "kill", SIGKILL and so on for the same reason. (Or even stronger, as direct victims of WW2 are still alive.)
It's not even a white/black thing. White people has had white slaves (millions), black people has had black slaves (also millions).
The Atlantic slave trade is just example of slavery. It has existed in many civilizations:
“Evidence of slavery predates written records, and has existed in many cultures. [...] the practice of slavery [...] proliferated after the invention of agriculture during the Neolithic Revolution, about 11,000 years ago.
Slavery was known in civilizations as old as Sumer, as well as in almost every other ancient civilization, including ancient Egypt, ancient China, the Akkadian Empire, Assyria, Babylonia, ancient Iran, ancient Greece, ancient India, the Roman Empire, the Arab Islamic Caliphate and Sultanate, Nubia and the pre-Columbian civilizations of the Americas.”
We have plenty of other organisational terms to denote a higher rank. What's wrong with those? They might even be more accurate. I don't suppose DBAs get in a ship to pillage and loot foreign lands for their database redundancy.
I see too many people arguing semantics or historical bias, or whataboutisms but barely anybody giving positive arguments to preserve the master-slave terms in tech. If "all races have had slavers" is the best you've got, perhaps it's time for change.
You don't agree —and that's fine— but does it harm you to rename it? That is past the initial inconvenience of it not being the word that it's been before... Is that any more inconvenient than the other API changes that almost all software goes through at some point?
I can understand some light grumbling, but I don't see why people get so bent out of shape they feel the need to start summarising slavery through the ages.
"It's just a word" swings both ways.
And if you think that no professional developers ever break their APIs on a whim, you're either very young, or haven't been paying attention. Google does this all the time across their ecosystem. It's annoying, but you learn to get over it.
If you don't like it, fork it.
If that makes them happy then good for them. Although I personally think that this is a waste of time and also dislike the moral high ground that they attempted to take (trying to take advantage of the current climate to advertise their virtues), as if these that do not change the terminology used are somehow morally inferior. I do wonder if that would cause some form of incompatibility (between existing zfs tools and other zfs implementations, including previous openzfs versions) but I presume that they were careful about that. In addition I am annoyed that they decided to censor the linked thread.
Edit: apparently it did not change any API names.
Edit2: Surely I am not the only one who finds it ironic that they are using GitHub - a company which supports ICE, right?