But actually, the terminology being used is primary/replica, which is if anything 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.
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.
I'd say this is just plain being oversensitive...
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.
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.
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.)
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 :).
The only remaining argument against the change is searchability—hopefully Google knows or will learn soon that these are interchangeable terms.
Edit: "Primary"/"replica" seems like an unambiguous improvement.
"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 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 that cause us to become irrationally upset at merely seeing the word itself in print.
I'd say that master/slave describes perfectly well the relationship between the parts.
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.
- 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 / ...)
- Parent/child could be offensive to people who cannot have kids or whose kids have died! Have you thought about THEIR feelings aswell?
At least they settled on primary/replica, which actually kind of makes sense.
The branch is called 'master'.
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.
 - https://www.youtube.com/watch?v=oAiVsbXVP6k
Mayhap "strongman/peasant" or "oligarch/human rights violation"?
I know, let's all use "duckspeaker/thoughtcriminal"!
-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
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.
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".
I hadn't gotten into Django yet, but it looks like I won't bother.
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.
I really can't tell. I assume so?