Replace "master" and "slave" terms in Redis #3185

Open
nslater opened this Issue Apr 21, 2016 · 58 comments

Projects

None yet
@nslater
nslater commented Apr 21, 2016

Inspired by django/django#2692, Redis should replace its "master" and "slave" terminology.

The summary is: master and slave have racial meanings (especially in North America, but also more generally) and it would be good to avoid them. Django went for primary and replica. I am not sure what makes the most sense for Redis.

Worth noting, CouchDB made a similar change. As did Drupal.

@philcryer

I've seen primary and secondary before, but replica is more in line with the function of the nodes.

@nslater
nslater commented Apr 21, 2016

@philcryer that's what I thought too, i.e. "replication" to "replicas".

@kerrizor

I've also seen leader and follower on some projects

@misiek08

Please, leave redis and whole IT alone. DNS uses master-slave terminology since the beginning so the Internet should be closed and humankind will be still using stones to make fire.

@ssanders

gru and minion

@CloudMarc

+1 for primary/replica

On Thursday, April 21, 2016, Scott M. Sanders notifications@github.com
wrote:

gru and minion


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
#3185 (comment)

@misiek08
@markuman

origin and clone

@mariano-perez-rodriguez
Contributor
mariano-perez-rodriguez commented Apr 21, 2016 edited

Comments inline:

The summary is: master and slave have racial meanings (especially in North
America, but also more generally)

Most words have a plethora of meanings, it is YOU (the reader) the one who
chooses to take a system's dynamic description term as a racial thing, so,
maybe you should just not do it.

and it would be good to avoid them.

Why?

I am not sure what makes the most sense for Redis.

To leave it as it is. The burden of proof that this particular naming
scheme is causing hypersensitive people to have seizures using Redis is on
you. As is any perceived benefit to be reaped from changing it.

Worth noting, CouchDB made a similar change
https://issues.apache.org/jira/browse/COUCHDB-2248. As did Drupal
https://www.drupal.org/node/2275877.

This is fallacious, I don't much care what other people do, it is not an
argument for anything in particular.

This has already been mentioned before, and was, rightfully, shut down. It
takes a very special kind of person to appoint itself the language police
and try to shove its own "correctness" on everyone else.

[edit: formatting]

@antirez
Owner
antirez commented Apr 21, 2016

TLDR:

  1. If I would start Redis from scratch I would pick a different terminology.
  2. Now to switch would be too confusing: change of API, documentation, and so forth. We have a big tradition of backward compatibility to the point you can run in Redis 3.2 an application written for the first Redis beta released 7 years ago.
  3. Redis has a SALVEOF NO ONE command that was designed on purpose as a freedom message.

So I'll leave it as it is.

@misiek08
@itamarhaber
Contributor

Another classic for the books.

@HeartSaVioR
Contributor

Seems like no one thought about SLAVEOF NO ONE!
Awesome. Hey Antirez you make my day!

@antirez
Owner
antirez commented Apr 22, 2016

I was pinged on Twitter an endless number of times about it :-) People new to Redis the first time they read the command usually understand there is something going on there...

@antirez
Owner
antirez commented Apr 22, 2016

I added an anti-slavery message inside the SLAVEOF manual page: http://redis.io/commands/SLAVEOF

@TheCheapestPixels

It's not a problem when it's consensual kink.

@itamarhaber
Contributor

IMO dominatrix and submissive is the politically correct terminology, since
it is in fact consensual as well as puts the gentler gender in the proper
place.

BTW today is Passover, which is all about the Hebrews becoming SLAVEOF NO
ONE, so perhaps Pharaoh and Moses should be considered next time Redis is
built.

On Fri, Apr 22, 2016 at 2:48 PM, TheCheapestPixels <notifications@github.com

wrote:

It's not a problem when it's consensual kink.


You are receiving this because you commented.
Reply to this email directly or view it on GitHub
#3185 (comment)

Itamar Haber | Chief Developer Advocate
Redis Watch Newsletter http://redislabs.com/redis-watch-archive |
&&(curat||edit||janit||)
_Redis http://www.redislabs.com/_Labs http://www.redislabs.com/ | ~ of
Redis

Mobile: +972 (54) 567 9692
Email: itamar@redislabs.com
Twitter: @itamarhaber https://twitter.com/itamarhaber
Skype: itamar.haber

Blog http://redislabs.com/blog/ | Twitter
https://twitter.com/redislabs | LinkedIn
https://www.linkedin.com/company/redis-labs-inc

[image: #RedisConf] http://redisconference.com/

@nslater
nslater commented Apr 22, 2016

@antirez could the change not be done so that, say, "replica" (or whatever) is the new term (in the API and other places) and "slave" is an alias that also works (for backwards compat) but is either deprecated in the docs, or otherwise not mentioned.

I am not sure SLAVEOF NO ONE really fixes the problem.

@JustSomeGuy83

This is really stupid.

"I am not sure SLAVEOF NO ONE really fixes the problem." - okay WHAT PROBLEM?

It's slave/master which are very well established terms for "the thing that controls the databus" or "the bit of software that dictates what the others do and coordinates things and the other ones that obey".

If it was "Massah" and "N!gger" I'd totally agree with you.

You're making an issue where there isn't one.

Anyway, to the people that'd make the decision:

Should the Tumblirites flock here and make it seem like the populace is skewed in favour of changing these terms please remember that isn't a representative sample.

Don't break the API, don't break scripts that might use the words, and don't create synonyms.

@antirez
Owner
antirez commented Apr 22, 2016 edited

@nslater using different terminology inside the code, in the INFO output and API, compared to the one used in the documentation, is not a good practice I think. Moreover I believe that retaining the terminology, but making people aware, as I tired to do in the SLAVEOF manual page, and as I'll do in other parts of the Redis documentation (the replication main page), is a very interesting alternative to banning single words. People aware of history have a much stronger defense from doing the same mistakes in the future, like the horrible thing of slavery, so I believe that by writing an anti-slavery sentence, linking to the wikipedia page I'll reach an higher goal:

  1. To make people aware that the terminology used by Redis is not related to human slavery.
  2. To try to make people read what slavery was about, how terrible it was, and that we should not make the same error again.
  3. To show that there is another way compared to banning words, that is mostly a formal thing IMHO, and is the way of knowing what happened.

I myself tried to improve my own standards. I'm strongly against death penalty. I consider death penalty one of the most terrible things currently humanity is doing, so for several years I refused to trave to countries applying death penalty, including the United States. I may try to make people change the kill Unix command maybe, but I believe a more (much more, to ban the kill command is just useless) effective way to reach this goal is to support the Europe Union and other political actors that are trying to eradicate death penalty from the world. So I started to travel to US again since it was just a formal thing, but also to support more actively and in the open anti death penalty movements and political actors. I want to do a similar thing here with slaves and masters.

@JustSomeGuy83
JustSomeGuy83 commented Apr 22, 2016 edited

I think differentiation should be called "trans-integration"

@nslater
nslater commented Apr 22, 2016

Slavery is not a thing of the past. It continues to exist in many forms, not least of which is the prison industrial complex. "Slave" as a metaphor (and its use in Redis, etc.) cannot be detached from this. In fact, its function as a metaphor depends on this.

I'm not suggesting you ban the word. I'm suggesting you deprecate it. This is a pretty standard practice across the software world as APIs change but need to keep backwards compatibility. The docs can simply mention there is a depreciated term that still works for old code.

@antirez
Owner
antirez commented Apr 22, 2016

Again, by using this term in Redis and by linking to external pages, I want to take the opportunity to remember that we are all slaves. Slaves of businesses, of food advertising, of industrial complex, of politically correct rules to follow, and so forth. Feel free to address the same problem in different ways in other software projects, but for Redis I want to purse this way I said.

@JustSomeGuy83
JustSomeGuy83 commented Apr 22, 2016 edited

But why deprecate it? What's actually wrong with it?

Has some guy been found who was like "I was changing the jumper on an old IDE hard disk from cable-select to master/slave because of some silly motherboard thing and suddenly I realised slavery is okay and kidnapped some children" - oh no, think of the children!

Also how dare you compare slavery, the enslaving of innocent people, to the punishments that society puts convicted criminals though.

You make me sick.


@antirez careful what you say here, all it takes is one person to take it wrong and if/when this blows up it may backfire. (Not a threat at all, I'm totally on your side, I'm parodying it though, you've got your real name and stuff attached to this)

@antirez
Owner
antirez commented Apr 22, 2016

@JustSomeGuy83 as I said IMHO this is purely a formal thing. You cannot understand that without putting it in the perspective of US politically correct movement. But IMHO it's an extremely ineffective way to improve society. Assuming a software project should be entitled of making people aware of human rights, even if 0.00001% of people reading Redis doc will follow the link to the slavery wikipedia article, I'll reach a much higher goal than the formal thing of deprecating words. Unfortunately politically correct movements are a lot about the formality and very little about the substance.

@nslater
nslater commented Apr 22, 2016

@antirez it is highly insensitive and ignorant to suggest "we are all slaves". Your comment that "having to follow PC rules" is, in effect, slavery, is especially galling.

@JustSomeGuy83

Right on "sista"

@antirez
Owner
antirez commented Apr 22, 2016

@nslater you just earned the "first to offend others in a Politically Correct thread" badge.

@JustSomeGuy83
JustSomeGuy83 commented Apr 22, 2016 edited

@antirez please be careful (see above) https://twitter.com/nslater don't underestimate a networked crazy person.

@antirez
Owner
antirez commented Apr 22, 2016 edited

I'm just trying to do what I think is correct... but thanks for the advice. @nslater proposed a change. I don't agree but I like the idea of using an OSS popular project to inform people about human rights and related things, so I made some change. Now if @nslater is not happy with what I did I'm sorry but I will not obey to what she says here just because I must...

@JustSomeGuy83
JustSomeGuy83 commented Apr 22, 2016 edited

@antirez yeah that can backfire too. ICANN once started a meeting with "and we just want to say how awful it was [some world disaster, I think it was a flood] is and our "hopes and prayers" (because that's valuable) goes out to the families and the children"

They're ICANN, they should do the thing that they do and nothing else. That was just meeting minutes.

I can see using docs to promote any agenda/cause going bad.

You answered with "no, here's why [ancient API breaking reasons]" and made it clear that you yourself don't long to retire one day to a sugar plantation or diamond mine surrounded by enslaved Africans. You need not say more.

BTW is there a private message thing on GitHub? I'd love to know if Redis has any sort of transaction support. (Beyond http://redis.io/topics/transactions )

@antirez
Owner
antirez commented Apr 22, 2016

I don't think there are private messages in Github, but yep we got some kind of transactional construct which is not a transaction in the *SQL way, but similar: http://redis.io/topics/transactions

@nicatronTg

The point of changing the terminology isn't to make you guys feel good or bad, it's to be welcoming and open to people who's world view is completely different than yours about slavery. Slavery and discrimination still happen, today, in the real world. You are actively discouraging a future set of programmers by keeping this the way it is.

Noah is just trying to encourage positive change. Let's encourage positivity for once.

@barmintor

if anything, documentation quality is an argument to change away from the more metaphorical master/slave terminology and towards something more descriptive. We're in an industry with a long history of recognizing the importance of naming (it's the other hard problem, besides cache invalidation). Replica actually reflects the thing we're talking about (it's right there in the URL http://redis.io/topics/replication).

@JustSomeGuy83
JustSomeGuy83 commented Apr 22, 2016 edited

[comment removed by @antirez because it contains too much offenses]

(was observation about the 3 white guys getting involved)

@nslater
nslater commented Apr 22, 2016

@antirez wrt the last comment, are you going to permit this kind of behaviour?

@antirez
Owner
antirez commented Apr 22, 2016

@nslater no I don't like insults. Since I don't like also censorship, I'll just act on your behalf if you want the comment removed. Please write a comment with "Yes, I want the comment removed since it offends me" and I'll remove it on your behalf since for me censorship is inappropriate.

@JustSomeGuy83

Can you not just "close" the issue?

@nslater
nslater commented Apr 22, 2016

This isn't about me being offended or not. Of course, I find the comment objectionable. Instead, it's about the sort of community Redis is building, who is welcome here, and whether this sort of behaviour will be tolerated or actively worked against. Perhaps not for me (as I have no immediate plans to further contribute) but for others who will see this.

@antirez
Owner
antirez commented Apr 22, 2016

@JustSomeGuy83 I consider this a public debate so to close this seems inopportune, even if I think the probability of good things happening here is extremely small.

@antirez
Owner
antirez commented Apr 22, 2016

@nslater people will see that here you called me ignorant, and that @JustSomeGuy83 offended you, but I hope most will realize that this is not what happens normally in the Redis community with normal issues. Here the topic is a bit more complex, so I got an ignorant from you and you got offended by @JustSomeGuy83: they'll realize that this kind of stuff generate dramas mostly, especially when trying to be forced, as you are doing in my opinion, after the maintainer of the project stated his point of view.

@JustSomeGuy83

I'll tone it back a bit. I came here to show support and poke holes in arguments (or cases if you prefer) to do silly things. I'll stick to that better.

@nslater - nice try. Trying to pressure someone into thinking "if you don't remove it it must be your view too". Nice FUD tactics from the guy at the Apache foundation over there. Do you have a serious argument (or case, if that word is too strong)?

@nslater
nslater commented Apr 22, 2016 edited

@antirez I said your comments were ignorant, not you. Which they are. It's a factual description, and one which hopefully prompts you to think how and why your argument is flawed. @JustSomeGuy83's comments are not constructive. They are intentionally designed to hurt me and to make me feel unwelcome here. I am hoping you can discern the difference.

Future potential contributors will see that you tolerate hate speech against trans women. Even if this is an usual thread, that sends a pretty clear message.

I am not trying to force anything. I created a ticket suggesting a change. You replied saying backwards compat is important, and I pointed out that other projects manage fine with deprecation.

@nicatronTg

@antirez I think that your response is the most sane reasoning I've seen in this thread. I think that divergence between API and documentation is indeed a very good reason to not institute a change like this, as it would cause problems with teaching people how to use the product.

I still think, however, that working to change the terminology could be done in the future with regard to a new major version or similar. Documentation and source code could change in both cases in one jump.

I appreciate your stance on keeping the discussion open, too.

@antirez
Owner
antirez commented Apr 22, 2016

@nslater I decided to remove the comment @JustSomeGuy83 wrote.

@nicatronTg thanks I think this is sensible, in Disque I specifically avoided master/slave terminology and I'll do with all the new things I'll build. Here after 7 years is very complex to change this stuff.

@antirez
Owner
antirez commented Apr 22, 2016

@nslater btw, just as a person-to-person thing, if you say something I say is "XYZ", you are saying I'm a "XYZ sayer" that is the same to say I'm "XYZ" more or less. I think we should try to all work towards being a bit more kind to each other, otherwise it's just a formal thing.

@JustSomeGuy83

@nslater https://twitter.com/nslater <--- here you claim I outed you, there's a picture of a guy with a beard and below it says "uses she/her" or whatever. I didn't out you, I bothered to read your preferred pronoun and used it in good faith.

It's not really hate speech, have I said anywhere "I hate ...."?

Now you mentioned other projects have switched, some things are easier to update than others, makefiles and bashscripts haven't changed like ever. C/C++ - old programs can be run more or less unmodified.

Not breaking a database is really important. A project I work on still uses MySQL 5.1 and we've got problems with later versions. I'd be really annoyed if I had to update EVERYTHING to use a later MySQL version. (MariaDB (which I prefer) recognised this and the importance of being a drop in replacement - ie not breaking anything)

@JustSomeGuy83

(which comment of mine got removed?)

@antirez
Owner
antirez commented Apr 22, 2016

@JustSomeGuy83 the one where there was "idiot" and alike.

@antirez
Owner
antirez commented Apr 22, 2016 edited

So guys/gals/whatever if you want to continue here:

10 DON'T INSULT OTHERS

20 SAY WHAT YOU THINK

30 GOTO 10

@antirez
Owner
antirez commented Apr 22, 2016 edited

This is pretty BASIC to follow.

@JustSomeGuy83

I can't remember what was in that message.... was there anything of substance?

@superhighfives

The one where you made a rape joke and referred to a trans person as "he/she", @JustSomeGuy83. Just stop. Walk away from your keyboard. You are in no way positively contributing.

@antirez
Owner
antirez commented Apr 22, 2016

@JustSomeGuy83 I saved a copy if you want to re-state it without the problematic parts. Send me an email to antirez/gmail if you want a copy.

@JustSomeGuy83
JustSomeGuy83 commented Apr 22, 2016 edited

I didn't make a rape joke, in the initial version (which I removed this part of like 20 seconds later) I said I feared identifying myself because I'd get like 2 days of crap from people claiming it was a form of rape. This is not a joke. Also I called these people "wolfkin" among other things, and was not referring to the woman/Noah as you claim.

But I was censored by the evil project owner! Gahh! Lol.

Edit: nvm, https://twitter.com/nslater it's preserved here.

RE: twitter, it says there too, and your twitter account is linked to by GitHub. Still not seeing how I "outed" you.

@JustSomeGuy83
JustSomeGuy83 commented Apr 22, 2016 edited

Okay well, I feel I brought balance into the convo :P I'd like to say sorry to @antirez since reading about Redis I've realised it's actually a much bigger project than I assumed and it's unlikely you would have "caved" without my "intervention".

I'm sorry for my odd flavour of support where it wasn't needed. I had never heard of Redis and just assumed a poor developer on github was going to suffer the wrath of Tumblr's spotlight for a few days.

Second to lastly, the idea is really quite interesting, key-value stores are common so I can see the advantages to having a store of them, I'd love some case studies of things Redis is good at and where a classic SQL server with joins, views, indices and tables just wouldn't do.

Lastly, the lack of transactions is a "deal breaker" for a lot of things I would have thought, as you can't do stuff that depends on data you read before. However if you were to implement a "compare and swap" atomic operation, it could be implemented by the user (not great, as if they make a mistake it'll be a bitch to debug, but doable)

Compare and swap works like this. You look at a value, and if it is equal to 0 you swap it with a given value. It's a locking primitive.

If the value is 0 and you compare-and-swap successfully, the value is now 1 and 0 is returned, indicating we got the lock.

If the value is 1 and you compare-and-swap it returns 1 because the value isn't = to 0 so the swap never happens.

With this primitive locking can then be done and all is almost well.

An easy-to-miss deadlock situation is acquiring a read lock and then writing to the data, something else may have also grabbed a read lock, thus you can't write, if the other thing with a read lock then tries to write, you have a deadlock.

Usual code practices apply to fix this, however it's hard to check queries.... I either rely on RAII or the server canceling one transaction in this situation with an error (which would require rollback)

ANYWAY! Constructive food for thought.

@JustSomeGuy83

@nslater my biggest regret is that I missed the "s" off the end of "othersexuals", so it looks like I got "them" right, when in actuality I meant it as a plural. Totally changes the meaning. Can you make a note of this please?

@antirez antirez locked and limited conversation to collaborators Apr 22, 2016
@antirez
Owner
antirez commented Apr 22, 2016

Conversation locked since at this point it can just degenerate.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.