Hacker News new | ask | show | jobs
by jameslevy 2197 days ago
"Slave" is not a term used by Git or Github, and its use of "master" is not related to the vocabulary of "master/slave". Not the first to say this, but the media seems to be getting this all wrong.
5 comments

> I picked the names "master" (and "origin") in the early Git tooling back in 2005.

> (this probably means you shouldn't give much weight to my name preferences :) )

> I have wished many times I would have named them "main" (and "upstream") instead.

> Glad it's happenning @natfriedman

https://twitter.com/xpasky/status/1271477451756056577?s=21

You left out the most relevant part:

> Out of curiosity, why 'master'? What was it meant to convey? 'Master' as in 'original' or as in 'owner'? [0]

the reply:

> "master" as in e.g. "master recording". Perhaps you could say the original, but viewed from the production process perspective. [1]

[0] https://twitter.com/yawaramin/status/1272237126474752005

[1] https://twitter.com/xpasky/status/1272280760280637441

For what it's worth, I have to reactions to that, both positive:

1) I came from an SVN background and only switched to Git because I started working at companies that used it. I still prefer SVN's aesthetics (and I wish I had more opportunities to use Mercurial), so I would much rather have 'main' or 'trunk' than 'master'.

2) At my company, my team uses the forking workflow (i.e. we do all our work in our own forks and then submit PRs to merge into the repo on the central server). Whenever I clone and fork a repo, I always nuke the 'origin' remote and create two new ones: my own fork, which I name after my AD username at my company, and the repo on the central server, which I name 'upstream'. That way, whenever I pull or push, I don't have to worry about mindlessly pushing or pulling 'origin' and accidentally touching the wrong repo: if I accidentally do so, I'll just get an error. So I am very, very much used to pulling from 'upstream'.

How does GitHub use "master"?

In particular, how is it different from what is called "mainline" in other VCS systems?

git uses "master" to mean the canonical, pristine version as in the usage of the term in art and photography:

  master
  5b: an original from which copies can be made
  especially : a master recording (such as a magnetic tape)
https://www.merriam-webster.com/dictionary/master

You can branch from master the way you duplicate a master tape cassette, and the copy is not any worse or subordinate. In fact the whole point is that the branches are improvements.

The 'master' branch uses the word the same way an audio recording does. There isn't a corresponding slave.

The word does come up in database replicas, which are often called master/slave. I can see a clear case where that would be offensive.

Renaming the master branch might be throwing the baby out with the bathwater, but it's just easier to do that right now, and it's a small price to pay.

"Master" is similar to the master copy of a work. It is used as a reference to base branches from.
Caveat: I'm fine with this decision from GH, just clarifying.

I believe it's the same usage as used in music recording, e.g.

> an original movie, recording, or document from which copies can be made.

The only git-specific aspect is that every clone of a repository gets a "master branch" (more precisely a branch named the same as the cloned repository's HEAD, but that is 99.9% of the time "master") and that is the only branch that is automatically created in the clone, just like a "master disk" is used to make copies of the disk.

This is actually a git concept not specific to GitHub.

It doesn't actually matter what the etymology of "master" is in this context. What matters is how people affected by a legacy of slavery view the term and its usage. In general, the term "master" used to denote something that is in charge or in control is problematic.
I guess I shouldn't be surprised at HN's response to this comment. But I am, frankly, disgusted.
That is hearsay at best, an intentional strawman at worst. The fact that bitkeeper uses master and slave repositories has no relationship on the meaning of master for git branches.

Git uses origin and clone for repositories.

I'll just share this with you directly since I don't know how to link to another comment: https://mobile.twitter.com/xpasky/status/1271477451756056577...
The media is most likely getting it right. The history points to the master terminology in Git being tied to the master/slave metaphor from bitkeeper.

https://mail.gnome.org/archives/desktop-devel-list/2019-May/...