upvote
What was the goal then? Of those who demanded the change.
reply
There is a logical goal, but first one thing to address:

There was a lot of dog-piling by culture-war peddlers. They try to ragebait people so they can pull you into their spheres of influence to sell you their supplements, placebos and political ads.

They rely only on appeals to emotion (specifically knee-jerk reactions to any change).

So they can be ignored.

-----------------------------------

But now to the actual logical goal.

The goal is to prevent mistraining.

"Master" didn't really make sense. It was supposed to mean one thing that controls another thing (the slave), but nothing ever works out that way in reality.

For example:

- Written records/logs: A master record would sometimes be overridden by a slave record. Also, adding a third record for fault-tolerance to tie-break inconsistencies breaks the master/slave metaphor.

- Storage media: "Master" records didn't make sense since you'd also have a "gold master", again breaking the metaphor.

- Storage media devices: The master/slave pins in ATA/PATA devices (and similar) didn't actually do what they said on the tin.

- Distributed Version Control Systems (e.g. git): It's distributed by design, there is no master. It didn't make sense in the git flow context, the trunk-based development context, the forked project context, the merged project context, the upstream/downstream context, etc...

- ... and practically everywhere else you would run into a master/slave metaphor.

Every system worked differently, and treated the metaphor differently too.

-----------------------------------

The whole problem with a bad metaphor/analogy is that things don't work how the metaphor suggests they work. People are not sure where responsibility lies. Multiple people work under the same information and end up with incompatible understandings of how things actually work.

If you're not familiar with ATA, you're going to come across the terms Secondary Master, and Primary Slave.

Then you're going to run into questions like: How can there be more than one master? Does a primary master control a secondary master? What happens when they disagree? Does a primary slave control a secondary slave, or a secondary master? etc...

Or worse, you're not going to ask the question and work under an assumption without realising it.

Removing the possibility of that happening as much as possible makes everything better.

It's always better to replace a confusing term with a less confusing term.

That's why people stopped recommending "master" in git workflows.

-----------------------------------

TL;DR: "main" reduces confusion in the git-flow context, "trunk" reduces confusion in the trunk-based development context.

reply
> "Master" didn't really make sense. It was supposed to mean one thing that controls another thing (the slave), but nothing ever works out that way in reality.

I always thought it took, pretty directly, the 1st meaning in https://en.wiktionary.org/wiki/master_copy, which does fit the ultimate definition as it's the copy all of the edits follow from until they are merged at which point they become the new master edit and the following edits become based off of it. Same of branches, just on a large scale of edits.

reply
The problem with master in that context is that a master can get confused with a golden master.
reply
That's why one is called the golden master and the other is a master, not much to confuse. The "golden" is what signifies the unique meaning, i.e. the final, that both are masters is an accurate takeaway.

Main (or most any other common primary branch name) can have equally trivial confusions that are not actual problems. The endless debates about branch names didn't come about because people were so confused we needed something else to stop the madness, they came about because people were convinced they could find a problem to need to fix. Any of these branch names work equally fine, it really doesn't matter and there is no deeper logic needed to justify why we switched.

reply
Changing master to main just adds confusion because I now have 3 git repos I use weekly and they all have different names for the primary branch that I have to remember. Master is just a symbol for something like all language, you'd have to be an obsessive to think that hard about minor language choices to the point of forcing a change on tens of millions of people after-the-fact.
reply
> Changing master to main just adds confusion because I now have 3 git repos I use weekly and they all have different names for the primary branch that I have to remember.

Yes, switching standards is confusing and taxing.

Although, using bad standards is also confusing and taxing.

Usually those taxes are internalised somewhere and forgotten, becoming a hidden tax. They become apparent once pointed out, like when trying to fix a standard or switching to a new standard, but they exist nonetheless.

------------------------------

> you'd have to be an obsessive to think that hard about minor language choices to the point of forcing a change on tens of millions of people after-the-fact.

No, it's not mis-managers throwing their weight around, it's not culture war, it's not etymological one-up-man-ship, it's not politics, it's just systems theory.

Every time someone gets stung by a hidden tax in a system, and the cause of the sting can't/won't be addressed, it builds up pressure.

If the pressure can't be relieved, it continues building to the point that the system starts to strain. Eventually the system reaches the point where the strain has to be released and there's a sudden change.

Systems theory.

reply
> "Master" didn't really make sense. It was supposed to mean one thing that controls another thing (the slave), but nothing ever works out that way in reality.

I really hate how people pretend to be stupid and not know that master means a lot of different things: "animal owner", "an expert", "a tradesman", "postgraduate degree", "original", and many others (including dated definitions). Wiktionary lists 21 definitions, only one of which is slave owner.

reply
And one of those I use to call certain men in my life, and so find it unprofessional to use with software.
reply
> Wiktionary lists 21 definitions, only one of which is slave owner.

It lists two which references "slave".

Definition 2 references slave owning, but that's irrelevant to the actual discussion here.

This thread is talking about definition 17:

> (engineering, computing) A device that is controlling other devices or is an authoritative source. > > Synonyms: coordinator, primary > Antonyms: secondary, slave, worker

---------------------------

> I really hate how people pretend to be stupid and not know that master means a lot of different things

"Master" meaning different things is exactly the problem.

Even if we limit ourselves specifically to definition 17, it still means too many things. It's overloaded to the point that it doesn't accurately describe the systems where it's used.

reply
[dead]
reply
"The Internet Engineering Task Force (IETF) points out that "Master-slave is an oppressive metaphor that will and should never become fully detached from history" as well as "In addition to being inappropriate and arcane, the master-slave metaphor is both technically and historically inaccurate." There's lots of more accurate options depending on context and it costs me nothing to change my vocabulary, especially if it is one less little speed bump to getting a new person excited about tech."

- https://www.hanselman.com/blog/easily-rename-your-git-defaul...

reply
> Master-slave is an oppressive metaphor

Git has nothing to do with that (not that master-slave is wrong).

> master-slave metaphor is both technically and historically inaccurate

How can a metaphor be historically inaccurate? The whole point of a metaphor is that it's evocative, not real. A slave DB following what the master DB is doing is a good metaphor. Where is the historical inaccuracy there?

> it costs me nothing to change my vocabulary

Changing hard coded values costs a lot. I still have scripts which reference both `master` and `main`.

> especially if it is one less little speed bump to getting a new person excited about tech

And we've gotten to the main issue. This whole thing is about making white-knighting white Americans feel better about themselves. There was no outcry from black people saying they can't program until Git changes its terminology.

Not to mention that slavery has nothing to do with racism. This is just an American-centric view. Historically people enslaved their own kind. Getting slaves from other continents is a relative recent thing in the grand scheme of things.

reply
>it costs me nothing to change my vocabulary

It cost reddit a 3 hour outage.

>The nodeSelector and peerSelector for the route reflectors target the label `node-role.kubernetes.io/master`. In the 1.20 series, Kubernetes changed its terminology from “master” to “control-plane.” And in 1.24, they removed references to “master,” even from running clusters. This is the cause of our outage.

https://old.reddit.com/r/RedditEng/comments/11xx5o0/you_brok...

reply
Master/slave is almost always misused anyway. Yes one database will do all the work(we will call that one master) and the other will sit around all day waiting to take over(we call that one the slave). me nodding. yep that is about how it worked. postgres is a little closer where the master process hangs around not doing much, only really there to receive new connections which it then gives to workers to process. And don't even get me started on how IDE drives misused the term, I don't mind the master/slave terminology but if used it should at least capture some of the dynamic of that relationship.

I never did understand what they felt was wrong about git master, there was no slave or even work involved. it was more like the master print of a video. you know the thing that "remasters" are made from.

reply