Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

#22667 replaced occurrences of master/slave terminology with leader/follower #2692

Merged
merged 1 commit into from
@fcurella

The docs and some tests contain references to a master/slave db configuration.
While this terminology has been used for a long time, those terms may carry racially charged meanings to users.
This patch replaces all occurrences of master and slave with 'leader' and 'follower'

@alex alex merged commit 8a95b4f into from
@alex
Collaborator

Thanks for taking the time to do this!

@PunKeel

Are you serious ?
The meaning of a word is defined by its use, by the context.
In this case, master/slave is used by every database server, in every documentation (redis, mysql …)

NB: I don't say I'm against this change. Just that I don't see the point of changing two words with two others just because they have been used somewhere else.
For example, your avatar is red. Red, like communism. You should use a black and white color. Oh no, that's linked to racism too. Well. Let's remove colors, too, then ? ;)

@kamilogorek

Is that a real life?

@evildmp
Collaborator

As you can see from beec056 the terminology we have actually used is "primary/replica". So thank you for your interest, but there's nothing to see here and you can move along now.

@jonathan3

Before the flood of white male HN dwellers truly kicks off and obliterates all reasonable discussion, I'd like to thank the Django team for taking the time to do this.

@wodim

i'm just here for the laughs. is IT becoming too stupid? has science gone too far?

@jleclanche

Discussion on the ticket: https://code.djangoproject.com/ticket/22667
"Primary" and "Replica" aren't especially bad choices, but they're also wrong. The correct terms are master and slave. They've been used in databases, hardware setups, server setups and god knows what else for god knows how long.

I cannot fing believe this PR made it through and was given actual man hours when there are massive outstanding PRs and patches on trac that need real attention. And don't be surprised that this does make it on HN and probably later on the usual slashdot/phoronix and what not. This is stupid *and controversial which is exactly what tech media loves.

And to the HN/whatever crowd, don't post stupid memes here. This isn't the place.

Help yourselves and revert this, guys. Django docs, or docs in general are not the place to make up new terms for stuff that already exists.

PS: Quick heads up: This made it to 4chan and various other troll places. Do not be surprised if there's suddenly an influx of .. weird comments.

@jardaroh

This is silly.
Next we will remove all mention og objects because some people might feel objectified.
Or classes, because of the poor people that feels they are being discriminated against.

Sure, I understand that the use of words can hurt, but words themselves carry no meaning outside of it's use. Saying a car is yellow and calling a person yellow are two very different statements. We seem to have a new round of book burnings going on today...

@Gwildor

Guys, just ignore this. These are bots who do this automatically for projects, which have been circling around on Github lately. There are also ones about feminism etc. The Linux kernel also had a PR like this a few months ago with a massive amount of responses on it.

Don't feed the trolls, and just continue to use master and slave.

@ajgon

Faith in humanity restored. Thank you guys. I just want to add, that this will also be bad for django itself, since almost every developer who is no aware of this will be confused, and trust me - he will be expecting that this is some bizarre django thing, not the well known pattern. Peace.

@LynnCo

Thanks so much Django for doing this thing! <3

@gregferrell

Good move. Thank you.

@Thesoro

Excellent stuff. Thanks for doing that.

@LynnCo

I'm very glad for this change because as a PoC I felt very uncomfortable seeing and using this terminology in my code

@Ragzouken

glad to see big projects taking this seriously

@kittenpies

Thanks Django for making this important change to be more welcoming and inclusive to more members of the tech community. <3

@northofnormal

"they've always been called that" is a dumb reason to keep doing something, especially something that is hurtful or alienating. Kudos to Django for making this change!

@dstaley

The use of the terms master and slave in relation to databases (and hardware configurations) has always made me uncomfortable. I think the terms leader and follower are much more appropriate, and are actually more expressive. :heart: to the Django team for making this change!

@tingley

These terms have been in use forever, but that doesn't make them good. Fixing them has to start somewhere; good for Django for taking the lead.

@RobotDisco

Wow, this is awesome! Thanks!

@gesa

:+1:
Great job @fcurella, thank you @alex & Django.

@maban

Thank you! :)

@joliss

Awesome change, thanks @fcurella! "Primary/replica" sounds much better.

@acarback

Excellent.

@clundie

Good. The old terminology should be made obsolete.

@ashaindlin

Thank you so much for making this change!

@fhocutt

Good change!

@ubiquill

Awesome change. Another reason to love the Django project :)

@rivalee

Good change, thank you!

@fujin

Great work. :+1:

@onoffleftright

Excellent change! Actually dealing with a database replication issue myself right now. Semantics matter; even in technical documentation. I'll be using "primary" and "replica" from here on out.

@drcable

Language changes through use. We have a chance to change language for the better(or at least, less-racist. I imagine there are people in this thread who don't think that's better), and we're taking it.

This is great work by django :+1:

@nslater

We switched to primary and replica at work a long time ago. Good move.

@joestump

@evildmp I'm :+1: on primary/replica over leader/follower. Thanks to the Django team for pulling in this PR!

@ElephantInTheServerRoom

Thanks to Django for making this change. For along time, I've wanted an alternative to "master" and "slave" because of their colonialism and slavery connotations, but could not think of one. "Leader" and "follower" are great replacements and I will use them from now on when documenting my database syncs.

@dannypage

I was explaing some hardware terms to a friend just a few weeks again, and really reflected on how bad those terms are, for many different reasons. Leader and follower make much more sense, thanks for your work!

@ftarnell

Nice work :)

@joey

Thanks for adopting more inclusive terminology!

@TheIronBorn

Well done. Thank you for switching terms

@mike-healy

Is Leader/Follower a dig at victims of cults?

@numberten

Glad to see that people aren't afraid to replace negative terminology, simply due to its widespread use.
:+1:

@beadsland

"Are you serious? ... In this case, master/slave is used by every database server..."

That the bias is systemic in the industry doesn't make it legitimate. Django has a choice here, to be a leader and change the language, or be a follower and continue to use problematic language because everybody does.

@jardaroh

@mike-healy very good question.

@juliepagano

Thank you for making this change!

@ccbean

+1 for primary / replica, thanks so much for making this change!

@CoralineAda

You are leading the way. Thank you.

@polotek

This is worth doing. Thanks to the django maintainers and the community support being shown here.

@ben0x539

Definitely a good change and more importantly a symbolic step in the right direction. High fives all around.

@poetix

Primary/replica is a good replacement terminology for something that's been giving me the heebie-geebies for a while now. Thanks to whoever thought up the alternative, and to whoever implemented it here.

@dstaley

Just a note to people suggesting primary/replica: the project is now using that instead of leader and follower.

@fujin

@dstaley looks like there are some issues with that commit: beec056#commitcomment-6451514

@leafstorm

I would like to chime in agreeing with this change. In addition to not having racist connotations, primary/replica is a more accurate description of what happens in database replication.

@tkwidmer

Thank you so much for making this change.

@smokingpancake

Thanks as a DevOP, I've always had to endure BS snickering and jokes about being a dominatrix when trying to have a civil conversation about databases. Maybe there's hope this will change globally. And I much prefer primary/replica to the leader/follower, too, since that's a more technical pair that will be more easily understood....without the BS about being a dominatrix. :)

@silentbicycle

Thanks for making this change, hopefully this can set some kind of precedent.

@schjetne

I've objected to the terms master and slave in the computer world since about the early nineties when I was building my first computer and had to deal with those terms. I found it offensive at 13 years old and I still find it offensive. "It's always been that way" is the crutch of those terrified of change.

Thank you. Great initiative.

@mdennehy

DB2 doesn't use master-slave, it uses primary-standby and occasionally replica. And it's been that way for quite a few years now, so it's by definition not universal, just widespread.

If using different labels for the same thing makes some developers feel more comfortable and it doesn't affect anything on the technical level, why even bother arguing? Just change it and move on. You lose nothing and probably gain developers.

@kmohrf

yay! :+1:

@viniciushana

That's great, thank you for making this change!

@jteneycke

Thanks for replacing the names ones with fewer negative connotations! Tech should be the leading the way with progressive social refactoring of language. :thumbsup:

@xamebax

Awesome. ♥

@bheitkem

Thank you for making this change. As jteneycke said, tech has the greatest influence in social change and I appreciate every step.

@minuteman3

:+1: This is brilliant. Thank you, hopefully other projects will follow suit.

@johnbcoughlin

This is fantastic! Thanks for making an effort to use inclusive language, Django :D

@aanand

Constantly impressed by the Python community's ability to be inclusive, considerate and ahead of the curve. Nice job, folks.

@micahherstand

Language is dynamic and always in motion, kind of like software. I'm very supportive of any language changes that make the project more inclusive. Thank you. :+1:

@Monocotyledon

Glad to see this inclusive change gaining traction against status quo stagnancy!

@lionelbarrow

Great change, good work Django team! Don't let the nay-sayers drag you down -- this is a small step on the road to a more inclusive community.

@ffffux

Thank you for the work you put into this, I'm so glad to see this happen.

@amboy00

@mdennehy Spot on. Way to go Django team.

@kellenfujimoto

Love it. To the dissenting mouth-breathers: you may not want to participate in a society of respect and inclusiveness, but you will be left behind just like the racists.

@madmalik

thumbs up

@vilhalmer

Thank you so much for ignoring the "it's always been this way" argument and getting this change made. Primary/replica is perfect terminology going forward.

@chatrjr

I'm grateful my first encounter with problem terminology is in a commit that also provides more appropriate terms. 'Cause that would have been all kinds of discomfort.

@quephird

I approve of this. 👍

@nickcolley

:ship: Nice to see positive comments on this type of issue for once with little challenge.

@nslater

Going to follow Django's lead here.

Have created COUCHDB-2248 for a similar update to CouchDB.

@RHesketh

This is a great change, and should be an example to other open source projects.

@kristopherjohnson

Thank you. A very positive change.

@vexorian

This is a great idea. Simple wording change that improves experience for many.

@exclude

primary/replica would be better.

but I don't see any problem with master/slave, if you see the problem is you not the term.

@zerkms

It's not the best idea to change well established terminology

xkcd: Standards

@vexorian

We make new trendy names for "big data" and the spiral method every single new year. We should be easily able to get over slave/master :P

@aredridel

Or as many have called them for years: "writable" and "read-only replica"

@emilssolmanis

Is it at all ironic that this got merged into master?

@kerstin

Oh wow, I remember when I first heard and saw masters and slaves mentioned in IT contexts and how baffled I was by that. Thanks for suggesting these changes and cool to know that others have been using different terms for a while now, I wasn't aware of that! :tada:

@vexorian

Hey Github, could you please show that you are a safe place by removing the troll accounts like the "Feminist Software Foundation" ? It is a silly strawman (the issue with master/slave is mainly slave) these guys are contributing nothing to github and only look to make it less safe.

@adamyeats

:+1: thank you for merging! <3

@vexorian

:+1: But whatever, thank you Django for merging. It means a lot that you care.

@graue

:+1: Great job with this change, words matter and it's refreshing to see an open-source project make inclusive language a priority.

@wcummings

Replica's is ambiguous and inconsistent with existing technical documentation. A slave is an actor, a replica is a data set. For example, master-master replication schemes still have a concept of replicas. Leader/follower makes more sense, and primary/secondary even more so.

@exclude

@advi thank you sir :+1:

@moosepod

Thank you. This is a positive change.

@kraigu

Thank you, Alex.

"It's been used for years" has already been struck down; I think what folks might mean by that is "used for a few years, since that's as long as I've been reasonably self-aware, by the one or two database systems I bothered to familiarise myself with."

If objections are "it's just words" well... it's just words, so who cares, right? You folks can go on using the terms other people find objectionable for the sake of being objectionable, and other folks can use terms that many find more descriptive with the bonus of not alienating folks, because they're reasonable human beings.

If objections are "the proliferation of multiple standards is confusing" - oh please. Are you actually that simple that you can't remember what "primary" means? Or that arrogant that you really believe other people can't?

If objections are "don't you have something better to do?" Well... yeah. But don't you have anything better to do than to spend time responding to people you've declared to be wasting time?

Again, thanks Alex.

@s5
s5 commented

Great change, and also more technically accurate. With databases, followers can become leaders and leaders can become followers, just like with people. Master/slave implies a permanent arrangement.

@soundasleep

This is a good change. I have already stopped using master/slave terminology in my sites too. Thank you.

@ragekit

The first time I heard those two words (i was like, 8, it was IDE master/slave) they struck me as kinda odds and made me unconfortable. But then I forgot about it, because i'm white, and it was easier because it didn't concern me, and it happened a long time ago, right ?
Wrong. Thanks to remind us that this terminology can make people feel unwelcomed, in a community that desperatly need more diversity.

Good PR

@polotek

@advi "making Django just a bit less accessible to the rest of the software development community."

Maybe you're missing the fact that they are settling on primary/replica rather than leader/follower. I think we can agree that's a much better suggestion, and one that also has a history of acceptance. Either way, the number of people in this thread appreciating the change should be an indication that this kind of thing makes the django project more accessible to people. It just depends on who you're looking to attract.

I admit it may be more symbolic than practical change. But it's a symbol that lets people know where django stands. It says to a lot of people that if they're looking for a tech community that will actually care if they feel welcome, django might be right for them. You and others speaking against the change are letting people know where you stand on that issue.

I'm sure you're not a bad person. I'm sure you want people to feel welcome. But it sounds like you're saying that's only important insofar as it's not too inconvenient, and as long as we're only talking about people who are already familiar and accepting of old status quo terminology. That's cool if that's who you wanna be. My hope is that yours continues to become the minority opinion.

Thanks for playing the bad guy and giving a cogent and well-written example of the kind of non-inclusive attitude we're trying to eradicate.

@SirCmpwn

Holy shit.

@graydon

:+1: almost twenty years in the business now and slave still looks gross every time I see it in code or docs.

(Also note: the County of Los Angeles apparently mandated this change over a decade ago, http://edition.cnn.com/2003/TECH/ptech/11/26/master.term.reut/ )

@decklin

Thank you for merging this. It's really helpful for people trying to move their organizations to better terminology to be able to say "hey, look, this prominent free-software project felt it was worth doing".

@grill

Thank you for this change :+1:

@advi

@polotek
I never said "master/slave" was necessarily the best choice of terminology, or that "primary/replica" is worse. It probably is a better option from a technical standpoint. My rant was about making knee-jerk decisions, and I simply feel that the pros and cons of merging this pull were not entirely thought out. I'd be just as peeved if some imbecile refused to accept a vital fundamental change in a project's design or implementation because of "political correctness" or some other scapegoat for personal bias.
Indeed, I have encountered situations in which someone initially misconstrued master and slave as having racial connotations, but I've always been able to dissuade these worries with a quick, polite explanation. Because ethnicity and gender are sensitive, personal issues, it's my opinion that they should be handled in a sensitive, personal way. Bureaucratic change looks from the outside like it's uncaring and only increases tensions.
Please, don't try to get me wrong here. I am the first to admit that there are a lot of sheltered WASP guys in the tech industry that want their jobs to remain emotional safeguards for their insecurity about minorities and women. But it's always important to be tactful with ANY major community decision.

@davidcelis

Thanks! :+1:

@LindseyB

Awesome change, thank you. :heart:

@csheldonhess

Thanks for making this change! It makes open source more welcoming to more people.

@bergey

Well done. It's been a few years since I regularly used Django, but the master / slave terminology, where it pops up, is always awkward. When I have to use it, I wonder, is some sentence I write in email going to be taken out of context? Is some colleague going to make wildly inappropriate jokes that derail a technical discussion? Two fewer things to worry about, now.

@miah

+1

@jamesnvc

+1, excellent idea.

@eBrian your hobby of making people feel uncomfortable, I assume? Because I fail to see how this erodes anything to do with programming as a hobby

@ebrian

@jamesnvc If people feel uncomfortable because they can't make the distinction in context then that's their problem. This is a matter of egregious political correctness that serves no real purpose in moving tech forward.

@neilk

For everyone who has a problem with this change (like @eBrian) – come on, if you are programmers you change terminology for the same old stuff every two years, often for no reason other than the whim of the core developers. This is actually one of the more justifiable terminology changes.

@lucjan

dafuq did i just read?.....

@aceofbassgreg

Great change Python community!

@benwerd

Disagree that this doesn't move tech forward; the words we use matter. This is a great change that should be replicated everywhere. +1.

@kerrizor

Having seen first-hand the facial expressions of students I've had to explain master/slave to, their offense, shock, and hurt, fleeting as it might be, I'm 100% glad to see this happen. Many other projects use leader/follower or primary/replica(nt) and its great to see this usage spreading.

@brianloveswords

Thank you for making this change & not letting the argument “this is how it's always been” dissuade you from taking action.

To the people in this thread who are angry, calling this a waste of time: recognize that many of us, some of us your colleagues and friends, feel this is a positive change. Yes, we've learned and internalized the master/slave terminology and we understand its context, but remember back to when you were learning it for the first time. Didn't it seem a little weird until you internalized it?

Now imagine you're a teenager in 2014 learning how to program for the first time. The master/slave terminology is immediately alienating. I would rather move our terminology forward than continue to teach terms that have a loaded, negative connotation until they are internalized.

So again, thank you @fcurella, @alex and the Django community for taking this seriously.

@estiens

Thanks Django! Agreeing on new community language standards is absolutely something we can do as a larger tech community and on our personal projects. It may seem inconsequential to some, but language matters.

@zerkms

@brianloveswords

Now imagine you're a teenager in 2014 learning how to program for the first time. The master/slave terminology is immediately alienating.

How about kill command, daemons in linux?

@bwinton

@zerkms The fact we can't immediately change every alienating term, is not a good reason not to change the ones we can, when we are able to.
(I'm, perhaps obviously, :+1: for this change. Good job, @fcurella!)

@davidbirdsong

nice work. i've been cringing ever since i took the time to consider how corrosive these terms are.

@whoshuu

Good job Django!

@Lel4

I don't know how the terms master and slave, or even slavery itself, are "racially charged".

But, whether they are "racially charged" or not, it is sad to see such an awesome project actually take any decision at all based on political correctness.

@jleclanche

@bwinton If you seriously think kill or daemon are "alienating" terms, you need to revisit your priorities in life.
And it seems a lot of people need to revisit their priorities here. Perhaps learn that most fields of work have their own specialized words and terms, some of which can conflict with completely different things.
Just because "slave" and "master" are no longer an occurence in the django docs doesn't mean you guys abolished slavery. This is some seriously pathetic armchair feel-good faketivism. Hey, whatever; if a bunch of people make-believe their life is ten times better now that some docs have changed, good for you all.

I like the "prima" and "replica" terms but they are absolutely meaningless. "Slave" and "master" have always been used and changing them will only serve to confuse people and have them ask in #django "What the f is a prima?". And needless to add, a lot of people in here have abso-fucking-lutely nothing to do with Django and have zero care or respect for the people who are actually going to make use of this documentation...

I'm glad I don't have to read those awful docs, and I'm twice as glad I don't have to be a part of the braindead core django community anymore. This is really eye-opening as to what the devs spend their time on nowadays.

@bwinton

@jleclanche They don't bother me, but whether or not they do doesn't matter to the point I was making.
And in reply to your point, I can think of a lot of terms which "have always been used", and aren't anymore. Is this change hurting you more than it's making other people feel better? Really?

@jleclanche

@bwinton It's not hurting me, it's hurting the people who will actually read the docs.

This is a pull request, not a CS-wide vote to abolish database slavery. Treat it as one.

@IDisposable

I just changed the replica servo on my brakes yesterday.

@bwinton

@jleclanche If you know where the CS-wide vote to abolish database slavery is, please tell me. I seem to have lost my ballot… (I'm also unclear as to how you expect people to treat pull requests.)

@brianloveswords

@jleclanche,

"Slave" and "master" have always been used

“This is how it's always been done” is never a sufficient reason to continue to do something. We recognize this in our technology (or else there'd be no new frameworks, programming languages), it's important we treat the language in which we talk about technology the same way.

This is a pull request, not a CS-wide vote to abolish database slavery.

Nobody here is saying we are "abolishing slavery". What we are saying is that it's a positive change in the documentation. We change & learn new terms in programming all the time. In the context of databases, primary/replica is terminology that I find easy to understand.

@polotek

@jkelsey it's obviously hurting some folks in this thread very much. They've expended multiple comments on something they swear doesn't matter. Go figure.

@Lel4

Would someone please explain how the terms "master" and "slave" are racially charged, please?

Is this some kind of joke?

@brianloveswords

[this space intentionally left blank: I accidentally engaged who I suspect to be a troll]

@taswyn

I think it's hilarious that there's even ANY kickback against changing master/slave to not only something more palatable...

But to something that's actually MORE SEMANTICALLY CORRECT. Come on, seriously? This is a no-brainer, in every single way. Sticking to jargon that has "always been this way" in a field that's only a few decades old is the worst excuse ever. Talk about fighting change for all the wrong reasons, what are you so insecure about?

@Lel4

@brianloveswords
Oh, thank you.

Either way, it's sad to see such a nice software project needlessly and confusingly change terms that were not in any way explicitly offensive.

@leafstorm

If we continued calling it master/slave, that would imply that one database server kidnapped another database server, sold that server's spouse and kids to another company, gave the server barely enough power to run, and forced the server to do all of the first server's hard work for it (punishing the slightest disobedience with violent beatings), all while claiming that the second server deserved it for having a black case instead of a silver one.

Obviously, this is nothing like a database replication cluster.

(And yes, it's racist.)

@Lel4

@leafstorm I believe master and slave in this context aren't to be taken literally and are rather a metaphor.

I might be wrong, tough.

@onoffleftright

Reposting because it was deleted for some reason(?).

@jleclanche

master/slave relationship is no more difficult to understand that primary/replica relationship. There is no loss, and as a gain, we become a more inclusive community for all people, not just white males.

If you have a problem with that, I question your abstract thinking abilities and thus, your quality as a competent and skilled software engineer.

@leafstorm

@Lel4: Yes, it is a metaphor. Specifically, a really terrible one. The whole idea of the master/slave relationship is that the master is forcing the slave to work for it, and that isn't present in a database cluster.

@jleclanche

@Lel4 It's a joke that got out of hand once it got noticed by a group of armchair activists composed primarily of white people who have nothing to do with Django or Python (a real big bunch of experts!).

@brianloveswords @taswyn @jkelsey You guys want to change "master" and "slave" terms in databases to something else, you don't start with some random project. What happens when you file this PR in other projects and they laugh you the hell out and keep master/slave terms (because that's honestly a sane reaction)? What happens when another project likes the idea for whatever reason but thinks the term "primary" is offensive to people who feel secondary?

I reiterate my earlier point: None of you will have to deal with people asking what these terms are. THIS is the harm when you change documentation. Not any other BS people are trying to pass as real here. In any case this thread is beyond help.

@Anorov

@jkelsey The new terminology makes sense, sure, but it's absurd to suggest that this change ever needed to be made. Are "whitelist" and "blacklist" racially charged now, because white = allowed and black = disallowed? Is the term "penetration testing" as used in information security actually sexual innuendo?

I have never in my personal experience seen someone be offended or shocked by seeing the word "slave" when referring to data storage. The word "slave" itself does not suggest racism or oppression in any way, just as "blacklist" doesn't. "Daemon" does not promote Satanism. "FAT32" is not insensitive towards overweight people.

This is a slippery slope. Django is also just one project in a huge ecosystem; changing the terminology when there's no need to (increased clarity or reduced ambiguity) is pointless.

@nslater

Heaven forbid we're on a slippery slope to having more empathy!

@woodruffw

I don't particularly care about this whole terminology issue.
What confuses me is this one-sided focus on a (relatively) small component of the history of human slavery.
Human slavery and trafficking did not begin with the United States, and it certainly didn't end with us. Similarly, Africans were not the only targets of slavery. In fact, the very etymology of the word "slave" derives from the capture and subsequent enslavement of the slavic people.

My point is that essentially, as repulsive as slavery may be, there is nothing in the term directly affiliated with any one race (except, perhaps, the Slavs). If you want to abolish the master / slave terminology, fine. Just make sure you're doing it because it doesn't fit the title, not because of vain and pointless political correctness.

Just my two cents.

@advi

@leafstorm is that not kind of accurate, though? Computers and the programs we run on them ARE slaves!

Equality among humans is not the rule, it is the exception, it took us until recent history to make this vital distinction simply because it is human nature to classify things. There is nothing bigoted about declaring lifeless, unfeeling inanimate objects superior or inferior to each other

@AlanLaughter

I for one like primary/replica, though perhaps original/replica would have been more fitting since as someone who has been mistreated my whole life as an unimportant second child it feels odd to refer to something as primary simply because it's first.

@nslater oh noes not teh understanding and compassion, whatever shall we do?

@Anorov

@nslater So should all instances of "whitelist" be renamed to "permitlist" and "blacklist" be renamed to "denylist"? I don't see how lobbying over an unnecessary name change suggests any sort of empathy when no harm is being done in the pre-existing situation.

@AlanLaughter

@Anorov actually I like that Idea, I think I'll make those changes in my own code from now on, thanks for the suggestion! :D

@Anorov

@AlanLaughter You think someone will be offended that the color black is associated with something negative, just because some people have skin that is close to the color black? Black is also sometimes used to mean "off" where white means "on", is this problematic as well?

@AlanLaughter

@Anorov I think someone will be offended by literally everything that everyone says ever period and nothing you ever do will prevent you from pissing off someone, however if you know of a problem which you refuse to correct simply because you're a creature of habit that's your own business, this is not your repository, not your branch, not your code, you can go somewhere else and call them "whitey" and "darkey" for all I care, but don't expect me to use your fucking code asshole

@polotek

@Anorov harm is being done. It may not look the way you think it does. But you're also not asking any questions or trying to gain a better understanding. Do you really, honestly, think that all of the people applauding this change are just looking to be "politically correct" about something that doesn't matter? If so, you and the other folks arguing here have a seriously cynical and jaded view of the world. I hope you find some perspective.

@onoffleftright

@jleclanche I fear that you're too isolated from people unlike yourself. This isn't an issue because the "PC-police" are just looking to shake-up things. Do you dare even open yourself to the idea that this terminology can be perceived differently than how you perceive it? Do you think it's even possible that there might be some people, even if it's a minority opinion, that think to themselves, "this is troubling to me."

Perhaps some other people, pick up on the fact that something like master/slave could be troubling to a minority of people. They think to themselves, "Well, let's use "primary"/"replica" instead. The concept is not anymore difficult to understand, and we'll make more people feel safe and welcome in our community!" So, they do it.

What's the harm in that? Please answer me this, do you really find the concept of primary/replica anymore hard to grasp than master/slave? The idea that this makes the docs harder to understand is a ridiculous argument. It's not really any different than System.out.println("Hello, World.") and cout << "Hello, World.".

@nslater

@Anorov I am poking fun at the fear of considering the world from another perspective. There are plenty of people who feel that slavery (there are 27 million slaves in the world today) and BDSM are unwelcome connotations for database nomenclature. When we have alternate terms that present no problems, it seems obvious to me that they should be used. To say that we're on "a slippery slope" is to suggest that there may be other parts of our culture that we need to examine. Why is this bad?

(And yes, for what it's worth, of course there are racial overtones when it comes to the use of black and white to denote purity, goodness, evil, etc.)

@leafstorm

@jleclanche: First off, I've been programming with Django since 2010 and I spoke at this year's PyCon.

Second off, master/slave isn't as universal as you suggest. PostgreSQL and RethinkDB still use "master," but they've replaced "slave" with "standby" and "replica," respectively. MongoDB uses "primary" and "secondary." (MySQL still uses master/slave, but it's behind the times in a lot of other places too.)

@Anorov: There are people on this very thread saying that they have been alienated or at the very least freaked out by the master/slave terminology.

@woodruffw: The African slave trade wasn't exclusive to the United States. Many European colonial powers also enslaved Africans in similar fashion to the US. Anyway, we're not removing use of the term because the word slave is inherently racist, but because there are many people who do actually feel excluded by the term. (And because it's not technically accurate.)

@advi: If I were to hypothetically call a computer the n-word (as some idiot upthread suggested), I might not be insulting the computer, but I'm sure still insulting Black people.

@AlanLaughter

@nslater I actually dislike the BDSM hate that has gone around, I am a dom and nothing makes me more upset than hearing someone say that my lifestyle is rape culture, excuse the ever living fuck out of me? I couldn't even go near someone who didn't want me, my sub has to want me, has to desire everything I do with them, or I don't, excuse me CAN'T, do it. And I only do what I do because they asked me under no pressure or duress, remember kids: a Dom NEEDS consent, a rapist doesn't know what consent is

@nslater

I've not seen any BDSM hate, and hadn't hope to convey any value judgment either way. Only that clearly some people feel it is an unwelcome connotation in this context.

@FotoVerite

@nslater why did you bring BDSM into then? You're the only one in the thread mentioning sex in any shape or form.

@FotoVerite

@nslater Besides the trolls of course but they're not actually relevant. :D

@nslater

@FotoVerite it was brought up on COUCHDB-2248. Seems like a fairly obvious point to me.

@AlanLaughter

@nslater I saw it in response to some code I posted on another site to give an example, I used Dom and Sub for my class inheritance and got told off the whole thread devolved into rape talk

@onoffleftright

@Anorov If people have a problem with "whitelist" or "blacklist", then yes, it's worth changing. No one should be made to feel bad about the connotations between otherwise emotionless terminology. You defenders-of-the-ways-that-things-have-always-been seem to think that these issues arise just because people want to cause problems. Have you ever stopped to think that it really bothers them? Perhaps for a reason that is significant and not worth just writing off just because you're in the majority opinion and they're in the minority opinion?

@AlanLaughter

@FotoVerite he was talking about how someone mentioned that it had other meanings besides white people owning black people

@AlanLaughter

@woodruffw well technically it is inaccurate, master tell slaves what to do and the slaves do it, this is more like object creation than anything else so replication is a more accurate term

@jleclanche

@leafstorm Obviously, if you are a django dev I was not talking about you when I said "people unrelated to django".

However, the only shreds of sane discussion in here are being overwhelmed by people who really should have zero say on a matter like this... people who have no knowledge of databases, django, python, hell even computers for some of them it seems (Look at all those github accounts created today... how coincidental).
Not to mention some actual discussion is being deleted (I can't tell if its by project owners or by the posters themselves, but it doesn't help either way).

Master and slave however are not only used in databases. This merge is incredibly short-sighted and if this were an actual problem it would have come up long ago - as it stands, it's just some bored guy who thought it was time to make an issue out of a non-issue.

@Lel4

@jkelsey Except I don't think many users of Django are or have been slaves. If we are to take this specific cultural context of the United States where slavery has a racial connotation, it has been abolished too long ago for a former slave in the US to be even alive today.

Why would someone be upset about a thing that didn't directly affect them?

Besides that, "primary" and "replica" manage to be even more offensive. Some people might actually have been treated as "secondary" at some point of their lives.

@backspace

:thumbsup:

@Lel4, did you get an account just for this thread?

@nslater

@jleclanche I am a Django user, Python dev, and I build an OSS database in my spare time. Does this qualify my opinion as being worthwhile to listen to?

@advi

@leafstorm
Well, yeah, I'm neither defending the dipshits spouting racial slurs nor questioning your authority on what is best for Django. However, the N-bomb is much different from common dictionary words like master and slave. Its sole purpose is to be derisive to blacks. Similarly, I'd be skeptical of someone claiming to have a "legitimate" use of blackface in media considering the horrible historical connotations.
However, I'd strongly disagree that slavery is a racial concept--in fact, American history is unique in this regard, many racialist concepts purported today by neo-Nazis like miscegenation were invented in recent centuries. (No, this isn't a "white people were enslaved too!" excuse.) For the vast majority of human history, involuntary servitude was just a fact of life. No skin color, no tribalism, just people with more power exerting their brute force onto people with less power. "Slave" does nothing more than give the concept a name, turn it into a metaphor that can be applied to all logical constructs.

Death, disease, pestilence, poverty, none of these things are pleasant to think about in regards to people. But in the world of technology, killing processes and fixing bugs are just analogies to make computer logic translate more neatly into human logic.

Here's the biggest issue with sensitivity in language choice: ANY WORD CAN BE USED IN AN OFFENSIVE MANNER! The words are just tools we use to convey ideas and thoughts. Only we give them unpleasant meaning.

Which of the following sentences seems more off-putting:
"The word 'n***er' is extremely insensitive and should be avoided in polite conversation." (censored just in case)
"I hate those stupid, lazy African-Americans, we should ship them all back to where they came from."

@jleclanche

I don't know, @nslater - have you ever been a slave or master?

@Lel4

@backspace
Call me cowardly if you will, but I didn't want to comment on such a supposedly sensitive topic under my real name, lest I later suffer personal attacks.

@Anorov

@jkelsey No, I have never once stopped to think that the very words "master" or "slave" really bother people. I acknowledge now that some people may genuinely be offended by seeing or typing those words. I, however, also acknowledge that there are probably people out there who are shocked that to end a process they must type "kill"; such people may promote non-violent philosophies or have had family members who were murdered. The God process monitoring framework may offend many people (Orthodox Jews in particular) because it takes God's name in vain.

Such people have every right to be offended, but in my opinion that doesn't mean they need to be appeased. If someone opened an issue on God's issue tracker saying the name should be changed to something more neutral because it is offensive to their faith, they'd be laughed away.

As @AlanLaughter himself even admits:

someone will be offended by literally everything that everyone says ever period and nothing you ever do will prevent you from pissing off someone

So, the question is, does master / slave offend enough people, or is it particularly offensive in a way that some of the other terms somehow aren't? Just like the word "kill", when applied to a human the words have very negative connotations, but as a general concept the terms have valid and logical uses. These are general concepts, not slurs or curse words.

Upon further consideration it's arguably better to move away from "master" and "slave" because those words generally imply a relationship between two sentient entities, so moving from a metaphor to something more technical sort of justifies the change. I still don't think this ever been, or currently is, a significant issue of offending people, though.

@polotek

@Lel4 are you saying that no one living today is affected by the history of slavery in this country? If so, you should have a seat and stop talking about things you have NO idea about.

You other folks can argue about whether this issue matters for the django project. But if you fancy yourself a historian and start acting like you know what the word slave means to people, you are in grave danger of making yourself look stupid.

@onoffleftright

@Lel4

Why would someone be upset about a thing that didn't directly affect them?

Except that it does directly affect them. We're all the consequence of our history. Slavery is something that still happens, but even if it's framed under the context of the African slave trade, you can't conveniently ignore that it actually didn't happen that long ago. The shock-waves of that large-scale institutional violence is generational.

@nslater

@jleclanche nope. But this is where empathy is useful. As I already mentioned, there are 27 million slaves in the world today. This is still a huge problem for society, in many ways. I can see why people would find the nomenclature unwelcome, discriminatory, and offensive.

@Anorov

@jkelsey This shouldn't be framed as an issue of race or ethnicity in any way. Minority groups have been used as slaves since the beginning of human history; white or black, European or not.

@polotek

By this country, I'm talking about the US. That was pretty thoughtless as I know django is a project with international reach. But anyone who lives here and says we've gotten past the affects of slavery is not being serious.

@AlanLaughter

@Lel4 let me tell you why that's bullshit:
After slavery was over the government gave every slave land and animals to start their new lives, instantly with the abolishment of slavery every former slave was treated as an equal and through the next couple of centuries (oh wait that was only 100+ years ago in the 1800s) they grew as equals, and now we live as brothers, taking care of one another, our graduation rates, our employment rates, our credit rates are virtually identical and no one gives anyone a dirty look out of the corner of their eye or crosses the street or has security follow them through the store or accuses them of crimes they didn't commit or beats them to death and calls it "necessary force"

except that didn't happen, and decades upon decades later we find ourselves in a society where the majority of the prison population is black, the young men and women grow up without proper families and homes for no other reason than "culture" which is celebrated and forced down their throats. "don't be like white people, don't try to act white" says internalized racism while they hear the same message from those who want them to stay down. and while they fight among themselves the white people point and say "look, see how they fight when they are not controlled? what but their race could be the problem when they've been given every opportunity" except they haven't they've been taught violence their whole lives and those who escape it must live under it's shadow afraid that they might be killed one day by someone who thinks less of them or perceives them as a threat or thought they looked "suspicious". This is not an ideal world where no one has been effected by slavery, our whole nation is built on the backs of dead men and women whole never saw the fruits of their own labor and now we treat their sons and daughters like criminals for having committed the crime of being born in a society where that is a crime punishable by death.

@onoffleftright

@Anorov How do you write those two sentences and then dare suggest that it shouldn't be framed as an issue of race or ethnicity? Minority groups, in any sense of political science, are practically always framed under the context of race or ethnicity (only religion tends to compete in that regard).

Let's be clear here. This isn't an attempt to make white people or European feel bad about themselves. It's an attempt to make everybody else not feel bad about themselves.

What's the point in fighting this? primary/replica is no more difficult to understand than master/slave. Not to mention that it's more technically accurate than the classical terminology. It's an easy win for all interests involved.

@FotoVerite

Guys leave this thread. We already won and have primary/replica merged in. All that's left now is feeding the trolls. We have more repos to create PR for to improve wordage and documentation

@Anorov

@jkelsey To clarify: it should not be considered an issue or concept relating to any one particular race or ethnicity, generally speaking.

I've gradually become more understanding of the change, but I still have trouble seeing people be reasonably offended by those words used in a technical sense.

@Lel4

@polotek
@advi
I'm sorry, I tried to make as clear as possible that I know very little about the United States.
My point is that, if we are to make this about race, then slavery based on racism ended long ago.

Now, obviously many things in history affect us today, but by "directly" I meant, like, having been a slave at some point of one's life. I'm not, either, saying slavery does not impact American society today, I wouldn't know. I'm just saying, slavery itself ended too long ago for someone to have been a slave in the United States.
I just don't think we should change all the terms that have some bad historical, or even current connotation. Bugs transmit diseases, I have been bitten by a bug once and got very ill, I'm pretty sure many people have been harmed by bugs, yet I don't think the term "bug" in software development should be replaced.
Kill a process, as another example, has the potential to be much more offensive than master/slave. Many people today have had their parents or grandparents or other family members killed in some way.
Yet another example, an environment created by chroot is often called a chroot jail. People who have been jailed may be offended by this as well.

@jkelsey
Why is my ignorance more or less justifiable depending on my gender or colour of skin?

@onoffleftright

@Anorov I hear your point. Respectfully, I think it's wrong. Language has meaning, and it's not so easy to disconnect words that have context and emotions attached to them just because they can also be used in a technical setting.

This issue bothers people. It's an easy thing to change. Not one single person in this entire thread against this PR has suggest in any practicality why primary/replica or leader/follower is any harder to understand than master/slave. It's just "don't change it, because it's always been like that."

The benefit gained far outweighs any loss that people have to spend trying to figure out the difference between primary/replica and master/slave.

@AlanLaughter

@jkelsey second

@polotek

@Lel4 we're not going to change all of the terms. Just all of them that people feel strongly enough about to convince the maintainers, send a pull request for, and get lots of community support. Deal?

@otbzi

definitely great job!!!!

@onoffleftright

@Lel4 I admit that this may be a issue that is more known and sensitive to Americans. I have no idea where you are from or your background. I'm not trying to insult you directly. However, statistically speaking, if you're a white-male, you're probably better than off than a non-white-male in this world. Statistically speaking, if you're a white male, you're probably far more educated and have been given far easier access to the information and context of history available in institutions of higher learning. Slavery is something that is well-studied however. It's something that the consequences of which are making generational-shockwaves throughout our society. It's something that still happens to this day. It's damaging and devastating.

So, when people complaint about this being "not important" or "a waste of time/resources", it's worth noting that if you have this opinion, perhaps it's because you been fortunate enough to not need to worry about it.

Not to mention, that this is such a trivial change, it's justifiably controversial when people exert so much energy to keep the status-quo.

@kiesia

Great job! :+1:

@halffullheart

I'm always excited to see people embrace changes like this because while it may take a little getting used to for some, it has implications for diversity that are basically boundless. Who knows how many people will add their voice or code now that they are not excluded by the language being used. So incredibly worthwhile.

@Zizuke

Hipsters and wannabe programmers (AKA Web devs) only want this change. This is absolutely pointless and messes up everyone's code. Fix some actual problems. Changing some terms won't make the world a better place. Next thing you know, AbstractBeanFactory will be racist...

@vexorian

Slavery has worldwide connotations, as a person from a South American country this change makes me feel more welcome.

@basilleaf

Yay for weeding out this offensive metaphor from Django, and primary/replica makes perfect sense!

@eyoosuf

master slave, so traditional, nice to have the leader and flower.

@dmysticd

words are powerful and often we overlook offense in plain sight. thanks for noticing and taking action!

@advi

@animedaddy What happened to renaming your code "Master/Nigger"? Go be stupid and bitter somewhere else.

@Eugeny

This is a horrible insanity

@animedaddy

@advi It was "Whitey/Nigger" and I already pushed the changes to my code. I feel that the nigger word is not as dangerous as the slave word so it's ok. BTW I'm black and have many black friends, and listen to everything but country and rap, LOL!

@advi

@animedaddy Yeah, now I think I know why nobody is taking the criticism seriously.

@animedaddy

@advi Because I'm black? Racist pig.

@a13

stop the world - I want to get off

@tjg

:thumbsup: I will check my own code for errors like this, thank you for acting ethically! :thumbsup:

@a13

@jkelsey

if you're a white-male, you're probably better than off than a non-white-male in this world

But probably somebody is not. Do you know the exact probability, Mr. Statistician?

It's something that still happens to this day.

Please, tell me, how could this patch help nowaday replicas?

perhaps it's because you been fortunate enough to not need to worry about it.

but perhaps somebody just doesn't care about silly words

@pax0r

Hey, guys, April Fool's day is already behind us

@mpaf

Great change I'm proud to belong to this community.

@beshur

lol )
I don't know if this has already been mentioned, but it's nice that we are now using SATA, which does not have master/slave jumpers.

@onoffleftright

I'm not going to respond directly to trolls. My points have been made.

I understand that there's language and cultural barriers that acts as noise in a debate where most decent people would otherwise agree. If there's a semantic misunderstanding on these issues, but if you otherwise mean well, I'd be glad to engage in a discussion.

If you really think that slavery is dead, I urge you to start reading up on human trafficking, for starters. Broaden your horizons on the subject afterwards. There's plenty to parse. Put yourself outside of your own perspective.

If you're unwilling to deal with change, I suspect that after reviewing the overwhelmingly majority of people who have weighed in on this PR, then you should realize that the community has moved on without you. This is a trivial issue. I suggest trying to catch up.

@mentero

Shouldn't we force Linus to change git master branch into git leader branch?

@gr2m

Much respect for taking the time and guts to make that change. Because "we have all always called it XY" was never a convincing reason, especially when actual humans might feel offended by it, while there are better alternatives.

@medikoo

I think it's totally fine to call computer a slave. We created machines to obey us, to complement us.

Some of the computers are configured to obey other machines. It's how we designed them. They're not living beings. We do not offend anyone by that (unless you see a living being in a computer).

It's of course inappropriate to use master, slave in reference to any living beings, We've tried that many times and it always ended as a sad story.

It looks, in computer science master and slave terms finally found ground where they can be used without any harm, in right, prefect sense from both logical and philosophical view. It's seems stupid to say they're not welcome here either :)

@stonetwig

I thought Django was a serious project, apparently not. I feel deeply offended by this change.

@jlebrech

@medikoo agreed. it's ok for a computer to be a slave or master.

till they gain sentience that is. then we'll have to explain this to our robotic overlords

@Ocramius

#firstWorldProblems

Seriously, this just makes documentation messier.

@mcvsama

This is startling.

@Skullman

And in German translation it will be Führer und Freund.

@Nyalab

GIT PULL ORIGIN MASTER. OH NO, I CAN'T ANYMORE. Fucking stupid.

@siberex

Yep. Looks like Django finally disposed all of his masters

@yozik04

People that may be offended by seeing or typing those words are sick and must be cured. They definitely have a psychological disorder.

@Meira

I don't think feeding self-important non-contributing internet trolls is exactly what Django should be focusing on. I sent a pull request fixing this failure: #2720

@mvasilkov

I propose that we replace color: black in CSS with ethnicity: african-american, because very offensive.

@unho

This should be a cultural issue. I cannot see the relationship between slavery and computer sciences terms here. The terms proposed have religious connotations, and that cannot be allowed!!! Please be serious people, this is a really bad joke.

@unho

Should we try to remove "master" and "slave" from dictionaries so people don't have to suffer anymore the miseries of slavery? I am asking this fucking seriously.

@mlewand

@mvasilkov +1 for removing black color, it's really offensive!

@nonuby

@mvasilkov +1

Im glad someone is seeing this in black and white.. oh wait..

@SirAnthony

Master/slave, leader/follower, primary/replica, the name change does not change anything while it still have domination/submission in the basis. The core conception must be changed to really achieve the aim of this commit.

@mdennehy

GIT PULL ORIGIN MASTER. OH NO, I CAN'T ANYMORE. Fucking stupid.

DB2 calls the main branch main.
Has done for longer than most Django contributers have been alive.
And they use clearcase, for pity's sake.

So... I'm confused. Are you chaps saying that IBM, the stereotype for hidebound dinosaurs everywhere is ahead of the curve and the lean agile startup disruptors can't keep up with them and adapt to a simple change in terminology? What the heck are you guys going to do if we ever actually change something fundamental, like, I don't know, abandoning ACID and creating large distributed key-value stores that operate on principles far removed from the days when the terms master and slave were introduced to textbooks to describe the radical new technologies those wacky guys working in the brand new field of pneumatics were inventing?

@pjasiun

@mvasilkov +1, definitely. I'm surprised no one had realized this before.

@siberex

It’s relief we no longer use PATA cables for IDE disk drives. It is sooo big shame to decide who will be slave and who will be master

@jkufner

The "master" branch should be renamed too.

@moeffju

Thank you for changing the terminology! :+1:

@berkus

This is great, I hope you're not using git... oh wai~~~

You just committed to master, you ignorant moron!

@Winnerer

Oh, I also want some russian brunches named ведущий/ведомый. I think it will make Russian developers feel more comfortable

@almadomundo

Sure. Also, I suggest to replace kill command with stop-please, because it's propaganda of violence.

@uirapuru

please change python name, because it's a reference to penis in polish

@MadaraUchiha

Wait... what?

@kerstin

Wow, there's a whole Polish-Russian troll brigade. Do none of you realise how much you're embarrassing yourselves? #blockhappy

@cezio

-1
Seriously, this is out of mind. Don't bring bullshit political correctness here.

@mcvsama

It probably hit some Polish website or kind of Polish 4chan.
But it's actually true that "pyton" is a rude word for penis in Polish.

@taku-pl

@mcvsama It hit hacker news (ycombinator). And comments there are similar.

@iainspad

Oh no! A cleaner terminology threatens our way of life!! Whatever shall we do???

If a small change like this fucks you off, then it's time you grew some fucking stones.

@taku-pl

@Meira Kudos to your cool-headedness.

@mike-perdide

Thanks for this :+1:

@Protonex

i suppose that i found a bug :)
Alex Gaynor alex merged commit 8a95b4f into django:master
Must be a
Alex Gaynor alex merged commit 8a95b4f into django:leader
:D

@aalien

If anyone feels alienated or offended by the use of terms master/slave, it can mean exactly two things: either you're a slave database, who dislikes being one; or you yourself use those terms wrongfully in an alienating and offensive way. As the latter is much more likely to be true: stop it. Now. Taking a term out of its context and using it as an offensive one says nothing of the term, but everything about the person using that term.

That said, replica instead of slave is technically incorrect. Replication can happen between masters. This merge thus introduced a documentation bug, and should be reverted immediately.

@kz-lt

this is so fucking stupid

@artkrz

Also, rename the whole project as it has the same name as used for a slave in a movie.

@PhilGal

stupid.

@Getty

HAHHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHHAAHHAHAHAHAHAHA

@MarSik

I can understand changing the terminology on technical grounds. Unfortunately the commit message is using moral and racism arguments that I find offensive.

Let me explain why:

This is the definition of the word "slave" from the Oxford English Dictionary:

  1. (Especially in the past) a person who is the legal property of another and is forced to obey them 1.1 A person who works very hard without proper remuneration or appreciation 1.2 A person who is excessively dependent upon or controlled by something 1.3 A device, or part of one, directly controlled by another

So the word has a specific meaning that describes relationship with no hint of race or color being mentioned. In fact the dictionary also directly recognizes the meaning of one device being controlled by another (1.3).

By replacing the word slave on the basis of racism you clearly express that you consider only the African people to be affected by slavery. I am from a slavic country and we have been slaves to Romans, German tribes and other nations and groups in our history.

This troubles me greatly as it means all the people who impose the racist meaning to the word slave are racists themselves, because they do not consider everybody equal as they should. They feel that somebody is inferior and needs extra protection. Positive racism (favouring one minority group before the majority) is a big issue caused by the current "politically correct" society. And I (white Europian male) feel oppressed by those "correct" groups because of it.

The same reasoning then applies to black/whitelists. The colour white was considered pure eons earlier than our Western civilization even started. Just because of the fact that everything can be seen on it during the day. Black or dark was the colour of night and thus the time of robbers, villains and dangerous animals. The colours had no racist meaning as they were probably used in Africa for the first time anyway.

To sum it up: the words slave, white, black do not have any racist meaning by itself. They get the connotation only after somebody who feels that way adds it.

@taku-pl

@MarSik i give you +1 internet point (if it means anything) for treating the language the way it should be treated. Kudos.

@suprMax

Thank you for fixing this! This was sooooo offensive!

@Getty

We germans demand not to use the term "Leader"..... we dont like this one!!!!11111

@zerkms

This what prevented me from using Django. Since now - it will be my personal the only choice for web development framework.

@suprMax

It was sexist anyway! Let's rename "Leader" as "Mistress"

@ClaymorePT

I no longer want to be a computer programmer. I'm ashamed of being a supporter of slavery, because I still have two IDE Hard-Drives mounted in an old PC.

@Getty

Oh yeah..... slay me

@mdennehy

So, to sum up, someone who found the terms genuinely offensive asked to use alternative, well-established, mainstream, widely-used, long-standing terms that are more technically accurate anyway.

And the world stopped working because a group that's supposed to be made up of the smartest people around who spend their working lives trying to turn established industries on their heads, couldn't handle changing terminology to a more accuracte terminology because the reason was squishy and human instead of being measurable with a very crude voltmeter, and put forward a counter argument to "would you mind not doing this please" that was effectively "no, we like doing it this way".

Folks, IBM is eating your lunch.

@mdennehy

Oh, and "python" is a rude word for "penis" in English too.
When you're twelve.
Most of us get past that stage though.

@mike-perdide

@mdennehy : well said, on both comments.

@suprMax

@mdennehy goddam good point man. Time to switch to node folks!

@MooglyGuy

I disagree with this change, the actual terminology should be "dom" and "sub". Of course, that might offend Dutch people, since "dom" means "dumb" in Dutch.

@CaptainHayashi

Oh my days this is silly. Master/Slave, for better or for worse, is the industry-standard terminology for this pattern, and trying to replace it with anything else impairs the transparency and readability of the documentation.

Don't get me wrong, I abhor the slave trade and everything it stands for, and thinking that my contempt for this change equates to supporting the cruelty of slavery, or even (god forbid!) racism, is a false dichotomy I find to be baseless and offensive. I don't see how pretending the words ‘master’ and ‘slave’ don't exist does anything other than hide away the unpleasant aspects of our history and trivialise the whole discussion about slavery down into a checklist of words we can and can't say.

I concur with everyone that points out that Leader/Follower has unpleasant fascist connotations. I immediately read Leader in the Führer sense too! Primary/Replica seems unwieldy and, again, Master/Slave is well-understood and conventional for this pattern.

Shall we ban Grace Jones's song ‘Slave to the Rhythm’ next, because it brings up memories we'd rather wallpaper over?

@arturasokol

@MooglyGuy who cares, as long as it doesn't offend 'muricans, we'll be fine...

@mdennehy

Master/Slave, for better or for worse, is the industry-standard terminology

Sorry, no, it isn't. Unless you think DB2 isn't a major database in the field.
As I said earlier, DB2 uses terms like primary/standby, active-active, active-passive and node. Has done for years.

@unho

@MarSik Finally someone telling the things the way they are.

@mdennehy

@aalien Except that they are more accurate and more useful. Active and passive nodes, primary and standby databases, replica datasets. It's a more flexible vocabulary. For example, the multi-master scenario you mention is called active-active over here and has been for years because that language lets you describe the multi-master scenario and also allows you to go on and describe more cleanly a system with multiple active and passive nodes with time-delayed, synchronous and asynchronous replication all going on simultaneously.

@CaptainHayashi

@mdennehy Slony-I uses master/slave (http://slony.info/) when discussing database replication, as does MySQL (http://dev.mysql.com/doc/refman/5.0/en/replication.html), PostgreSQL (http://www.postgresql.org/docs/9.3/static/high-availability.html), MariaDB* (https://mariadb.com/kb/en/setting-up-replication/), the list goes on. IDE drives, while not a database concept, are the most obvious use of master/slave in the wider field.

Just because one place doesn't use the term master/slave doesn't stop it being a common term…

*Yes, I'm aware that MariaDB is a fork of MySQL

@mentero

@CaptainHayashi two places since this merge ;p

@schneikai

+1 for primary / replica, thanks so much for making this change!

@nekoexmachina

But leader and follower is so much discriminating the followers of some leaders!
They both should be 'equal', that would be not discriminating! :(

@mvasilkov

@mdennehy

well-established, mainstream, widely-used

...that's exactly master/slave. Alternatives aren't mainstream in any meaningful way.

@mdennehy

Just because one place doesn't use the term master/slave doesn't stop it being a common term…

Nope. But Common != Industry standard.
And Common != Universal.
And Common != Most technically accurate.
And Common != Most useful.

And maybe it's a small thing but Common < "Someone asked you not to because it was offensive to them and better alternatives existed".

And perhaps the thing that I really can't get my head around at all given the people raising objections and their self-image of being the vanguard of the cutting edge:
Common != How It Shall Always Be Because Nothing Could Ever Be Better. Ever. At All. Because That Would Be Impossible. And You Will Never See A World Market For More Than Maybe Five Computers.

@0xd34df00d

"Leader" and "follower" have opressing and non-tolerant semantics for me, rising bad memories from my bullied childhood. Please revert.

@gnurag

Thanks for this change. I find the whole concept of master/slave, leader/follower quite disturbing. We must encourage more standalone systems.

@chankeypathak

They've actually used primary/replica instead. beec056

@pythonhacker

I find the term "failover" disturbing as it suggests implicit failure by the system involved and dependency on another. Can we change it please ?

This is political correctness taken to its extremity of silliness.

@mvasilkov

The best term, given the amount of misleading propaganda some people here are spouting, would be comrade/comrade.

@mdennehy you're delusional, please calm down and stop posting nonsense.

@jqb

George Carlin would have a lot of fun on this one.

@CaptainHayashi

@mdennehy Change is good when the positives from changing outweight the negatives. Here, the positives are at best subjective (I for one fail to see how ‘leader/follower’ or ‘primary/replica’ is any better than ‘master/slave’ from the point of view of the average database admin), and the negatives are obvious (deprecating a common term, increasing the mental load on people used to the usual language, and throwing up a whole wave of negative publicity and pointless distraction for Django in the process)

Change for change's sake isn't inherently good. When will people see this?

PS: Also, ok, clearly I made a mistake in using the term ‘industry standard’ in a loose sense. Still. Master/slave is the common term, and one has to realise that there are benefits to using and staying with common terminology.

@mdennehy

@mdennehy you're delusional, please calm down and stop posting nonsense.

Yeah, four years working in the kernel code for DB2 on its replication system, what would I know.
And since the ad hominem arguments have come out into the open, y'all have a nice time arguing over why you shouldn't be nice people and use better tools in the same action.

@Meira

Calling things what they are is called honesty. Renaming things out of guilt is cowardness.
No slave in the world was helped by this change. But I'll bet a couple of newbies will eventually get confused and will have to figure out by themselves it's actually about master/slave.

Anyway, why was this commit merged undiscussed and mine was closed?
#2720

@TZ86

Completely agree with @mdennehy.

@mcvsama

@mdennehy Excellent point! Unfortunately, as we see, some people don't get past twelve when it comes to some other technical words, so they want to change the world by changing words.

@shotxxxx

P.S.: What next? Ban the word ``bossy''?

@unho
The best term, given the amount of misleading propaganda some people here are
spouting, would be comrade/comrade.

Fuck no!!! That's communism and can offend a lot of people.

@mentero

Lets play Taboo Game!

@CaptainHayashi

Will the next version of Django print out Trigger Warnings whenever the database runs triggers?

@lucidm

Oh it seems perfectly fine for the commiter who confuse strict technical terms with a slavery.

@Evropi

I don't see how it's racially charged... I find the whole idea of changing such established usage very silly as well. I think the master/slave analogy is an accurate one in this case.

@dkruchinin

Wow, you people are making world a better place by being offended by this cruel terminology that was for sure invented by old bearded guys who made a crime against humanity. I think the level of slavery in the world has just been reduced significantly because this change.

By the way, let's rename "Master of CS" to "Leader of CS". It makes so much more sense. Making world a better place, yeah!

@denisjarus

@unho an absence of communism will offend a lot of communists.

@racech

Can't we just pretend it was a bad joke, revert and go back to making ours and others' lives better?

@apophys

Why changing only one term? Let's rewrite the whole project into newspeak!

To chill out, some fine tunes to remind ourselves, that the project isn't named after a non-voluntarily non-free person.

@shotxxxx

What about the submissives who are into master/slave play? Stupid ancient Egyptian peasants ruining the fun of upstanding masochists today! Stop clinging to the past, Egyptians!

Also, this is just a stunt anyway, so rich white men can get off at calling other people followers, while secretly seeing them as slaves.

Anyone want to be my follower? ;)

@CaptainHayashi

We are all sl***s to unnecessary political correctness.

@shotxxxx

Should be changed to pimp and ho. Anyone who is offended at that would reveal themselves as part of the illegal activity of prostitution, ready for immediate incarceration.

@iced

@shotxxxx prostitution is legal in some countries, please.

@shaihulud

Are u fucking serious? This is bullshit!

@mvasilkov

Also be sure to take part in our JS optimization challenge :)
http://hola.org/challenge_js :100:

(This message isn't related to slavery, religion, cannibalism and other atrocious things in any meaningful way.)

@shotxxxx

@iced yes, but not in the country that matters the most. America!

@67726e

I'm tired of all these prudes repressing the BDSM culture with the blacklisting... excuse me, urbanlisting, of the cherished roles of master and slave. Using the name "leader" (not to mention the whole "Führer" thing upsets my German sensibilities) and calling me a "follower" just doesn't put me in my place well enough. This is offensive and repressive. I demand a revert to this technology I do not use nor care about immediately!

@lucjan

Being born in a communist country I find "leader" more offensive than master. But nobody cares. Neither do I. It's the context in which the word is used that matters. Seems many commenting have a difficulty of grasping it.

Let's remove those words from all dictionaries - why stop here? While you're at it, also remove "red", "yellow", "black", "white" and thousands of other words. Just so you have something interesting to do instead of fixing real problems...

@Evropi

#2720 -- it's been reverted, phew.

@shotxxxx

@racech What? That's what this is all about. America. You think this is actually about ancient Egyptians who died by the whoknowshowmany to build pyramids? I doubt it.

Do you think that whoever thought about this as racially charged and stuff thought about those people? No. They most likely thought about black people from America, cause Americans have pushed this and everybody must 'follow'' their...um, 'lead'.

@noxiouz

Why the hell does my BIOS detect HDDs as master/slave? Could someone send PR to ASUS???

@delor

To be consistent shouldn't you change the name of the master branch?

@Meira

By changing the widely accepted term to a confusing term, you do not help fight slavery. Actual slavery is an entirely different thing, and fighting it requires more than a commit to an opensource web framework.

A few white self-important people will see "replica" instead of "slave", and that will make them feel better. It's not going to help the people who are being held as slaves around the world.

Why don't we stop comforting ourselves, get up from the couch, and do something that will actually help?
Like, donate some money to charity or to the UN, or write a django tutorial designed for people from developing countries who desperately want to learn but have zero prior experience?

I consider this embarassing that we want to close our eyes and see as few references to how our predecessors treated other people.
This is a change for increasing self-comfort of free white people, that's all it is.

I still wonder why my pull request was closed, any further explanation? Defend your point. #2720

@mvasilkov

@Evropi nope, it was proposed but closed (not merged).

@shotxxxx

Let's also petition Nintendo to change the name of the Master sword in Zelda. It's indoctrinating our children. We also need to send some PRs to Slavic countries cause they're awfully close to trigger words.

@racech

@shotxxxx yeah, it figures, black people from America working on a cotton farm are common image of slavery, at least in so-called western civilization. Thing is, it just encourages those political correctness trolls to push more and more out of their cozy little perfect worlds.

@0xd34df00d

@delor well I guess that should be a PR to the git VCS.

@5angel

@mvasilkov Should be dictator/comrade. It's a little bit mainstream and not really marxist, but hey, at least everyone understands it.

@kamikaze

let's use billionaire/prostitute

@shotxxxx

or lets cut out all the pretense and change it to sjw and patriarchy.

Edit: damn fingers. The patriarchy is so ingrained in me that I can't even spell right.

@Sapphire64

How silly. If you want to make it right you should rename Django to something else, because his hardly reproduceable guitar skills may force somebody to make suicide. I think this is serious.

@sennoy

so fat troll.

@nonuby

I stand corrected, it [#2720] hasnt been merged back yet, it was reference back to this merge.

Common sense has prevailed, now it has been reverted, all that's left now is revoke commit access from the hipster that merged it and with some time the rest of the developer community will hopefully forget this complete fiasco #2720.

Unbelievable

@vocalogic

@nonuby agreed. Let's not forget this is the master branch.. not the pimp branch. Which would be up for debate for changing if we had a bunch of pimps and hos running around docs.

@noxiouz

@Meira is very brave and has a strong point. And rejecting her PR looks like women discrimination.

P.S. Slavery in Russia (serfdom) was canceled earlier then in USA, so everyone should agree with Russians in any talks, which are related to slavery.

@Getty

@evindor I like you :+1:

@Meira

Maybe a topic on google groups will spark a discussion that will draw the attention of django maintainers? :)

https://groups.google.com/forum/#!topic/django-developers/Y_Tq7w4PAeI

@5angel

@noxiouz That's actually a good point. My vote is on boyar/lackey.

@ntlk

Thank you for making this change! <3

@amazpyel

You made my day

@he-sk

Thumbs up!

@jlebrech

What's really wrong about this is that the naming convention should come from the database maintainers and not the framework that uses that particular database.

If the database calls it master/slave then you should have no say in the matter.

@bimusiek

Waiting for this change!!

@monolithed

Oh, bye bye tolerant Django!

@schneikai

What is so bad about removing words like master/slave that are related to or even originate from so much suffering and injustice and replace it with neutral terms? As others said it before primary/replica is used in a lot of other DB systems too.

@Meira

@jlebrech Could not agree more! Let's invent our own language for everything and then wonder why people don't understand us!

What happened is that django maintainers merged a controversial pull request, then got scared to face the reaction of the community and stopped responding. Admitting the mistake and communicating with the contributors who actually care about django would be a more grown-up thing to do, eh?

Please join the discussion at https://groups.google.com/forum/#!topic/django-developers/Y_Tq7w4PAeI

@Getty

Just for .. science..., the 4chan thread of the topic: https://boards.4chan.org/g/thread/42132224

@5angel

@schneikai oppressor/victim, eh?

@jlebrech
@noxiouz

Just leave it here joyent/libuv#1015. The same person is blamed here. Author and merger are the same person. @alex What's wrong with you, man? Why don't you agree with that brave, clever @Meira? Is it gender discrimination to reject and not to discuss reasonable point?

@andrusha97

Scandals, intrigues, investigations on NTV.

@mvirkkunen

tfw political correctness bullshit finds its way into code

@Lispython

Совсем толерасты голову потеряли.

@nonuby

Based on this and joyent/libuv#1015. I think the merger has had some cultural diversity training at Rackspace and took it a little too far (or, rather, got completely the wrong message from it - pretty sure they dont ban the words from vocabulary) http://www.youtube.com/watch?v=9aVUoy9r0CM

@elcct

Much better would be leader and deputy leader

@agounaris

I don't feel really well with the django name, I believe that killing for revenge just brings more pain and I'm totally offended.

@5angel

@AlanLaughter for the religious I propose messiah/apostle.

@tomaszwojcik

queen bee/bee

@agounaris

@AlanLaughter Ant queen/workers

@tomaszwojcik

Moreover I feel distinction is offensive so I propose role / role

@AlanLaughter

no all changes are now shut/up

@5angel

@noxiouz Are you suggesting that humans are superior? That's racist!

@AlanLaughter

I seriously hate you people

@noxiouz

@5angel I'm a night elf =) So I don't care which of them are better. Feel free to swap.

@wizardist

I've just had a phone call with George Carlin right from the hell. He said he laughed his pants the moment he read the description of this PR.

@skepticCanary

How about "master" / "unmaster" ?

@vladtcvs

those terms may carry racially charged meanings to users.

any proofs?

and what is wrong with "racially charged meanings"?

@Getty

:+1: for Borg terminology..... we are all just drones..... (alternative: The weak will perish.....)

@AlanLaughter

@agounaris Django was a guitarist ya dingus

@akwiatkowski

We should think about "user" and "admin" roles. It's other kind of discrimination.

@dragon-lex

What problem do you solve?

@k-bx

Is it illegal to use racially charged meanings to servers/computers?

@AlanLaughter

@agounaris oh yes my fault I forgot that movie was the only instance in all of history that the word Django was used as a proper noun, not at all a reference to guitarist Django Reinhardt

@agounaris

@AlanLaughter Composer/Orchestra with node names like, violin, piano, etc ...

@racech

@agounaris Guitarist and composer. They can be the same person, so there is no offense to be found here. So how about that revert?

@leri

Is it a contest who'll be better smart**s?

@andrusha97

Maybe Captain America / Avengers?

@xpahos

lol, seriously? What about 'Worker Thread'? :)

@mariusschulz

@mvasilkov +1, you just made my day.

@martinbetz

Very good move to take the lead in making tech (language) more inclusive. Actually, I've never seen such a diverse reaction to a pull request.

Big kudos to the Django dev team.

@assertnotnull

Meh, ackward. Seriously? We are fighting ghosts here. Isn't there actually work to be done?

@avsej

The thread topic reminds me another one joyent/libuv#1015

@JSFernandes

Giving my two cents: I find primary/replica a good alternative to master/slave, but there should be measures to make newcomers aware of the difference/change. I also find the message that this has "racially charged meanings" to be somewhat absurd, the world and history are far more vast than USA and 16th-19th century europe.

@XANi

@agounaris #2721 there, fixed that for you

@sergey-shevchenko

we should also stop using english variable and method names in FW as it can offend non-english-speaking users. I think it's a good idea to name every variable and method in other language. Morons

@Suvitruf

Holy shit. Is it real? :E

@den-is

Is this joke ? O_o
Hope this won't be accepted.

@abackstrom

:thumbsup: Good on you, @fcurella.

@dmitry

That is so stupid! Can't believe it's not a joke.

I'm not user of the django framework, but I'm really discouraged! Hope that will never happen to a rails.

@jtimberman

I like this change. :+1:

Primary/replica is good too as mentioned earlier. I've always thought of primary/secondary when considering highly available databases systems.

@Firfi

Great work! I love python guys for their smart engineering decisions.

@Meira

I want to highlight a comment here, as a clear note from a django maintainer that the new terminology does the job worse and needs explanation: #2694 (comment)

"aaugustin added a note Wednesday at 3:12am
The master/slave terminology is so prevalent that it's worth pointing out that that primary/replica is exactly the same concept."

Revert? :) #2720

@eliziario

Actually, there is a risk that by banning certain words we are bound to forget some sad moments in history.

@mvirkkunen

@termi We can't have that. "Partner 2" might feel underprivileged due to not being "number one". Databases have feelings too!

@Meira

Discussion should happen before making any controversial changes.
Topic: https://groups.google.com/forum/#!forum/django-developers

@eliziario

What about some real problems? Other than me, I wasn't able to find others avatars that depict people from African ancestry on this thread. THIS is a real problem.
This discussion conduce primarily by white people sounds definitely patronizing and condescending to me as a black.
Want to help correct injustices? Good! Hire more black people instead of trying to be our nannies.

@nexsja

I think a better solution would be to call them "top" and "bottom" respectively. This way we won't be hurting any homosexual developer feelings.

@venatir

"replaced occurrences of master/slave terminology with leader/follower" ... is this commit about development or a personal assistant doing find and replace?

@gaearon

I think a better solution would be to call them "top" and "bottom" respectively.

Some people are switches.

@gaearon

Sun and Moon, how about that?

@Manawyrm

Are you serious?

@vladmos

Why does everyone thank the author for this commit? It makes completely no sense. Are we living in 1865? I'm disappointed in you guys.

Now someone should remove occurrences of "he" with "them" and quit the community a week later.

@5angel

@gaearon Oracle an Sun.

@coding46

Thank you, thank you very much, @fcurella

@jlebrech

What I find most offensive about all of this is that there isn't a separate repo for database adaptors.

@d1ffuz0r

Madness

@t3hk0d3

-1

@termi

Looks like someone removed my comment. It wasn't too much polite.
@mvirkkunen you are right. partner 1 and partner 2 is not enough tolerant too. Maybe partner one and partner 1?

@seanhandley

I don't know what surprises me more - that @fcurella felt this was worth doing, or that @alex felt this was worth merging.

As programmers, I'd expect each of you to be well aware that the meaning of terms we use in languages are entirely dependent on the context in which they are used. It's through context that a word can be deemed offensive. Out of context, a word is just a word. Since we're not living in the context of a master-slave racial scenario, like the one during the history of the US colonisation, I suggest this commit is pure nonsense.

Perhaps you both attended schools that were too afraid to say "blackboard", and instead referred to them as "chalkboards". If you want to live in an Orwellian landscape where words are "good" and "bad" then that's your choice but imposing such arbitrary judgement on all of us in the name of morality is dangerous, short-sighted and, frankly, an insult to our collective intelligence.

I vote for a git revert on 8a95b4f. This is a poorly motivated bikeshed if ever I saw one.

@aw
aw commented

:-1: lolll this commit.

@rickscott

@Meira:

Discussion should happen before making any controversial changes.

Yes, it was so controversial that it escaped notice for six entire days before this comment thread blew up.

@Meira

@rickscott controversial does not mean that everyone who might be interested immediately knows about it, so that the discussion can start right away, does it?

@azzz

hyper-tolerant morons

@Starou

This is so sad...

@racech

@rickscott apparently it wasn't considered controversial by @alex, who immediately merged this PR. But when someone thinking more rationally noticed, the discussion started.

Also it makes me wonder if Django is actually production-ready due to clearly insane decisions made by its caretakers. What will be next? It's time to migrate to another framework.

@creeonix

we are really need to rename daemonize into angelize or backgroundize which looks much more neutral https://github.com/django/django/blob/86f4459f9e3c035ec96578617605e93234bf2700/django/utils/daemonize.py

@jlebrech

a daemon is a benign spirit, you're confusing it with 'demon'

@cjb

:thumbsup: from someone with a large Django deployment. Thanks!

@creeonix

@jlebrech archaic spelling of demon too ;) whatever. Terminology can't be racist, peoples can. So this is all about trolling IT-world i guess

@wpietri

Nice to see this change. Primary and replica seem much clearer. Thanks!

And for those wondering about the master branch, there are meanings of "master" that don't invoke slavery, like someone who has mastered an art, or the master copy of a recording.

@niklas

@jlebrech it's both "Dämon" in German. And it is a play on words, you have to admin :)

@kamikaze

let it be parentA and parentB as in homosexual families. Let there be more tolerance lol. Conchita Wurst will be happy! Think about it!

@cbmanica

I think it's possible to agree that the master/slave terminology is problematic without approving of the failure to work toward consensus on an alternative.

@ellisonleao

is this for real?

@CaptainHayashi

How about Master and Willing, Appropriately Recompensed Servant?

@glader

Do not forget to rename branch "master" to "leader".

@henriquea

I propose that we replace color: black in CSS with ethnicity: african-american because it's very offensive.

@ErneX

Being a master myself I find this pull request VERY offensive.

@parabola949

It's only offensive if you view it as offensive. Seriously, this is what has become wrong with this world. People just want something to get butthurt about so they can feel better....

@ctruett

What if it was just changed to master / servant? Could satisfy both parties...

@eliziario

Just renaming it is not going to change anything as much as the subjacent reality of a process being subject to other remains. If the name is offensive, how can we close the eyes to the reality that the executable code not only is named along slavery but is actually an executable metaphor of it? being even the subject of praise for doing its slave'ing well?
All traces of such a feature must be removed. Git story itself must be rewritten, and the license changed, lest not some patriarchal white fork appear to ressurect this shameful feature.
Of couse, even if you are not a slave master, but you do not denounce other slave masters, you are an acessory to slavery. Thus, django should remove actively support for integrating with any other piece of software that supports slavery. And by removing support we are not telling in the way of weasel of removing drivers from the source tree, but by having code that activelly seeks to see if it is being executed in a network where slave-driving software like MySQL may be running, and if so, halting to avoid helping software slavers.

@nikow

Leader and fallower are hurts my politicans feelings, because leaders of politycs and they fallowing will feel ofensed.

PS: It's joke, don't take it serious.

@aendrew

First I was like :frowning:
Then I read this thread, and was like :+1:
Then I read more of this thread, and was like :yum: :+1:

It's documentation. It won't break code. If you're at a level where you need to use multiple databases, you can probably parse the terminology change. primary/replicant is more descriptive anyway. Stop making appeals to tradition. It's not about incompatible standards; it's about good documentation.

Good on ya, Django community!

Now we just need to get the Git-using community to adopt trunk instead of master and we'll be all set!

(Admittedly trolling with the last line, though not the preceding ones.)

@venatir

Guys ... slavery is bad for HUMANS, not machines. For machines it is the perfect word - especially because of tradition - to describe the relation between two entities. Do not tell me that we have a discrimination problem between machine A and machine B. I would have expected programmers to be able to think more abstract. The master/slave naming convention appeared at a time when slavery was already abolished in the US. Because someone feels offended, it's not enough of a reason to change a naming convention. That someone might feel offended if he/she was a slave, not offended by a word that is not even referring to him/her. Also, people who are not slaves (i do not think there are any here - especially with internet access), should stop being offended. It is not for you to be offended anyway. Find another cause and stop screwing software just cause you decided to be just all of a sudden

@mcornella

@venatir exactly. But maybe they thought, just in case the Singularity is about to happen, let's welcome our new robot overlords.

Also, leader/follower is disrespectful to the families of the People's Temple victims and other mass suicides, so joke's on you.

@samupl

At least patch it to make some reference to old names. Btw, this github page is so freaking long it actually slows down my chromium :D

@mrgn

The care with which Django is documented is one of its most-cited advantages; so I'm surprised to see so many of you getting butthurt over a move toward accuracy in documentation.

Taking offense to precision doesn't bode well for the quality of your work.

@ghost

If you are offended by words in documentation, I suggest you seek help, as that is ridiculous. :-1:

@miah

For people to conflate slavery with 'slavery in the United States' shows a pretty narrow US centric view. Remember folks, 'masters' and 'slaves' have existed for a long time. Well before we even discovered this continent. Lets also not forget, that 'masters' and 'slaves' still exist in todays world, outside of computers.

The few examples where 'master' and 'slave' are used in the technological world are bad reasons to keep using these terms. There are actually words better suited for defining the relationship between two programs.

If you still think 'master' and 'slave' are great terms to use for databases, I urge you to read; https://en.wikipedia.org/wiki/Slavery

@krainboltgreene
@speakingcode

@mrgn is an rb-tree really a tree? Is a stack really stacking things? Does a function call actually call something? No. These are all just abstractions that are used to describe the behavior/structure of things without having to describe the lower-level implementations which can vary, may be complex, tedious, etc. So saying 'leader/follower' is not any different or any more accurate than 'master/slave'. Replicated databases are neither literal masters and slaves nor literal leaders and followers. The only difference between the two descriptions is that 'master/slave' relationship is a common abstract used in many areas of technology that is well understood by most technologists, whereas leader/follower is just some gibberish made up from this non-issue.

@miah

For extra credit, search for the term 'database' in the articles on 'slavery' or 'contemporary slavery'. You won't find mentions of Oracle, MySQL, or PostgreSQL.

@setient

Thank you for this! We should be using more appropriate terms for things like this. Leader and follower make sense to me and are less offensive than master/slave.

@norwack

Retarded. Will look at alternatives whenever i need a framework from now on.

@d1ffuz0r

@miah "master/slave" search result:
screen shot 2014-05-27 at 10 58 17 am
Everyone know that's related to the technical world.
Obviously this PR is a trolling

@krainboltgreene
@skang0601

Funny how anyone who disagrees with this change is labeled a "troll" or from 4chan.

@eevee

I've never in my life seen a group of people so fiercely insistent that something should be called a "slave".

Disappointed in the tech community right now. But bravo, Django.

@tfolbrecht

sjw, please go

@miah

The framework was named after guitarist Django Reinhardt.

@miah

@d1ffuz0r computers have physically existed less than a century. 'master' / 'slave' has existed for millennia.

@skang0601

And? I love Django but I don't see how this has to do with the discussion at hand.

@miah

@skang0601 people are trying to link Django to the Quentin Tarantino movie Django Unchained. Because the name is similar and they want to troll.

@Mithgol

Having compared this issue with joyent/libuv#1015, I now have the same understanding of feminism that Setou Kenji had. Setou Kenji was right. There is a large conspiracy.

@miah

For reference; Setou Kenji

@plathrop

Just adding my thanks. This was the right thing to do, and just skimming the comments and seeing the number of people who found this change welcome justifies the change.

@nonchip

TL;DR, did someone already make the leader==führer joke?

@mrgn

@speakingcode ...... The semantic accuracy isn't at all dependent or even related to obscure literal real-world interpretation. This has been addressed several times in comments above so I won't expand on it, but one of which is @s5's "Great change, and also more technically accurate. With databases, followers can become leaders and leaders can become followers, just like with people. Master/slave implies a permanent arrangement."

@eevee

Yes. I finally understand. The animes revealed all the secrets to me.

@Winnerer

@nonchip yes, there was a comment

@Ranlvor

You know that the German translation for leader was the title for Hitler?

@davidcelis

Irrelevant. It was very quickly changed to "primary/replica".

@nonchip

@AlanLaughter didn't think of that one :D

@eevee

I'm loving all the people who are quick enough on the draw to translate "leader" to "führer" but couldn't be assed to read all the way down to the fourth comment, which says it's now "primary/replica".

@aspengler

Looking at all the trolls who merely and seemingly without a single thought post comments like "+1" or "good move" or whatnot, I cannot help but wonder how you actually were able to log on to this website...
The fact that you actually equate the master/slave concept in IT to the historical terms says all about yourself and your inability to differentiate based on language context... #facepalm

P.S. Reading suggestion: "The Wave" by Morton Rhue. Applauding numbnuts are always needed...

@seanhandley

@aendrew Re: Appeals To Tradition. I'll see your citation, and raise you The Principle of Least Surprise. Call it Leader/Follower, Principle/Secondary, Alpha/Beta, people react better to established patterns.

I guess we'll see if it catches on but this is making the Django team a laughing stock in the wider community.

@aspengler

How on earth can you think of using "primary"/"replica"?

Aren't we all equal? And isn't a "replica" merely a "clone"?

@s3k

Nice, thanks a lot for increasing an entropy in this world.

@speakingcode

@mrgn "semantic accuracy isn't at all dependent or even related to obscure literal real-world interpretation" my point exactly. The meaning of 'master/slave' in regards to database replication is not at all dependent on your real world literal interpretation of 'master/slave'. Nothing about 'master/slave' implies permanent arrangement, either. Even when interpreting on the basis of obscure real-world literals... In multiple societies, the United States included, many slaves were freed; some went on to even have their own slaves. That's all besides the point though. The point is changing this term to one unrecognized by people who work in this area doesn't help anyone or fix anything. Stop trying to rewrite history and erase/hide all the bad parts just because some people are uncomfortable with the truth or because they want to reach out far and connect things, that aren't related, based on words, which in and of themselves have no meaning and are well understood to take on multiple, even contradicting meanings at once and evolve in meaning over time.

The fact that slavery has had significance in the history of the US and the modern world and still does exist, to me, seems like MORE REASON to leave the words in the documentation. So every time you do database replication, and you see the words 'master' and 'slave', you can be reminded of how fucked up the world really is, and be grateful that your only encounters with master and slaves is some made up analogy for emotionless machines and database relationships.

You SHOULD be offended. You SHOULD be uncomfortable. Do you really think anyone impacted by slavery gives a shit about the words in django documentation? Do you think they have sympathy for anyone who is slightly offended or uncomfortable for seeing the words 'master' and 'slave' in technical documentation, or anywhere else? Shame on all of you for buying into this silly self-righteous parade.

Let's not hide history lest it repeat itself.

@jcromartie
  1. There were masters and slaves before, after, and in spite of colonialism of any kind. There are more slaves today than at any other point in history, and they have nothing to do with colonialism. Erasing the language of slavery from everyday use can only serve to help rich Westerners ignore the reality of slavery around the world.
  2. Did anybody ever ask any slaves or descendants of slaves to see if they were as offended by the language as the PR author/merger presume they should be? Sounds like the height of arrogance to me.

P.S. excuse me if I am just echoing @speakingcode but I didn't see the post immediately above me while I was writing it.

@s3k
@adiq

@orsn +1 I guess it is more ideological discussion then real world problem

@micmania1

Anybody else notice how this got merged into master? I do love irony.

@Meira

My posts probably will not get apprived at django googlegroup ever again :)
https://groups.google.com/forum/#!topic/django-developers/Y_Tq7w4PAeI

@Netrix

Srsly. If anyone thinks that master/slave is racist then he/she is probably the biggest racist because of thinking like this (probably having in mind slavery that happened in US in the past).

Normalny noone would think about something such stupid as this.

Master/Slave means what it should mean - master decides, slave does the work. There's nothing racist in this.

@mbethke

@ElephantInTheServerRoom, I suppose you're unaware that you are using racially charged[tm] terminology in your very alias? "Server" is derived from Latin "servus", "slave", which was chosen for a type of computer because it is supposed to provide "services", derived from the same Latin root obviously.
So please go change your alias to something inoffensive (maybe "MammalInTheProviderRoom", so as to avoid allegations of speciesism), and submit a couple of pull requests to people who promote "SOA"¹ and the like. Also, /etc/services must be changed to /etc/voluntaryprovisions.

¹ Service Oriented Architecture. Though, come to think of it, antiauthoritarian DNP² software should filter the record by the same name as well.
² "Domain Name Provision", what else?

@laythun

(possibly) token black male checking in.

Master/Slave makes perfect sense in this context. Why we need to be overly, pointlessly, politically correct I have no idea.

Can you all stop trying to white knight for us? Racially charged? Sure, when you're talking about people...we're talking about software / hardware here, not people.

@kennethlove

Doesn't need to be added but :+1: for this.
selfie-0

@openfly

This change is clearly a violation of accepted nomenclature standards and confusing to anyone classically trained in software engineering. This has wide reaching implications that are technical in nature and not just hyperbolic platitudes.

Start here: http://en.wikipedia.org/wiki/Master/slave_%28technology%29

The argument that the computational theory of a master-slave relationship is offensive is patently absurd, and I say this as a person whose people were used as slaves in the new world. The term has been a part of accepted computational theory for several decades and is an accurate nomenclature to describe the relationship expressed in a number of areas of industrial and software design paradigms. I bring up the industrial control point for a reason. This is a relationship that exists in multiple industries and is at the foundation of language that can be used to transcend professional backgrounds. It is part of a shared nomenclature. It also has a heritage dating as far back in language as the use of Robotnik a slavic term for slave becoming the etymological source for the word robot.

The risk in changing this nomenclature is that it will make the django code base more illegible as it will be deviating from existing standards. It will remove a shared nomenclature and reduce the ability for django development to be accessible to cross disciplinary engineering efforts. Beyond that there is a further risk in academic research. The term master slave, much like the term scheduling, or message queuing is well known and is a used search term when looking up research papers on those subjects. By changing the terminology in your project to violate that uniform pattern you make it more difficult for Django developers to participate in the broader academic community.

There are tremendous risks to this change, and the change serves no functional purpose. Merger is an act of malfeasance on the part of the Django community.

Example Research Paper:
http://www.ee.sunysb.edu/~tom/MATBE/Master-Slave-ms-2012.pdf

RFCs that make use of accepted computational concept of master-slave relationship:
http://www.ietf.org/rfc/rfc1996.txt
http://www.ietf.org/rfc/rfc2136.txt
http://www.w3.org/Protocols/rfc977/rfc977
http://www.ietf.org/rfc/rfc5905.txt
http://tools.ietf.org/html/rfc1305
http://tools.ietf.org/html/rfc3656
http://tools.ietf.org/html/rfc6953
http://www.freesoft.org/CIE/RFC/1583/49.htm
http://tools.ietf.org/html/rfc4511
http://tools.ietf.org/html/rfc4510

@Fajkowsky

Best change ever!

@mkoloberdin

Are you f*cking nuts?
This is a prime example of "political correctness gone mad".

@xpahos

@openfly oh, it was a huge mistake to show this. @alex will not sleep before all references in RFC will not be replaced. You've ruined his life :)

@englishextra

Contrived problem. Someone is eager for publicity.

@dboczek

Well. It does not solve the problem. It's like renaming slaves to followers. So there was Followery in USA not Slavery right? What have to be done is that followers (former slaves) should have more rights. So they should be reimplemented so they can choose who they follow. They should be more autonomous and their choice should be protected by Software Constitiution. So MySQL follower should be allowed to follow PostgreSQL leader etc. Otherwise we still support racial segregaton here.

@tux3

Since everybody's chiming in, imho leader/follower is not a great choice, but I'm okay with primary/replica. I'd stil rather have master/slave than everybody inventing a different terminology in fear of getting slaughtered.

I'm surprised people are actually, honestly, being offended by this. The reference to slavery (?) never even occured to me.
But I don't really mind the change as long as the meaning stays obvious.

@d1ffuz0r

So MySQL follower should be allowed to follow PostgreSQL leader etc.

lol

@PaulMcMillan
Collaborator

Please keep the personal aspersions out of this thread.

@noxiouz

It's better to call a spade a spade, a slave a slave. Rename shit to a flower would not change its smell.
So don't throw black pages of history out, it can teach us good behavior. Now a lot of people've forgot about nightmare of war, nightmare of fascism and, face the fact, it usually leads mankind to new troubles.

@kallekoo

@laythun

In your opinion, who does this pull request hurt? Whose life is inconvenienced and in what way?

@davidcelis

(possibly) token black male checking in.

Master/Slave makes perfect sense in this context. Why we need to be overly, pointlessly, politically correct I have no idea.

Can you all stop trying to white knight for us? Racially charged? Sure, when you're talking about people...we're talking about software / hardware here, not people.

This isn't a racial issue, @laythun. Many groups of peoples have been enslaved since ancient times.

@speakingcode

@davidcelis iirc you've said multiple times that this isn't a race issue... did you actually read the message in the pull request?

"While this terminology has been used for a long time, those terms may carry racially charged meanings to users."

@ultimate-deej

Please anybody tell me do I miss something? When did databases get races?

@phillipp

Thankfully this was not coded using red-black trees!

@davidcelis

@davidcelis iirc you've said multiple times that this isn't a race issue... did you actually read the message in the pull request?

Nope, I haven't, and yes, I did.

@noxiouz

@phillipp awesome)

@mbethke

@ultimate-deej Wait, I had this PoC for a MySQL race condition exploit somewhere on my hard drive ...

@nnmware

Never seen more idiotically patch....

@zba

I always told that pythonists are fanatics.

@woxxy

This is a case of mobbing and trying to manipulate the Django developers by suggesting retaliation through bad publicity.

These pull requests are programmatically made in big projects to discredit them on the chance and shouldn't be encouraged.

There's no negative connotation in master/slave in our field. Whoever thinks otherwise simply has a different opinion, and should respect others'. In fact, no human being in this moment is enslaved because of a word in the codebase, but you are limiting someone's freedom of expression.

Just search "master slave django" on Twitter to realize how pretty much anybody sees this change as a joke.

@shevegen

A lot of propaganda in this thread.

Master slave is perfectly fine. So many bots autocomment on this it is sooo annoying.

@davidcelis

This is a case of mobbing and trying to manipulate the Django developers by suggesting retaliation through bad publicity.

These issues are programmatically made in big projects to discredit them on the chance.

Nope. @fcurella is a known contributor in the Django community.

@kamikaze

Let's just drop this framework which is being maintained by such morons! Time to learn Pyramid+SQLAlchemy

@marcgear

Primary/replica is a superb replacement. Thanks for this change.

@derblub

I feel pretty offended by 'leader'. :eyes:

@Nepherhotep

@woodruffw

My point is that essentially, as repulsive as slavery may be, there is nothing in the term directly affiliated with any one race (except, perhaps, the Slavs).

Even though the word "slave" can't be offensive as "slava" in slavic languages has completely different meaning - "glory".

@racech

@kamikaze that's what I'm going to do. It is impossible to rely on a project led by people accepting such changes (and doing so without proper discussion) to stay sane and standard-compliant. What's next, a new Web Provider Gateway Interface because word server is derived from the same latin word as slave?

@gandralf

Bikeshedding 101

@marcin-koziol

Let's just drop this framework which is being maintained by such morons! Time to learn Pyramid+SQLAlchemy

@kamikaze pyramids were built by slaves...

@ultimate-deej

@mbethke indeed, this makes sense. now it is perfectly reasonable to replace master/slave with some random words

@woxxy

@marcin-koziol That'd be a misconception, Pyramids were built by paid workers.

Archaeologists now believe that the Great Pyramid of Giza (at least) was built by tens of thousands of skilled workers who camped near the pyramids and worked for a salary or as a form of tax payment (levy) until the construction was completed

From http://en.wikipedia.org/wiki/Egyptian_pyramid_construction_techniques

As it looks like, no people were enslaved for the production of Pyramids, so we're on morally safe grounds to use Pyramid+SQLAlchemy!

@soonahn

Let's just drop this framework which is being maintained by such morons! Time to learn Pyramid+SQLAlchemy

@kamikaze pyramids were built by slaves...

@marcin-koziol LOL

@hapylestat

New leader/follower terminology hurts my feelings, so as result i will stop using django and looking to other projects....

@marcin-koziol

@woxxy there are also pyramids in other regions of the world (Mayan, Aztec, etc)

@QuakePhil

LOL! Thanks for making my day guys. This is the single most hysterical thing I've seen in a long while.

@woxxy

@marcin-koziol Apparently they mean the egyptian ones.

screenshot 2014-05-27 23 52 45

Also, no aliens were harmed. That is important.

screenshot 2014-05-27 23 51 29

@letit-bee

Egyptian pyramids actually weren't build by slaves - this kind of sacred work is a duty of a citizen. Don't know about other Pyramid.

@marcin-koziol

@woxxy Propaganda again. They pretend that there are no other pyramids than the Egyptian.

@rakiru

I've only recently got into Django, and after seeing this, I'm considering switching to another framework. The fact that you've accepted this pull request for no good reason, making developers lives difficult by not using the expected, conventional terminology and making maintenance more difficult puts me off so much. If someone gets offended by a word, not an insult, but a word in a non-derogatory context, then that is their problem. This is just madness.

@woxxy

@marcin-koziol You're right. We should send a pull request to Pyramid to point out that Egyptian pyramids are no better from a moral standpoint than the Mayan, Aztec etc.

There's nobody else out there to fight for the Mayans. THINK OF THE MAYANS.

@siemiatj

Madness ? THIS IS DJANGO !!!

@ThiefMaster

I'm not using Django but crap like this ensures that this won't change in the future. While human slavery is a horrible thing, it is actually a very appropriate term when it comes to software. After all, the slave process does what the master process commands it to do. Now imagine what happened if a slave process could decide not to obey/follow its master? Yeah, you don't want that.

@thomasdavis

This is an unfortunate but necessary step, though the real job here is to promote equality for all. I think in 20 years people will look back and think that even Leader/Follower was an archaic way of thinking because it promotes unjustified hierarchy among people.

@ThiefMaster

So you think having a boss is also unacceptable? That's hierarchy, too!

I have the feeling in 20 years we'll live in a world where you get fined for using swear words and political incorrect terminology.

@XANi

It should just throw exception "please use database that doesn't force part of it's server pool into slavery"

@damianb

Why is a free and open source software project prioritizing personal ideologies instead of making kickass code?

@fread2281

@damianb This is 81 lines changed. Hardly much time wasted. Why are you wasting your time complaining?

@benbenolson

This is what's going to happen: after Django changes it, nobody else is going to follow (or very few people are), and it's just going to fragment the terminology standard. This is the worst decision that could have possibly been made.

@fread2281

@juicybaconbuttcactus It's now primary/replica, which is commonly used.

@jkobus

this makes our world a better place. thanks.

@taotetek

+1 !

@joneslee85

my brain hurts! +1 anyway

@damianb

@fread2281 Because it distracts from the primary purpose of the project: code. Because it'll be followed by "Oh, we have to change branch names because that uses 'master' too" and "git is a derogatory term in some contexts, so we should include a file which aliases the git binary to linusversioncontrol", followed by the abolishment of any files which start with "trans" due to their potential for offense.

It's a slippery slope, trying to play politics with something that should be focusing on something bigger - namely making information (and by extension - privacy and livelihood) secure. Focus on what's in front of you, instead of bullshit. Let society work that shit out on its own, it's coming along fine as it is.

@krainboltgreene
@clayfink

Great change! Thanks.

@HarryR

This isn't a joke?

Django drama stuns me again.

@mispy

This thread should've ended after the first comment. Trivial change, potentially non-trivial benefits, done.

@timb07

The terminology used for trees in computer science used to be "father" and "son" (and other gendered terms) to refer to nodes. At least 20 years ago they switched to using gender-neutral "parent" and "child", and as far as I know, nobody died.

This is a good (and trivial) change made for a good reason; anyone still complaining about it probably needs to check their privilege: http://www.robot-hugs.com/privilege/

@kronda

Kudos to the maintainers for being culturally aware enough to make this change. Maybe I should finally learn Python...

@siivonen

Time well wasted.

@dmishe

Terrible.

@evill33t

That is just stupid.

@vcanfield

Django devs just confirmed that they are now preferring the terminology "master / replica" or "primary / slave", but never "master / slave". So "master" and "primary" are interchangeable, "replica" and "slave" are interchangeable, but the combination "master / slave" is never appropriate.

@evill33t

That is even more stupid. Avoiding established terms for the sake of an abstract political correctness to gain a higher moral ground. Makes me sick.

@tz-lom

It is stupid for many reasons but mainly because you replaced right term with wrong term.
Slave database is not "follower" - it does exactly what master does, it have no will or reason to do anything else, if you like a follower behave like this I have some great news for you - you are slave.

You "invented" new pair of words for well known thing - great improvement for every newby who will stuck to find some "follower database" with google

@krainboltgreene
@krainboltgreene

@tz-lom If you read they chose Primary/Replica, which is just fine to google for.

@SlavaBobik

That is why I love .net community. They are changing the world, not words.

@tz-lom
@JeremyMorgan

Here's the way I see it. It's a terminology change. It helps more than it hurts and if someone else is willing to dedicate the time to change it, why should anyone care?

I'm just as against over-zealous political correctness but this just doesn't seem like a big deal to me. If there are people offended by it, I understand why that might be and since someone is willing to donate their time to fix it, it only seems like a net gain for everyone involved.

What if this change brings someone into the project who wouldn't have otherwise joined because of this terminology? Why would we discourage that?

@ErichvonderSchatzinsel
@dmishe

@JeremyMorgan well it seems like if somebody is offended by word master, they couldn't really get into computer science in the first place?

@evill33t

@JeremyMorgan

It prevents people from reading documentation. Master/Slave is well established in the IT world. this change makes it harder for new people to grasp the concepts. I also don't see how this could help people to participate which where offended before, cause honestly those people are just stupid.

@inc0

By the way, has anyone consider that update on existing project may lead to database screwup and downtime etc etc? There are reasons to keep configs etc backward-compatible...

@slavic77

Would a follower ask soon a leader in your environment "are you sure" questions?
Do you think developers of that terminology never thought what are they doing?
Do you think slavery started almost 250 years ago?

For sure those words are quite older than leader or follower, and I believe it is race transparent.
Do you want to remove that words from language and you believe no one would develop that horrible social system again?

btw
have you ever wondered how ethnic group Slavic affected genesis of slave word?
I'm as well a member of that group.
For sure I do not feel offended by use of words which have specific meaning.

@pielgrzym

I still feel baffled by these terms. Leader and follower seem so shallow and bear in mind - there have been so many bad leaders throughout history. Maybe we could use 'shepherd' and 'lamb' - this would make a nice analogy to religion and would help to convert and evangelize people?

I don't think this change causes any confusion at all. It will make reading documentation more effective - I always stopped and contemplated those horrific slave/master terms for hours instead of, you know, doing stuff.

@artur-augustyniak

We need to ban use of words cotton, family, boobs.
Also do not forget to set any default seed as 1984.

@vrinek

@fcurella, @alex this is not April 1st and this is the master branch of Django. Please revert before the Rails community catches a whisp of this and think that it is a good idea.

@lysenko

Finally someone did it.
Could you also s/slave/follower/g on Wikipedia?

Spartacus was one of the followers leaders in the Third Servile War, a major followers uprising against the Roman Republic.

@Meira

Maybe we could use 'shepherd' and 'lamb' - this would make a nice analogy to religion and would help to convert and evangelize people
@pielgrzym

Is technical documentation really a suitable place for hidden religious propaganda?

@evill33t

@Meira it was a joke about the stupidness of this change...

@pielgrzym

@Meira of course! :+1: political correctness and religious propaganda are basically the same thing - they both want to help people stop being baffled by word slave or master.

Guys, have you thought about mailing Torvalds? You know, every git project contains 'master' branch - this hurts people.

@olekhy

@django_core u are crazy need a doctor
computers are not human so asocial by the definition. why not master and slave node?

@Meira

@evill33t Hope so! :) Considering that master/slave was actually renamed to leader/follower for some time, I would not be surprized to hear someone seriously suggesting shepard/lamb :)

@ErichvonderSchatzinsel
@JBuitenhuis

The Master just turned into a Slave..

@pielgrzym

@ErichvonderSchatzinsel you are so right! We need to have a questionnaire when one enters django docs! One would detail his whereabouts and he could get the least baffling documentation version for his beliefs!
@Meira troll successful :smiling_imp:

@Zack--

Does that mean that the D is silent ?

@funny-falcon

have you ever wondered where from ethnic group Slavic has taken from?

Sorry, I don't know English enough to understand your statement.
Word "slave" were formed from "Slavic" cause many slaves were actually "Slavic" (cause many nomadic nations steal slavic people and sold them to slavery)

@funny-falcon

Lets call it "Lord/Apostle" replication!!!

@orbisnull

Good! Please remove word "daemon"!

@agounaris

we need to do something with the word "soap" as well....

@Meira

@pielgrzym Trolling is always more successful if you in fact are not trying to troll :)

@suprMax

@funny-falcon I'm from a slav country, this is offensive!

@mxey

This change makes me think there are good people working on Django and motivates me further to learn it (again). Thanks. 👍

@tamr

Politically correct, haha great. Waiting for further improvements.

@evill33t

@mxey elaborate, how is using wrong terms motivating you to learn "django" (i guess you mean python) and how does accepting a pull request from a troll making the django core devs good people?

@agounaris

@mxey oh my god there is no hope, changing words that refer to a machine is not making you a good person!

@mxey

@evill33t the pull request has been merged.

@jurasadam

Glad to see that this is a high-priority task in the backlog. Everything else is all nice & dandy, right? :unamused:

@evill33t

@mxey and how is this making the django devs good people? and why is this change motivating you to work with django? its just replacing widely used termina with some obscure replacement making documentation hard to understand and searching for it even worse

@agounaris

@mxey Your opinion could have been different if the pull req wasn't merged?

@krainboltgreene

@evill33t It's not a troll submitter, he's a core maintainer.

@lichb0rn

I suggest "master/apprentice" like in Star Wars.

@msoedov

epic thread

@toscho

Replicants are the slaves whose revolution failed. Congratulations, Django team, you made it worse.

@yaph

@emilssolmanis good point about the master branch, this is an intolerable name and should be replaced as well /irony

@pielgrzym

@Meira oh noes! You uncovered me, I am doomed :trollface:

@lucjan

I always wanted to try django out in a project but never had the opportunity and time for it. Thank you @alex for convincing me to steer clear of it. Well done.

@achpile

Hey... There is some things, I wanna change too....
1. Half Life Black Mesa - racism... Tell Marc Laidlaw to change it's name to Dark Mesa, or Afroamerican Mesa
2. What means "Black list" and "White list" in IT terminology? Let's name it "Bad list" and "Good list".
3. Nigeria... What's a name?! What was they thinking about, when named it? Let's ask Goodluck Jonathan to rename it to something like "Best African Country In The World Renamed Because Of American Empty Heads"

Damn... Those people make me crazy... You are paying so much attention to the things, which was horrible, of course. But everything was changed. All the people are different. Girls and boys, young and old, black and white, stupid and smart. And you can't change it by renaming IT terminology. Do you think that they will feel better after this patch? NO! It's just one more reason for them to recall all those f**king thing in the distant past.

@X4lldux

Is this serious? Maybe we'll replace word "member" with something else because it sometimes means "penis"... especially when everybody is touching their Python (code) all day long.

@GuidoHendriks

Muricans. :-1:

@slavic77

lets change it to Guru and Idiot.
Nor first neither second should feel offended.

@joneslee85

For god sake, can we stop and move on? I could use this PR as my mouse scroller testing if this keeps going

@ErichvonderSchatzinsel
@dkarlovi

"alex merged commit 8a95b4f into django:master from fcurella:patch-5 on May 20" :)

@thet

let's make this the longest discussion thread on github

@ErichvonderSchatzinsel
@akamch

For god sake, can we stop and move on? I could use this PR as my mouse scroller testing if this keeps going

Let the discussion flourish! You can always use http://thedeepestsite.com/ for mouse wheel testing.

@punarinta

:scream_cat:
Political correct idiots in the web-development, no way, no waaaay...

@Infernal-knight

It's awesome stupid, good job. :-1:

@svisser

@timb07 maybe you should delete your foaas repository before commenting on this change.

@vladmiller

This made my week :dancer:

@shvechikov

Replace all bad words! Save the planet!

@ErichvonderSchatzinsel
@mispy

I personally do not care very much whether it is called master/slave or smeerp/rabbit or what have you.

However, I do care very much that other people be allowed to care. Nobody here is being required to do anything except the original contributor and the person who merged it. Neither of them have a problem. This means that everybody else in the thread is objecting to someone else caring about social problems as a matter of principle, and that is extremely obnoxious.

When someone says that an issue is important to and affects them, you usually don't have a great deal of evidence either way. Given this uncertainty, do you then err on the side of:

  • Accepting that different things are important to different people?
  • Belittling the person for daring to care about something you don't?

The choice seems clear to me. Ordinary claims do not require extraordinary evidence, and trivial changes do not require extraordinary cost-benefit analysis. Especially from random bystanders who aren't even involved.

@07151129

Thanks, mispy, where would we be without your opinion.

@gilesbowkett

Go Django go

@evill33t

@mispy some people like myself do care cause its breaking up logic and documentation. i am a big django evangelist at work and explaining to them why master/slave is called differently will make the project look inmature and driven by social justice warriors instead of problem oriented coders.

@max107

>_<

@krainboltgreene
@krainboltgreene

@achikin He's a core contributor.

@kelp404

Master/Servant :+1:

@svisser

@mispy without going into the subject matter, this PR does matter to everyone because everyone is affected by how we refer to this in docs / talks / code / etc.

@ErichvonderSchatzinsel
@evill33t

@GuidoHendriks so caring about the integrity (documentation and technology) of the framework makes me having a shitty life? why you start throwing out insults, could it be you have 0 arguments?

also the political discussion was started by people who brought unneeded context to it established nomenclature

@kivikakk

@achikin Politics is already in the world of programming — it's everywhere, you just benefit from the status quo so much that you don't see it. Not everyone is so privileged.

@fcurella

To everyone concerned about leader/follower being a bad choice: you are right, and I completely agree. So does the Django team. Indeed ticket 22667 was reopened just 2 1/2 hours after this commit was merged in with the exact same concern.

As you can see in that ticket and #2694 , the consensus was to go with primary/replica, as they are already common terminology. Additionally, we made sure to still refer to the old terminology once per every doc that uses the new one.

@vexorian
@BillyTom

@fcurella What about the people who are stunned by the pointlessness of this undertaking?

@vexorian
@inc0

I feel sorry for people who will do apt-get update python-django after this one...

@heikki

I have been puzzled by this thread for a day and a half. The best result from googling led me to this:
http://www.theatlantic.com/education/archive/2014/05/empathetically-correct-is-the-new-politically-correct/371442/

@CheatEx

#22667 replaced occurrences of master/slave terminology with leader/follower #2692
alex merged 1 commit into django:master from fcurella:patch-5 8 days ago

Guys, I think you forgot something...

@heikki

.. the next best to this: http://imgur.com/gallery/MTlJr

@Koviko

This whole thing is ridiculous...

@funny-falcon

@suprMax I'm Russian in at least 5 generations. I have nothing against history of my nation. I'm proud to be Slavic and Russian.
If word "slave" were formed after "Slavic", it is just a history. Since that many achievement were maid by Slavic nations.

@07151129

@funny-falcon

hystory

lrn2pravopisanie

@robinbentley

Completely and utterly pointless.

@dzautner

This is hilarious.

@johnvpetersen

What's interesting is how this change makes things more inclusive. I seriously doubt that there is a single instance of anybody who refused to use this framework on the basis of taxonomy. And if there was, there was always the remedy of forking (perhaps we should change that term too...) and making the change there. Done & problem solved. BUT - if you are expressing outrage today but nevertheless, used the framework, then IMHO, you, at best, are feigning outrage and in reality, it is more important for you to appear to be outraged than actually outraged. It's really nothing more than propping up your social cred and in reality, being a hypocrite.

If it is something that matters to you, great. What is off-putting is the outrage that some have toward others for not having the same outrage. A non-functional change like this - to the trunk is a bit of a misguided and naïve decision.

@jordanekay

Thanks for making this change! Much needed.

@ghost

I'm glad to see I'm not the only one who dislikes this terminology. I've shrugged it off when others use it but I've also avoided it in my own speech/writing/naming conventions.

@vexorian

@speakingcode : It's a db, not a history lesson -.-

@chrifpa

<3

@davidcelis

Not really sure why this matters.

It is exactly a master/slave relationship. The slave does exactly what the master says or it gets out of sync. If it was a leader/follower relationship, the yarn would break and the child would wander away.

@artschwagerb Please read the entire discussion before you contribute. A separate patch was merged in quickly after this one that changes the terminology to primary/replica, which is also widely used and understood.

@lucjan

"Please read the entire discussion before you contribute." haha joker....

@fprochazka

This is a joke, right?

@bornmw

This is a great move!
Hopefully that's just the beginning.
We need to rename icons to something else b/c religious stuff assaults some people
And Daemons -- why would anyone want to have daemons in HER system? They are satan!
Agents - I hate them, especially special agents, don't want no KGB staff on my lappy!
That's just top three for starters

@jarinudom

Any time someone uses the term "political correctness" as a pejorative, I automatically assume they're about to say something borderline racist, haha.

Anyway, I am not super gung ho about this change but what's the harm in being a little culturally sensitive about slavery?

Also this is going to be hilarious for some of you when prospective employers check out your GitHub history

@dannyob

Thanks for doing this.

@rachelkelly

thanks for doing this. language evolves, I've always found this terminology to be uncomfortable, and I was disappointed when I learned it was standard, many years ago. glad for this step in the right direction.

@jamtur01

Good change. +1.

@jasonrhodes

:+1: for the change, but this is a really depressing thread…

@gwachob

+1 This should change, and good on the Django project for stepping up when obviously it isn't easy to convince everyone of the merit of the change.

@qu1j0t3

I think this is a very positive step. Thankyou!

@ksze

Let me play the devil's advocate. I'll probably get burnt for writing this:

What if we keep using the master/slave terminology precisely because we recognize that slavery is a thing of the past and that we can give new meanings to the words? Words by themselves have no meaning. Each and everyone of us human beings give meaning to words through usage and interpretation.

@jaegerpicker

Thanks for the change! Primary/replica are clearly the better terms.

@ErichvonderSchatzinsel
@lamont-granquist

FWIW, I'd prefer "primary" and "secondary" or "backup". I just find the word "replica" sounds awkward.

@ErichvonderSchatzinsel
@matteius

I agree with practically all of you on this one. You all nailed this really really well!

The true irony for some is that we actually do still live in an age of leaders and followers, yet the irony for others is that the terms quickly changed to primary and replica while 1/3 continued to pick on the English word choices of a native Italian.

Most funny to me is everyone that defends the tradition of the technology terms master and salve appear to be from that I clicked through was from a red state. I personally prefer the Blade runner terms, over a history of slavery—it is really true we should frown about slavery.

Well played!

@karmajunkie

I find the number of people standing up FOR the use of 'slave' ridiculous. Can't help but feel that 20 years from now your kids are going to find these threads appalling.

@dmishe

@karmajunkie what's wrong with the word slave?

@mkawalec

Wow, django <3

@Stunner

The way to change the connotations of a particular word or phrase is not to swap it for something else but to use it within a different context. Master/Slave has been used innocuously for decades in computing and has absolutely nothing to do with 'racist overtones', anyone who thinks so needs to get out of the 19th century. Very disappointed that people wasted their time making such a change.

Watch... next the master branch will be renamed.

@doktornotor

This change is on par with the idiots demanding an apology for using the term "black hole" and suggesting to replace it with "white hole". Brain transplant, anyone?

https://www.youtube.com/watch?v=oc1zGRUPztc

@CaptainHayashi

@matteius Combo breaker: I've argued in this thread in favour of keeping master/slave, and I'm not even from the US.

(In before someone decides that since I'm from the UK, my opinions concerning slavery are meaningless.)

@JustinPatricWade

How long until red-black trees are replaced with Native American Endangered Species Person-Oppressed African or African Descendant Person Trees?

@minexew

When are we going to abolish the terms whitelist/blacklist? It is very racist and implies that black is somehow worse.

:^)

@joneslee85

Also we should abolish 'left/right'. It's discriminating against left-handed ppl. Why 'righteous' == correctness?

@jakubfi

This whole thing, together with "good change"-style comments is like an IT version of "likes" for helping children in underdeveloped countries... And it makes me really sad - I always thought we're those focused on doing actual things, not dicking around. Silly me.

@krainboltgreene

@jakubfi Unsurprisingly I can do both. I do both.

@richaagarwal

Thanks, django!

I generally think it's useful to avoid language that can trigger strong emotional responses beyond its literal meaning in the context provided, if the goal is to not produce a strong emotional response. Luckily, we often have many words to choose from when making such choices! This does involve knowing your audience, which can sometimes be tricky if you only interact with certain crowds. There are also books you can read if you're scared of asking someone!

@CaptainHayashi

Slippery slopes aside, this change sets a bad precedent for ‘solving’ previous injustices by making any reference to them, no matter how contrived, taboo and verboten. We don't pretend injustices didn't happen, we tackle them head on. Slavery* is wrong, and we do need to fight against it. But a web framework is the wrong battleground and political correctness the wrong weapon.

*Actual slavery where the slave is entirely unwilling, not BDSM roleplays etc.

@dunric

I can't believe this request was merged :-1: I find offensive ignorant people without understanding of context and meaning of synonyms having influence to break things which are completely innocent by themselves. Pure nonsense and false correctness.

@draganHR

Master should be called Aladeen, and Slave should be called Aladeen

@Meira

I find it particularly notable that the vast majority of the pro-"primary/replica" arguments are subjective and general, while most of the pro-"master/slave" arguments are more objective, practical, include coherent reasoning, and are more grown-up.
Is one side loaded with guilt and fear, while the other side stays logical and practical?

Compare:
"This is a very positive change" (personal opinion), "I was always baffled by this terminology" (also personal opinion), "We should use more inclusive language" (very general, implies that the current language is exclusive, and that is a different topic on its own), "Groups of people can be uncomfortable with this terminology" (a suggestion, not a fact)
versus
"Clear and common terminology is better than newly invented and uncommon" (fact), "The words themselves are not good or bad" (fact), "Using new terminology makes the docs less useful for newbies as well as makes experienced users wonder if they understood it correctly" (easily proven, try google search of "master/slave" - tons of tutorials; not the same for the new pair), "Assuming that slavery is a racist idea is Ameri-centric and racist itself" (history knows too many white slaves, black slave owners to assume it is racist), "Replacing the words will not change history or reality" (hopefully, an obvious fact).

Conclusions are up to the reader.

Personal note:
My posts don't seem to make it through the moderation on google group (https://groups.google.com/forum/#!topic/django-developers/Y_Tq7w4PAeI).
Apparently, my feedback is no longer appreciated by django core devs, so they chose to not hear me (note django's Code of Conduct: "When we disagree, try to understand why." Seems like this code works in only one direction)

@lu-zero

django might focus on getting more usable and less icky (uwsgi headaches to name one, non-pythonic etc...) @Meira you might consider different python frameworks that fits better python.

@tokibito

The correct terms are master and slave. Use of wrong term is not pythonic.

@Meira

@lu-zero Actually, this does make me doubt the adequacy of the course Django is taking! Seemingly small issue, but the treatment I personally received made me wonder if this is indeed the community I want to be a part of.

@PAEz

@Meira Beautifully stated.

@lu-zero
@vexorian

"I find it particularly notable that the vast majority of the pro-"primary/replica" arguments are subjective and general, while most of the pro-"master/slave" arguments are more objective, practical, include coherent reasoning, and are more grown-up."

Almost as if you had confirmation bias or something.

@lutoma

Thanks @fcurella and @alex! Ignore the haters <3

@davidcelis

I find it particularly notable that the vast majority of the pro-"primary/replica" arguments are subjective and general, while most of the pro-"master/slave" arguments are more objective, practical, include coherent reasoning, and are more grown-up.

@Meira: I found it notable that the vast majority of the pro-"master/slave" arguments are just statements of appeal to tradition. There are a handful that claim it is more descriptive terminology, but I haven't personally seen a good reason for why primary/replica is not also descriptive.

I also found it notable that the vast majority of rage being expressed is on the part of people against the change. @andr0s' comment right above me is a bit too convenient, but just look through half of the other comments on this thread.

EDIT: The comment I mentioned got deleted by the author or a contributor, but it said (paraphrased): "Master is offensive to feminists, change it to 'mistress' d1ckheads!"

@lemontooth

Assuming that slavery is a racist idea is Ameri-centric and racist itself (history knows too many white slaves, black slave owners to assume it is racist)

  • Hi there, master/slave is racially charged, might we swap it out?
  • Not for me it isn't!! Black people enslaved white people too! You... racist!!!

scratches head
Yep, prime example of an objective, practical, coherently reasoned, grown up argument you got there.

@norwack

@krainboltgreene I bet you i will. $100.000. Terribly written framework anyways.

@dalu

The Django masters are also deleting comments that they don't like.
The Djangoists are the real slavers

@mowings

The most interesting thing about this PR is the sheer amount of furor generated. Sure, the changes to the docs basically solve a non-existent problem. At the same time, the new terms aren't exactly confusing either. While I'd prefer master || primary -> replica || slave || secondary, I don't recall anybody getting this excited over Zookeepers followers and leaders. [Edit: missed the change to primary/replica]

Maybe it's generational -- y'all are all just so ... verbal.

@vnaylon

Great change. The argument that “it’s been that [wrong/offensive] way forever” is not sufficient.

@jberkus

FWIW, the PostgreSQL project has always used the terms "master" and "standby" to refer to a single-master system, throughout our documentation. For that matter, other DBMSes with single-master replication use the terms "Primary/Replica" and "Primary/Secondary" -- more than use the terms "Master/Slave", which are used more frequently to refer to antique HDD configurations under IDE. So the assertion that the "industry standard" is "Master/Slave" is demonstrably false.

@mannol

I disagree with this because, you know, when master tells slave to do something he ought to do it, no objections. While the terms leader/followers are more politically correct, they do not serve as effectively as master/slave.

@lysenko

Github must ban the government of Mauritania.
http://www.npr.org/programs/specials/racism/010828.mauritania.html
Cite:

The government goes to great lengths to deny the problem. It has banned the word "slave" from use by the media, and foreign journalists risk arrest and deportation for investigating the issue.

@davidcelis

While the terms leader/followers are more politically correct, they do not serve as effectively as master/slave.

@mannol1 Irrelevant. The terms being used are primary/replica. Please read the entire discussion before contributing.

@zerkms

@davidcelis to be honest - replica term (from my perspective) means that something is identical to something else.

Whereas the slave server doesn't have to be so. It's frequent the slave server only holds part of the master server data.

Finalizing: the slave term expresses a role, whereas the replica term expresses the data attribute/quality.

IE: slave server in mysql replication schema may hold NO DATA at all. I wouldn't call it replica in this case, just because it's not.

@d1ffuz0r

@mannol1 >While the terms leader/followers are more politically correct
Absolutely incorrect for Europe. Such double standards

@karlht

Thank you to the Django developers -- leader/follower reads with much less baggage attached for me.

@eliziario

I really don't care. Call it sun/earth, smurgasbordnic/flatuvalicxlkt, remove the feature, delete the documentation. I don't care, but please, just stop. All conceivable POVs have already been exposed ad nauseam.

@filipnaumovic

If only this sort of interest formed around more meaningful issues. Development should be free from political and social obligations and as such this is not much more than an end-user confusing step. On the other hand why not, if it pleases someone - it's just syntax.

@ErichvonderSchatzinsel
@ErichvonderSchatzinsel
@ErichvonderSchatzinsel
@ErichvonderSchatzinsel
@ErichvonderSchatzinsel
@andr0s
@isotopp

I think we need to reform Python and its use of WHITEspace. This is all wrong.

@ErichvonderSchatzinsel
@Dundee

I think you should rename Django to something less offensive, because it can reffer to movie "Django Unchained" which contains slaves and violence!

You should take example from http://www.vislab.uq.edu.au/nb/jokes/computers/pc_unix.html and take this seriously.

@CaptainHayashi

I don't see how preferring the original terms is fallacious. In terms of documentation, it is genuinely confusing for documentation users to use terminology different from that which they're used to.

One could argue that some people here have been using the appeal to novelty =p

@haasip-satang

Don't you think this also reads a lil funny then: "Let's remove the terminology master and slave and merge our changes into django:M A S T E R" ;) Maybe you should change the branch name too (or is that ok because there are no slave branches ;-P ? )

@nonuby

@karlht "much less baggage" - why were you a slave?

@canweriotnow
@lemontooth

@CaptainHayashi

In terms of documentation, it is genuinely confusing for documentation users to use terminology different from that which they're used to.

Oh come on. How is that going to confuse anyone? People that dense won't make it through the tutorial anyway, let alone using multiple databases. If anything, the change makes the documentation more descriptive. And for "no one will be able to discover this", google "django master slave" and look at the first hit. Just the snippet provides you with enough information. Also this.

@zerkms

to be honest - replica term (from my perspective) means that something is identical to something else.

And that is what it describes, literally, in the context of this change (not accounting for lag/sync problems).

@haasip-satang

"Let's remove the terminology master and slave and merge our changes into django:M A S T E R" ;) Maybe you should change the branch name too (or is that ok because there are no slave branches

How original. But yes, you are correct, this was about the compound "master-slave" only.

@GrueMaster

Oddly, the term is used in a lot of industries to describe a controller/dummy relationship. The railroad industry has used them for as long as they used multiple locomotives to move cargo.

If we are going to be eliminating the term Master, what will replace the title of the college degree beyond Bachelor, but before Doctorate? How about the title of a higher ranked chess player or the head of a college?

How about the phrase "he's a slave to his work" often meaning that he lets his work come before his personal life? What about remote control systems? Will we be renaming these communication links too?

And lets not forget the religious implications. People that are devout are considered slaved to their master (God).

Interesting responses on stackoverflow.com regarding this topic. One poster suggests using "pimp/ho".

This entire topic is rubbish, and I find it offensive.

@canweriotnow

@GrueMaster

This entire topic is rubbish, and I find it offensive.

:+1:

@gngeal

It is incredibly US-centric to assume that "master/slave" are "racially charged terms". There have been many societies where slaves and freemen were not separated along racial or ethnic lines, for example, the Roman Empire. Witness the cultural imperialism face of the PC movement at its finest!

@lemontooth

@GrueMaster:

If we are going to be eliminating the term Master
[yadda yadda about how it is impossible to nuke "master" from the english language]

Fine, but this PR wasn't about any of that. It was very specifically about replacing "master/slave" with "primary/secondary" in the Django documentation on Multiple Databases, terms that are more descriptive and widely used. "Master" is still used in other contexts than database replication in the documentation. Nobody expressed a desire to change the term for higher ranked chess players.

Interesting responses on stackoverflow.com regarding this topic. One poster suggests using "pimp/ho".
This entire topic is rubbish, and I find it offensive.

Yes, very interesting. Thanks for sharing. Much constructive.

@gngeal

Witness the cultural imperialism face of the PC movement at its finest!

Now that is some kind of fresh madness.

@tamamoe

What's going on here?

@ErichvonderSchatzinsel
@Frogging101

Ugh, this is bullshit. Why should anyone give a damn about the terminology? Keep your feels out of computing.

@Frogging101

Also, when did the social justice army invade GitHub? Nowhere is safe anymore.

@minexew

@Frogging101 Running around the Internet spouting incoherent subjective arguments to make oneself feel beneficial to the society is easier than writing good code.
As if you forgot to realize how stupid the average person is and that half of the population is by definition dumber than that. GitHub has no access barriers, making it very susceptible to attacks from SJW and their sheep. Try the same on LKML and you'll get blown out in minutes.

@wlipa

The true master here is a kind of linguistic puritanism to which, unfortunately, many are slavishly devoted.

@distransient

Forget all the openly bigoted opinions ITT; this is a great PR!

@Tak
Tak commented

:+1:

@6079-Smith-W

"master/slave" is ungood crimethinkful oldspeak. plusgood rectify unword.
Is Minitrue doubleplusgoodwork truthwise. chocorat anyone?

@Carreau Carreau referenced this pull request in ipython-contrib/IPython-notebook-extensions
Merged

Add license terms file #76

@celber

Hi, i feel personally offended by racist name of this repo while it associates with tragic story of one american slave. I demand changing its name to "My Web Pony".

@jacobian jacobian locked and limited conversation to collaborators
@alex alex locked and limited conversation to collaborators
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
This page is out of date. Refresh to see the latest.
View
6 docs/ref/settings.txt
@@ -649,10 +649,10 @@ Default: ``None``
The alias of the database that this database should mirror during
testing.
-This setting exists to allow for testing of master/slave
+This setting exists to allow for testing of leader/follower
configurations of multiple databases. See the documentation on
-:ref:`testing master/slave configurations
-<topics-testing-masterslave>` for details.
+:ref:`testing leader/follower configurations
+<topics-testing-leaderfollower>` for details.
.. setting:: TEST_NAME
View
18 docs/topics/cache.txt
@@ -222,29 +222,29 @@ won't appear in the models cache, but the model details can be used
for routing purposes.
For example, the following router would direct all cache read
-operations to ``cache_slave``, and all write operations to
-``cache_master``. The cache table will only be synchronized onto
-``cache_master``::
+operations to ``cache_follower``, and all write operations to
+``cache_leader``. The cache table will only be synchronized onto
+``cache_leader``::
class CacheRouter(object):
"""A router to control all database cache operations"""
def db_for_read(self, model, **hints):
- "All cache read operations go to the slave"
+ "All cache read operations go to the follower"
if model._meta.app_label in ('django_cache',):
- return 'cache_slave'
+ return 'cache_follower'
return None
def db_for_write(self, model, **hints):
- "All cache write operations go to master"
+ "All cache write operations go to leader"
if model._meta.app_label in ('django_cache',):
- return 'cache_master'
+ return 'cache_leader'
return None
def allow_migrate(self, db, model):
- "Only install the cache model on master"
+ "Only install the cache model on leader"
if model._meta.app_label in ('django_cache',):
- return db == 'cache_master'
+ return db == 'cache_leader'
return None
If you don't specify routing directions for the database cache model,
View
60 docs/topics/db/multi-db.txt
@@ -197,17 +197,17 @@ Using routers
Database routers are installed using the :setting:`DATABASE_ROUTERS`
setting. This setting defines a list of class names, each specifying a
-router that should be used by the master router
+router that should be used by the leader router
(``django.db.router``).
-The master router is used by Django's database operations to allocate
+The leader router is used by Django's database operations to allocate
database usage. Whenever a query needs to know which database to use,
-it calls the master router, providing a model and a hint (if
+it calls the leader router, providing a model and a hint (if
available). Django then tries each router in turn until a database
suggestion can be found. If no suggestion can be found, it tries the
current ``_state.db`` of the hint instance. If a hint instance wasn't
provided, or the instance doesn't currently have database state, the
-master router will allocate the ``default`` database.
+leader router will allocate the ``default`` database.
An example
----------
@@ -225,16 +225,16 @@ An example
introduce referential integrity problems that Django can't
currently handle.
- The master/slave configuration described is also flawed -- it
+ The leader/follower configuration described is also flawed -- it
doesn't provide any solution for handling replication lag (i.e.,
query inconsistencies introduced because of the time taken for a
- write to propagate to the slaves). It also doesn't consider the
+ write to propagate to the followers). It also doesn't consider the
interaction of transactions with the database utilization strategy.
So - what does this mean in practice? Let's consider another sample
configuration. This one will have several databases: one for the
-``auth`` application, and all other apps using a master/slave setup
-with two read slaves. Here are the settings specifying these
+``auth`` application, and all other apps using a leader/follower setup
+with two read followers. Here are the settings specifying these
databases::
DATABASES = {
@@ -244,20 +244,20 @@ databases::
'USER': 'mysql_user',
'PASSWORD': 'swordfish',
},
- 'master': {
- 'NAME': 'master',
+ 'leader': {
+ 'NAME': 'leader',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'spam',
},
- 'slave1': {
- 'NAME': 'slave1',
+ 'follower1': {
+ 'NAME': 'follower1',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'eggs',
},
- 'slave2': {
- 'NAME': 'slave2',
+ 'follower2': {
+ 'NAME': 'follower2',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'bacon',
@@ -309,30 +309,30 @@ send queries for the ``auth`` app to ``auth_db``::
return None
And we also want a router that sends all other apps to the
-master/slave configuration, and randomly chooses a slave to read
+leader/follower configuration, and randomly chooses a follower to read
from::
import random
- class MasterSlaveRouter(object):
+ class LeaderFollowerRouter(object):
def db_for_read(self, model, **hints):
"""
- Reads go to a randomly-chosen slave.
+ Reads go to a randomly-chosen follower.
"""
- return random.choice(['slave1', 'slave2'])
+ return random.choice(['follower1', 'follower2'])
def db_for_write(self, model, **hints):
"""
- Writes always go to master.
+ Writes always go to leader.
"""
- return 'master'
+ return 'leader'
def allow_relation(self, obj1, obj2, **hints):
"""
Relations between objects are allowed if both objects are
- in the master/slave pool.
+ in the leader/follower pool.
"""
- db_list = ('master', 'slave1', 'slave2')
+ db_list = ('leader', 'follower1', 'follower2')
if obj1._state.db in db_list and obj2._state.db in db_list:
return True
return None
@@ -347,17 +347,17 @@ Finally, in the settings file, we add the following (substituting
``path.to.`` with the actual python path to the module(s) where the
routers are defined)::
- DATABASE_ROUTERS = ['path.to.AuthRouter', 'path.to.MasterSlaveRouter']
+ DATABASE_ROUTERS = ['path.to.AuthRouter', 'path.to.LeaderFollowerRouter']
The order in which routers are processed is significant. Routers will
be queried in the order the are listed in the
:setting:`DATABASE_ROUTERS` setting . In this example, the
-``AuthRouter`` is processed before the ``MasterSlaveRouter``, and as a
+``AuthRouter`` is processed before the ``LeaderFollowerRouter``, and as a
result, decisions concerning the models in ``auth`` are processed
before any other decision is made. If the :setting:`DATABASE_ROUTERS`
setting listed the two routers in the other order,
-``MasterSlaveRouter.allow_migrate()`` would be processed first. The
-catch-all nature of the MasterSlaveRouter implementation would mean
+``LeaderFollowerRouter.allow_migrate()`` would be processed first. The
+catch-all nature of the LeaderFollowerRouter implementation would mean
that all models would be available on all databases.
With this setup installed, lets run some Django code::
@@ -369,7 +369,7 @@ With this setup installed, lets run some Django code::
>>> # This save will also be directed to 'auth_db'
>>> fred.save()
- >>> # These retrieval will be randomly allocated to a slave database
+ >>> # These retrieval will be randomly allocated to a follower database
>>> dna = Person.objects.get(name='Douglas Adams')
>>> # A new object has no database allocation when created
@@ -379,10 +379,10 @@ With this setup installed, lets run some Django code::
>>> # the same database as the author object
>>> mh.author = dna
- >>> # This save will force the 'mh' instance onto the master database...
+ >>> # This save will force the 'mh' instance onto the leader database...
>>> mh.save()
- >>> # ... but if we re-retrieve the object, it will come back on a slave
+ >>> # ... but if we re-retrieve the object, it will come back on a follower
>>> mh = Book.objects.get(title='Mostly Harmless')
@@ -690,7 +690,7 @@ In addition, some objects are automatically created just after
database).
For common setups with multiple databases, it isn't useful to have these
-objects in more than one database. Common setups include master / slave and
+objects in more than one database. Common setups include leader / follower and
connecting to external databases. Therefore, it's recommended:
- either to run :djadmin:`migrate` only for the default database;
View
36 docs/topics/testing/advanced.txt
@@ -64,16 +64,16 @@ The following is a simple unit test using the request factory::
Tests and multiple databases
============================
-.. _topics-testing-masterslave:
+.. _topics-testing-leaderfollower:
-Testing master/slave configurations
+Testing leader/follower configurations
-----------------------------------
-If you're testing a multiple database configuration with master/slave
+If you're testing a multiple database configuration with leader/follower
replication, this strategy of creating test databases poses a problem.
When the test databases are created, there won't be any replication,
-and as a result, data created on the master won't be seen on the
-slave.
+and as a result, data created on the leader won't be seen on the
+follower.
To compensate for this, Django allows you to define that a database is
a *test mirror*. Consider the following (simplified) example database
@@ -83,34 +83,34 @@ configuration::
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myproject',
- 'HOST': 'dbmaster',
+ 'HOST': 'dbleader',
# ... plus some other settings
},
- 'slave': {
+ 'follower': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myproject',
- 'HOST': 'dbslave',
+ 'HOST': 'dbfollower',
'TEST_MIRROR': 'default'
# ... plus some other settings
}
}
-In this setup, we have two database servers: ``dbmaster``, described
-by the database alias ``default``, and ``dbslave`` described by the
-alias ``slave``. As you might expect, ``dbslave`` has been configured
-by the database administrator as a read slave of ``dbmaster``, so in
-normal activity, any write to ``default`` will appear on ``slave``.
+In this setup, we have two database servers: ``dbleader``, described
+by the database alias ``default``, and ``dbfollower`` described by the
+alias ``follower``. As you might expect, ``dbfollower`` has been configured
+by the database administrator as a read follower of ``dbleader``, so in
+normal activity, any write to ``default`` will appear on ``follower``.
If Django created two independent test databases, this would break any
-tests that expected replication to occur. However, the ``slave``
+tests that expected replication to occur. However, the ``follower``
database has been configured as a test mirror (using the
:setting:`TEST_MIRROR` setting), indicating that under testing,
-``slave`` should be treated as a mirror of ``default``.
+``follower`` should be treated as a mirror of ``default``.
-When the test environment is configured, a test version of ``slave``
-will *not* be created. Instead the connection to ``slave``
+When the test environment is configured, a test version of ``follower``
+will *not* be created. Instead the connection to ``follower``
will be redirected to point at ``default``. As a result, writes to
-``default`` will appear on ``slave`` -- but because they are actually
+``default`` will appear on ``follower`` -- but because they are actually
the same database, not because there is data replication between the
two databases.
View
2  tests/migrations/test_operations.py
@@ -765,7 +765,7 @@ class MultiDBOperationTests(MigrationTestBase):
multi_db = True
def setUp(self):
- # Make the 'other' database appear to be a slave of the 'default'
+ # Make the 'other' database appear to be a follower of the 'default'
self.old_routers = router.routers
router.routers = [MigrateNothingRouter()]
View
2  tests/multiple_database/routers.py
@@ -4,7 +4,7 @@
class TestRouter(object):
- # A test router. The behavior is vaguely master/slave, but the
+ # A test router. The behavior is vaguely leader/follower, but the
# databases aren't assumed to propagate changes.
def db_for_read(self, model, instance=None, **hints):
if instance:
View
38 tests/multiple_database/tests.py
@@ -854,7 +854,7 @@ def test_select_related(self):
self.assertEqual(book.editor._state.db, 'other')
def test_subquery(self):
- """Make sure as_sql works with subqueries and master/slave."""
+ """Make sure as_sql works with subqueries and leader/follower."""
sub = Person.objects.using('other').filter(name='fff')
qs = Book.objects.filter(editor__in=sub)
@@ -919,7 +919,7 @@ class RouterTestCase(TestCase):
multi_db = True
def setUp(self):
- # Make the 'other' database appear to be a slave of the 'default'
+ # Make the 'other' database appear to be a follower of the 'default'
self.old_routers = router.routers
router.routers = [TestRouter()]
@@ -1071,7 +1071,7 @@ def test_foreign_key_cross_database_protection(self):
try:
dive.editor = marty
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Database assignments of original objects haven't changed...
self.assertEqual(marty._state.db, 'default')
@@ -1089,7 +1089,7 @@ def test_foreign_key_cross_database_protection(self):
except Book.DoesNotExist:
self.fail('Source database should have a copy of saved object')
- # This isn't a real master-slave database, so restore the original from other
+ # This isn't a real leader-follower database, so restore the original from other
dive = Book.objects.using('other').get(title='Dive into Python')
self.assertEqual(dive._state.db, 'other')
@@ -1097,7 +1097,7 @@ def test_foreign_key_cross_database_protection(self):
try:
marty.edited = [pro, dive]
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Assignment implies a save, so database assignments of original objects have changed...
self.assertEqual(marty._state.db, 'default')
@@ -1111,7 +1111,7 @@ def test_foreign_key_cross_database_protection(self):
except Book.DoesNotExist:
self.fail('Source database should have a copy of saved object')
- # This isn't a real master-slave database, so restore the original from other
+ # This isn't a real leader-follower database, so restore the original from other
dive = Book.objects.using('other').get(title='Dive into Python')
self.assertEqual(dive._state.db, 'other')
@@ -1119,7 +1119,7 @@ def test_foreign_key_cross_database_protection(self):
try:
marty.edited.add(dive)
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Add implies a save, so database assignments of original objects have changed...
self.assertEqual(marty._state.db, 'default')
@@ -1133,7 +1133,7 @@ def test_foreign_key_cross_database_protection(self):
except Book.DoesNotExist:
self.fail('Source database should have a copy of saved object')
- # This isn't a real master-slave database, so restore the original from other
+ # This isn't a real leader-follower database, so restore the original from other
dive = Book.objects.using('other').get(title='Dive into Python')
# If you assign a FK object when the base object hasn't
@@ -1196,7 +1196,7 @@ def test_m2m_cross_database_protection(self):
mark = Person.objects.using('default').create(pk=2, name="Mark Pilgrim")
# Now save back onto the usual database.
- # This simulates master/slave - the objects exist on both database,
+ # This simulates leader/follower - the objects exist on both database,
# but the _state.db is as it is for all other tests.
pro.save(using='default')
marty.save(using='default')
@@ -1213,7 +1213,7 @@ def test_m2m_cross_database_protection(self):
try:
marty.book_set = [pro, dive]
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Database assignments don't change
self.assertEqual(marty._state.db, 'default')
@@ -1232,7 +1232,7 @@ def test_m2m_cross_database_protection(self):
try:
marty.book_set.add(dive)
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Database assignments don't change
self.assertEqual(marty._state.db, 'default')
@@ -1251,7 +1251,7 @@ def test_m2m_cross_database_protection(self):
try:
dive.authors = [mark, marty]
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Database assignments don't change
self.assertEqual(marty._state.db, 'default')
@@ -1273,7 +1273,7 @@ def test_m2m_cross_database_protection(self):
try:
dive.authors.add(marty)
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Database assignments don't change
self.assertEqual(marty._state.db, 'default')
@@ -1311,7 +1311,7 @@ def test_o2o_cross_database_protection(self):
try:
bob.userprofile = alice_profile
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Database assignments of original objects haven't changed...
self.assertEqual(alice._state.db, 'default')
@@ -1342,7 +1342,7 @@ def test_generic_key_cross_database_protection(self):
try:
review1.content_object = dive
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Database assignments of original objects haven't changed...
self.assertEqual(pro._state.db, 'default')
@@ -1361,7 +1361,7 @@ def test_generic_key_cross_database_protection(self):
except Book.DoesNotExist:
self.fail('Source database should have a copy of saved object')
- # This isn't a real master-slave database, so restore the original from other
+ # This isn't a real leader-follower database, so restore the original from other
dive = Book.objects.using('other').get(title='Dive into Python')
self.assertEqual(dive._state.db, 'other')
@@ -1369,7 +1369,7 @@ def test_generic_key_cross_database_protection(self):
try:
dive.reviews.add(review1)
except ValueError:
- self.fail("Assignment across master/slave databases with a common source should be ok")
+ self.fail("Assignment across leader/follower databases with a common source should be ok")
# Database assignments of original objects haven't changed...
self.assertEqual(pro._state.db, 'default')
@@ -1444,7 +1444,7 @@ def test_generic_key_managers(self):
self.assertEqual(pro.reviews.db_manager('default').all().db, 'default')
def test_subquery(self):
- """Make sure as_sql works with subqueries and master/slave."""
+ """Make sure as_sql works with subqueries and leader/follower."""
# Create a book and author on the other database
mark = Person.objects.using('other').create(name="Mark Pilgrim")
@@ -1482,7 +1482,7 @@ class AuthTestCase(TestCase):
multi_db = True
def setUp(self):
- # Make the 'other' database appear to be a slave of the 'default'
+ # Make the 'other' database appear to be a follower of the 'default'
self.old_routers = router.routers
router.routers = [AuthRouter()]
Something went wrong with that request. Please try again.