Hacker News new | past | comments | ask | show | jobs | submit login
Replaced occurrences of master/slave terminology with leader/follower (github.com)
102 points by oellegaard on May 26, 2014 | hide | past | web | favorite | 61 comments

I nearly spat my coffee out when I read that it was to be replaced by "leader/follower". That would be a bad idea, IMO, and what most people here and on the Github thread are commenting on.

But actually, the terminology being used is primary/replica, which is if anything more descriptive.

Is it, really? Please elaborate why it would be more descriptive.

I think this is a nonsense change and just the fact that they did this change without hesitation makes me question if Django is a good choice for future projects.

You can't make changes to established naming without consequences, what about classes? Don't they offend people who does not come from money? Django is full of them, dividing stuff into different classes. That is just disgusting. They must stop to use classes now!

I would have no objection if they changed to primary/replica for a good reason, but this is a shit reason.

Reminds me of poe's law... http://en.wikipedia.org/wiki/Poe's_law It could be a parody or not, but until the writer states so, you cant be sure.

From my point of view, its a pretty bad idea. Master / Slave is used in nearly every system ranging from basic integrated circuits using a bus (SPI, I2C, ...) up to multi cluster database systems. It has a clearly defined function and and everyone in tech knows what it means. It doesnt matter if youre from USA, England, Germany oder Iran. A master/slave system has a clearly defined behavior.

Trying to bring feelings into the clean technical world it one of the most stupid things i can think of. In this case, it only affects the documentation of a project, but in other cases, trying to be politically correct has destroyed lifes of people. http://www.wired.com/2013/03/richards-affair-and-misogyny-in...

.... this is simply lame, the master/slave term describes perfectly fine the relationship between the parts, and leader/follower is a bit more vague, since a follower is during it voluntarily, while the slave adheres to the masters rules... At least how I see it.

I'd say this is just plain being oversensitive...

Leader/follower isn't what they went with; as noted elsewhere, they used primary/replica instead.

Master/slave also doesn't accurately describe it beyond a very superficial level, and its historical usage doesn't make it any more apt. In distributed systems, the primary does not sit back while forcibly delegating all its productivity.

I think this is an awesome patch. Hopefully more people will follow suit. The first time someone was trying to describe a configuration using 'master' and 'slave' to me, the terminology was really distracting, and I could barely pay attention without remembering all of the lessons about U.S. history from 8th grade. I hope this change in terminology will help make software development more welcoming and accessible to more people.

That's not any better at least if you are like me from Germany and unconsciously translate it.


Next: let's ban calling electrical power connectors "male" and "female", because think of the children.

A big difference is that there is consensus that slavery is altogether a bad idea (at least among the people using the term master/slave in the current context), while there is no such consensus concerning sex.

At first I thought this commit was a joke, then I felt a slight annoyance at this political correctness, only to finally realize that it's not really such a bad idea, since we all agree slavery is bad, and it can be quite awkward to use the terminology around people that don't hear it often.

If we don't want our jargon to sound awkward to laymen, we've got to replace a lot more words than master and slave.

Industry terms are valuable, though, aren't they? They allow expressing complex concepts unambiguously, and can be expected to be used consistently across given field. Personally I think that trying to control jargon and have it conform ever-changing politics and common language is detrimental to the industry and hinders knowledge transfer.

I suspect (or hope) it's just trolling on the part of Alex.

(Disclaimer: English is not my native language, I wonder if saw this differently if it were.)

My point wasn't that it's awkward primarily. I agree with you that the whole point of jargon is for 'insiders' to be able to communicate quickly and unambiguously.

The point is that it could be sensitive and just isn't a nice term to use day to day. I've had moments myself where using the master and slave terms felt a bit... odd. It very well might be that I was the only one feeling a bit awkward, but that itself is a reason to consider using less loaded terms.

Second, though I agree that industry terms are valuable, I can't think of that many terms that have connotations similar to slavery (but by all means jog my memory!). And even if there are, I don't see why we can't incrementally change our terminology and phase out anachronistic (and/or loaded) ones.

Finally though, I don't find this a big issue. I see it as relatively easy to slowly change this term, and I like that, but I don't feel like I should actively argue for changing the terms 'master' and 'slave'. But I do enjoy discussing it :).

You're right—I can't think of any more terms that have connotations of comparable negativity (though quite a few plainly odd-sounding ones). I will blame my indifference to this question on my English non-nativity. :)

The only remaining argument against the change is searchability—hopefully Google knows or will learn soon that these are interchangeable terms.

That's a good point. Google has been doing a decent job at that so far, though, and I suspect if such a change in terminology were ever to become mainstream, it will be a gradual process, and generally specific to 'newer' systems.

It wouldn't be terribly difficult to refer to them as plug and socket.

Except plugs and sockets don't always translate directly into male/female - ie: D-Sub connectors, XLR connectors, cinch connectors, ...

Good call. "Leader" and "follower" may not be the most precise, descriptive terms here, but then neither were "master"/"slave" and people got used to that.

Edit: "Primary"/"replica" seems like an unambiguous improvement.

If you're going to replace a term, it might be a good idea to pick a new one which is precise and descriptive, given the opportunity to do so.

"Senior" and "junior" might work, or "primary" and "secondary". It might be important to capture not just the fact that authority resides with one server and not the other, but that the secondary server is effectively forced to obey via configuration, to distinguish from clusters whereby leaders may be elected, and so on.

Using any anthropomorphic terms at all may end up being misleading - Dijkstra was pretty down on anthropomorphism[1] because he believed that it was a cause of confusion and error. However, if we're going to use anthropomorphic terms then I think it's unwise to choose them based on whether or not those terms, in entirely different circumstances, may have been related to unfairness and harm. The whole point about why slavery is bad is that it involves treating a person like a machine, but this clearly implies that treating machines in such a way is obviously not wrong. Words generally aren't fnords[2] that cause us to become irrationally upset at merely seeing the word itself in print.

[1] http://lambda-the-ultimate.org/node/264 [2] http://www.urbandictionary.com/define.php?term=fnord

"Master/slave is a model of communication where one device or process has unidirectional control over one or more other devices. In some systems a master is elected from a group of eligible devices, with the other devices acting in the role of slaves."[0]

I'd say that master/slave describes perfectly well the relationship between the parts.

[0] http://en.wikipedia.org/wiki/Master/slave_(technology)

They've since changed to a combination of primary/replica and master/slave:


it looks like primary/replica and master but not slave. Master is used in the documentation and was probably incorrectly or hastily replaced with leader.

Is there a way to remove comments on your projects pull requests?

I'm sure there are places to discuss the politics of this change that are better than posting meme images to a source code repository.

Not really. There's some debate on how GitHub could best accomplish this, but so far they've been non-committal about a solution:


I was thinking parent/child would be a better fit, but upon further thinking about it, leader/follower is pretty good. It is also a bit more distributed friendly, in that you can follow a new leader or switch. Where parent/child, master/slave are more locked. It is a bit silly though to change, in that human history has had slavery throughout history and to this day. Better to know about the problems than to overlook them. Also, throughout history, slavery wasn't always on racial lines, it was usually class based or wealth/monarchy based.

It also wouldnt be a good fit.

- Master / Slave systems are typically locked in. One slave if a database system can only be a copy of one master and cant just switch freely between masters.

- Leader / Follower is coupled to loosely in my opinion. When i hear leader / follower i'm more thinking of a system where the followers follow the state of the leader (e.g. if the database goes down, the web frontend is shutting down / displaying an static error / ...)

[sarcasm] - Parent/child could be offensive to people who cannot have kids or whose kids have died! Have you thought about THEIR feelings aswell? [/sarcasm]

I always thought the use of master/slave terminology on ide hard drives was amusing because of the s&m connotations, but then I was a bit of a weird kid. I guess that is one of the few instances where thinking about s&m is the more innocent option. Leader/follower is not a bad change, it is perfectly understandable for people used to the existing terminology and has less distracting connotations.

I was actually thinking about the s&m angle just before I read your comment. I wonder if there's a similar debate raging on in the s&m community?

Once again reinforcing the stereotype that Americans are culturally ignorant.

At least they settled on primary/replica, which actually kind of makes sense.

Can someone explain for us non-native-English speakers why it is "racially charged"?

It reminds people of African slavery. Silly argument IMO.

Choosing not to use the term doesn't mean it reminds people of slavery, it simply means that they choose not to perpetuate a term with negative connotations when an alternative term without them suffices.

You can find negative connotations for a lot of common-use terms.

Have you ever taught African-American kids about database replication? I'm guessing "no", because the master/slave terminology actively interferes with the learning environment — more so than adopting this less common terminology would.

Specifically, American people.

To elaborate, slavery has existed in many times and places and still exists in some places today. Many people have to live with the fear of slavery even now.

No, he means "it's offensive specifically for American people"

I guess daemons are up next.

> merged 1 commit into django:master

The branch is called 'master'.

But it lacks a Slave, so it does not contains the same connotation.

the terms m/s are not even well-describing or giving useful information... its good that projects think of alernatives

In that aspect, I don't think leader/follower conveys any more information than the former terms either. It seems like this just opens up a whole lot of StackOverflow question on "Is there any difference between master/slave architecture and leader/follower one".

Hence why they used primary/replica instead.

Primary/Secondary aka Master/Slave already happened with DNS... e.g. http://www.zytrax.com/books/dns/ch4/ and since you can have Master-Master relationships in databases as well as "equal" relationships where two masters can each be slaves to the other for redundancy... it's messed up however you look at it.

Personally I prefer Primary & Secondary but I'll use the language the manual uses for whatever product I'm configuring, since it makes life easier.

Slavery is bad when it is applied to humans, you can't really oppress a Mysql instance.

...though sometimes one wishes one could.

Although you can sing birthday songs to its' bugs [1].

[1] - https://www.youtube.com/watch?v=oAiVsbXVP6k

While we're at it, we should rename "web servers" to "web attendants".

How about "underling/overlord" or "dictator/subjugant" or "enforcer/oppressed"? What about "worker/parasite"?

Mayhap "strongman/peasant" or "oligarch/human rights violation"?

I know, let's all use "duckspeaker/thoughtcriminal"!

  > dictator/subjugant
Actually, I think "exigent/subjugant" would make a better pairing.

- Offensive to underlings

-Offensive to people that lived in dictatorships

-Offensive to oppressed people

-Offensive to insects, or Social Security beneficiaries, you are politically correct AND recognize that words can have multiple meanings

-Offensive to farmworkers

-Offensive to people whose human rights were violated (eg US Citizens, Iraqis, etc)

-Offensive to former USSR residents, if you go beyond multiple word meanings into allegory

I disagree with "duckspeaker/thoughtcriminal". IMO in newspeak we should use more doublespeak and use "duckspeaker/duckspeaker" to make it more clear.

Political correctness strikes again - and yes, it's not the first incident of this exact sort. [1]

[1]: http://www.snopes.com/inboxer/outrage/master.asp

In that page, it doesn't describe it as political correctness run amok. Those cases are reserved for the correct usage of a word that merely resembles some inappropriate term.

Master/Slave as a relationship originated before computers and refers to possessing another person as property, so it's negative connotations are inherent in the phrase and rejecting them is a linguistic choice.

Contrast that to using the phrase retarded in Physics, which originally was just a term used to describe a time delay, and was ultimately applied to people who had delayed development, and is now considered inappropriate, though it is still used in physics from time to time.

> Master/Slave as a relationship originated before computers and refers to possessing another person as property

Yes, and slavery is any form is heinous. But if we're talking about terminology... master and slave terms in computing have become to describe a certain kind of logical topography. For me, a term being somehow inappropriate is not alone enough to warrant finding euphemisms.

There are terms like that all over the place. Your example, "retard" is used at least in cooking to describe a component inhibiting a desired process. I wouldn't be surprised if someone found bridge building to be inappropriate ("erection sequence"), and people in corporate security business are doing pen-testing all the time.

There is something in the need for euphemisms that rubs me the wrong way. It depletes a language and nibbles its users of variety.

Come to think of it - one of Agatha Christie's novels was renamed twice due to insensitivities. The current name is, I believe, "And then there were none".

Trigger warning.

I loved the non-intuitive names.

This is absurd. I have a hard time beliving that the maintainers of Django took this seriously.

I hadn't gotten into Django yet, but it looks like I won't bother.


I for one would prefer dom/sub, if we're going to go about rewriting perfectly good terminology that has been around for near a hundred years, but I don't think people are quite that open-minded yet (even though it helps remove the troubling idea of property rights on sentient beings).

Naming is hard!

Master/slave implies that there may be many slaves for one master, that the master tells the slave exactly what to do, and that slaves will not switch between masters on a whim.

Leader/follower implies that there is no major difference between the two classes and that perhaps the "leader" is just a promoted follower ("leader election", etc.), that the leader is the first to hit a request or command, and that the followers may spontaneously decide to follow a different leader.

Primary/secondary implies that the roles are equivalent, that requests are handled by the primaries, that there may be more than one instance of each role, and that secondaries are only used if a primary cannot deal with its task.

Note that each use case is equally valid: m/s could be a read/write architecture for a database or electrical communications bus, l/f for a distributed simulation system spanning many nodes or a swarm of agents, and p/s for a redundant storage system.

But, changing nomenclature seemingly for the hell of it is not usually a good idea.

EDIT: "primary/replica" fits nicely as well.

Reminds me of this [1]. Funny since the historical meaning of plantation (as intended by Rodger Williams) has nothing to do w/ slavery.

[1] http://www.huffingtonpost.com/2010/11/03/rhode-island-keeps-...

So all/most of the thumbs up/thanks/short positive replies are sarcastic?

I really can't tell. I assume so?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact