1) We have a SLAVEOF NO ONE command which is very popular.
2) We have a note about slavery here: https://redis.io/commands/slaveof
For new projects I suggest to pick other terms as well, even because master and slave are kinda inelegant IMHO other than linked to bad things.
I can respect (and disagree with!) the backwards compatibility argument.
I've always found you to be a considerate and thoughtful maintainer (no easy thing) whose work I really admire. So, I'm very glad to see that you've taken the steps you have on this front.
Thanks for your reply.
It's a choice whether or not to use these words, and any project can use them or not as they see fit. They are common in the field after all. I definitely think there's a high road here, and you've taken it, cheers!
Bravo and thanks for pushing the envelope forward.
Regardless of whether you agree with the changes, the fact that these discussions are occurring about the code that we write is really great. I love seeing how we can take code to a much different level than the 1s and 0s it is often reduced to in the mind.
I'd love to see some other examples of similar movements in software whereby we are taking great care of the code we write as an author, historian, or any other writer would take care of their own words.
[1] - https://www.drupal.org/node/2275877
[2] - https://issues.apache.org/jira/browse/COUCHDB-2248
Worth mentioning that "ciao" originated from "I'm your slave" - maybe in v5 we can have "ciao <master_ip>" :)
> The word derives from the Venetian phrase s-ciào vostro or s-ciào su literally meaning "I am your slave". https://en.wikipedia.org/wiki/Ciao
Comparing this carefully considered reply to all the others also gives me some more evidence that those that excel at technology are often remarkable people in many other aspects as well.
...is it? i guess my interpretation of saying 'unfortunate' here is that there is some kind of sentimental attachment or something.
are there legitimate practical issues?
If slavery is not wrong, nothing is wrong.
-- Abraham Lincoln
I've been trying to get an intuition (make myself feel good) about the material conditional logical connective and this seems to satisfy the case for a false antecedent and false consequent (¬p→¬q). The equally true statement seems to check out: If slavery is not wrong, something is wrong. (¬p→q)
However this also evaluates to True which annoys me: If slavery is wrong, something is wrong. (p→q)
And this evaluates to False: If slavery is wrong, nothing is wrong. (p→¬q)
I get that the formal definition of → is different from English's if/then but that just makes understanding proofs so much harder. Perhaps someone could better paraphrase Lincoln in first-order logic?In this case, you cannot see the statement as being about boolean true/false values. It only works on an ordinal scale, and our calibration of the cutoff for "wrongness". Slavery here is assumed axiomatically to be "really really bad". In fact, among all the bad things, it is the worst. But is it wrong? That depends on how bad something must be to be wrong. But if you do not consider slavery to be wrong, but merely bad, nothing can be wrong, because everything is less bad than slavery.
So this is basically Lincoln trying to argue for AUC as a better metric than sensitivity/specificity.
(Bear with me, it's been a while since I've done rigorous proofs.)
Let's say there's a function R that outputs a numerical value of an actions morality.
Let's define an action as wrong if R(action) is below some threshold M.
So what Lincoln is saying is:
R(slavery) >= M -> R(action) >= M for all actions
If we assume Lincoln's statement to be true, that must mean that R(slavery) <= R(action) for all actions.
Which can be reduced to R(slavery) = min(R(actions))
Translated to English, Lincoln is saying that slavery is most morally despicable act.
Outrage fatigue is a thing. I just want to build, and save the politics for my off hours.
Edit: mods, feel free to detach as off topic. I did not expect this to go off the rails, and I don't want to take away from antirez's achievement
> it doesn't seem to be a fight worth having
Technical correctness is a fight worth having. Human decency is a nice side effect.
> the words only have meaning if you give them meaning
That's not how words work.
Out of interest, what is your opinion on male/female USB connectors? Does one deserve to get fired if they make a joke about "big dongles"?
The term "slave" isn't even a good technical term. It would be better to call it a follower or replica which better approximates it's actual role. Not only is it "politically correct" it's also "technically correct", the best kind of correct.
Of course it might be I who've worked in such a bubble too, but given the number of people here who seem to find it annoying that people are even suggesting not using it, I'm inclined to believe the use of master/slave has remained more common that you think.
Where is this magical place you speak of?
https://translate.google.com/translate?sl=pl&tl=en&js=y&prev...
Slavery is a significant topic in the US. It was a prelude to the civil war; it was abolished within recent memory; and the echoes of racist sentiment still affect the lives of millions: people alive today remember segregation, and both casual and systematic discrimination against African-Americans continue to occur.
This is not a big deal in Poland, which has no such extensive recent history with slavery.
But - for example - in 2015 the Russian ambassador in Warsaw was excoriated in public and summoned to the foreign ministry for his remarks partly blaming Polish policy in the 1930s for contributing to the start of WW2 and the subsequent death of millions of Poles. Now that was a raw nerve.
A different standard does not mean the absence of standards. People who fail to see that, and then mock others, are simply demonstrating a lack of self-awareness.
But that was the point I was arguing for. That US standard is not everyone's standard.
Is it over the top though? It's a references to a deplorable practice that humans do; why shouldn't we strive for something more civil, and more technically correct? The slave of a database isn't the property of the master and subject to its every whim; it's a replica of the data that can do separate, independent things from the master with that data.
> Out of interest, what is your opinion on male/female USB connectors? Does one deserve to get fired if they make a joke about "big dongles"?
As for gendered connectors, the terms themselves don't carry (or shouldn't :() any judgment nor does it's usage. A valid cable, pipe, &c doesn't have to be heterogeneous/hermaphroditic and can be homogeneous. I would hope that the LGBTQ community wouldn't be offended that only M/F ends can "mate", as biological "mating" (i.e. copulation for the purpose of procreation) can only happen between M and F ends, and see it as a judgment on non-procreation intercourse.
However, if there was an issue about the term M/F being a judgment call, it would be responsible for the community (well, all communities, as the terms M/F for connectors goes beyond just electrical connectors) to listen and (slowly) introduce better names.
There is no reason to make a large portion of the population uncomfortable when it literally costs us nothing to change it (over the long run).
So when do we rename 'kill'?
On a serious note, I've never actually understood where the term "hung" comes from in computing. Why is the process "hung" and not simply "stalled" or something else.
The modern interpretation is that system operators need to feel like they have a big penis.
ah
> The modern interpretation is that system operators need to feel like they have a big penis.
I actually didn't even think of it in that regard. I regard hung as in something that is hanging (dangling) from something else.
Killing is not deplorable. Murder is deplorable. (I'm a vegetarian, so I find slaughter for food deplorable too, but I'm in the minority here.)
Master/slave describes the relationship between the services and has been standard terminology for decades. I have yet to hear of any IRL victims of slavery that are miffed by the use of this terminology.
Do not be offended on someone else's behalf.
If someone has been around long enough to understand what a "slave" is can't figure out what a "replica" or a "follower" does, maybe they shouldn't be in tech. The transition cost for documentation is essentially zero.
Naming things is hard, and better names are better for everyone. Antirez said he would change the name if he could start over, hence the hill you're dying on is not shared by the author of the library you're posting on.
Edit: For clarity of argument.
>This hill you're dying on looks awfully lonely.
Ironic coming from a grey response to a 15 point comment.
I will change my tune if even one victim of slavery comes forward and speaks about the use of the terminology.
I'm glad that your concerned that "follower" and "replica" aren't perfect terms. We should be concerned with terminology.
I humbly suggest that "slave" DBs are not physically whipped by their "masters", therefore are an even worse metaphor.
> These arguments are a waste of everyone's time.
Then why are you wasting your time? If you don't care, don't argue back. Boom, you've got your time back. We all get a better name, everyone is happy.
Here's a question: if "slave" is offensive, should "kill" (as in 'kill 69' to kill a process in SQL Server) be considered offensive as well? Simply as a consequence of being something 'bad/immoral'? I'm sorry, and I'd be glad to be corrected, but I genuinely find this argument...disingenuous. And people who see things the same way I do see that kind of argument and think that you've got other motives.
EDIT: I want to say (to prevent this discussion from flying off into Trump-land) that I'm liberal on most issues except gun control. I just have a hard time relating to the 'micro-aggression-y' brand of liberalism I've been seeing of late.
> I genuinely find this argument...disingenuous
My argument is that the term is not technically correct. How is that disingenuous?
Edit: Edited this note to mention I updated the previous note with an edit note.
There are probably hundreds of ill-fitting terms in the tech world that now mean what we mean them to mean (lol). This one receives blowback not because it's technically unsound (which it might be), but because some paint it 'offensive'. That's why everyone seized on this part of your (now edited) argument.
EDIT: thanks for being honest btw
What is easier having to have this conversation EVERY time the term gets used for the rest of eternity, or making the change once and being done with it?
That's not very compelling. Just because certain people make a lot of noise doesn't mean we have to do what they want us to do.
>For most projects it seems like a pretty easy change. You could add new keywords, alias the old methods/commands to them. You don't even have to deprecate them, just make the docs point to the newer terminology.
...for every project that uses these terms across the entire industry. You know what's easier? Not making the change. There are two arguments:
1. The technical gain by changing these terms outweighs the drawbacks (legacy code, consensus/convention, etc.). I doubt there's much to gain here.
2. The technical aspect doesn't matter since it's offensive. I've already addressed this.
Antirez said if he started a new project it would be named something different. I can only assume some other future databases will will take this approach. Maybe Antirez will write one of them. When that happens now we have a new problem: divergence in the ecosystem.
My preference would be for a big project to adopt a separate term, "secondary", "follower", "replica", whatever. So that when other new DBs look for an "alternative term" there is somewhat of a standard. Really though, that's not even that bad of a problem, because when i say all those terms, "secondary" etc. it's pretty obvious in the context of a DB what i'm talking about.
Do you have to do something __just__ because people are making your life hard? No. Do you have to make a change just because something is technically incorrect? No. Do you have to make a change because something is offensive to a large group of people? Still no. Maybe a better question to ask is, at what point would the tables be turned? What would push you over the edge to say it should be changed?
Agreed - I was talking more 'sum' than 'average' cost.
>Antirez said if he started a new project it would be named something different. I can only assume some other future databases will will take this approach. Maybe Antirez will write one of them. When that happens now we have a new problem: divergence in the ecosystem.
Also agreed, divergence breaks the 'consensus/convention' I mentioned earlier. That definitely has consequences, although in this case it wouldn't be too bad, as you mention next:
>My preference would be for a big project to adopt a separate term, "secondary", "follower", "replica", whatever. So that when other new DBs look for an "alternative term" there is somewhat of a standard. Really though, that's not even that bad of a problem, because when i say all those terms, "secondary" etc. it's pretty obvious in the context of a DB what i'm talking about.
Also true, and (assuming we're making the change) that seems to be the path of least resistance. At least we'd only have one new term, lol. And they are fairly clear.
>Do you have to do something __just__ because people are making your life hard? No. Do you have to make a change just because something is technically incorrect? No. Do you have to make a change because something is offensive to a large group of people? Still no. Maybe a better question to ask is, at what point would the tables be turned? What would push you over the edge to say it should be changed?
It's hard to quantify the factors imo. You kinda have to balance consensus/convention & migration cost vs. 'cost of incorrectness' & 'human cost of offensive term'. Cost of incorrectness is a big one if newbies struggle to understand the tech due to confusing terminology, but I don't see that here. If the term were truly offensive I'd agree that that'd tip the scales. I just don't see it.
For Django the change was much simpler because it was mostly a docs/tests change. However, here, we'd have to change Redis' API (or include more than one way to do the same thing).
Raising the point is fine. Discussion is important. But making the change, in this case, has some clear downsides that antirez has carefully weighed against the pros.
A good practice should be to try to find the most convincing voice (online, not just here) with an argument that answers this question.
That's the best route to honesty. If you can't do this then you're not up for debate.
This is something we all have to do with all of our arguments or questions.
If a question is not investigated it becomes a statement. Just because the person that you're asking cannot come up with a good answer does not mean that a good one does not exist.
So you win by make a statement and not asking an honest question.
Do you think whitespace commits are censorship? Both make for better reading and more accurate representations of our technology.
Edit: Donating to FBM could be a way: http://www.freeburmarangers.org/
The actual behavior of a "slave" would better be described as a "follower" or a "replica". In an IRL master/slave dynamic the master does not first do the work only to be copied by a slave. The slave does all the work while the master whips them.
It's better to choose a more technically correct metaphor/terminology.
https://en.wikipedia.org/wiki/Master/slave_(technology)
In the computing world, this is what master/slave means. And has for 40 years. It doesn't matter what the words can also mean, just like it doesn't matter that the word whip can mean a kind of desert, or to stir.
You need a dictionary.
The old term is confusing to newcomers, and changing it to something else would not break the brains of any tech oldtimers.
They stuck with it to avoid breaking backwards compatibility.