Renaming master branch to mainline

There is a discussion going on the mailing lists right now. I want to know everyone’s opinion.
Should be master renamed to mainline due to moral conflicts and also following other projects like Rust, Django and the Linux kernel?

  • master
  • mainline
  • other

0 voters

Django, Rust, and the Linux kernel did not rename their default branches.


While I agree that slavery is reprehensible, I do not think purging every related word from our dictionary is a solution. I can understand that in certain parts of the world, the slavery is still in living memory and any reference to it can open old wounds, but almost every word can do that to someone at least to some degree. If we decide to get rid of offensive words altogether, we might end up with a language without any words at all.

Additionaly, the rename can be also a concern of developer experience. I run git rebase master almost hundred times a day in many different projects and I got to the point that the command entered my muscle memory. Now whenever I work on some project that uses a different convention, I usually try to rebase onto master and, only after hitting Enter, realize it will fail.


Now that the renaming was officially proposed by @mjog, I have to ask: Does the word master in git branch name really evoke slavery for native English speakers? I can understand that being the case in the context of distributed computing where the term is commonly associated with the word slave, but here it stands alone with no such connotations – at least to my non-native ears.

Extrapolating from this, do we replace the word in other common terms master key and master record? What about the Master’s degree?


Now I see, that in the linked document, they are not concerned with slavery but, rather, what they perceive as gendered speech. Again, as a non-native English speaker, I have to ask, do these words really convey the sense of maleness? Because they certainly do not to me, especially not in the context of physical objects or in the verb meaning “to learn to a high degree of proficiency” (wiktionary).

And to address Michael’s post on the mailing list:

yes it doesn’t matter to many people, but it does matter to some, and that’s the whole point of making a project more socially inclusive - to make it better for everyone

There will always be some things that are offensive to someone. I could easily take an offense at the efforts to deprecate common words and phrases in favour of ones I am, as a non-native English speaker, less familiar with. (is mainline some sort of power line?) Or should I rather bring up the GNOME logo discussion again?

To make that easier we have tooling support (auto-completion in both GUIs and TUIs, the ability to set things as defaults, code symbol lookup, etc.).

There will still be tools that will use master by default, for example when running git init. Moreover, this fails to address the thousands of people who already have local copies of GNOME project repositories. How does Git handle renamed branches?


Should be master renamed to mainline due to moral conflicts?


Does the word master in git branch name really evoke slavery for native English speakers?

No. Example: “Master” chef.

Do these words really convey the sense of maleness?

No. Example: A “master” chef could be a male or a female.

This is my perception as a native speaker of English at my age (45) in the context of a software development community. The request to change this word seems to arise from the grievance culture, which universalizes the semantic domains of certain buzzwords across contexts and tries to remove those words from every context, as a way to cleanse away ideas they perceive as offensive. That culture and context is quite different than the culture of an open-source git repo that is by common understanding inclusive, global, open, welcoming, and merit-based.

So yes, word master can be used in a slavery context, but that is not our context. As for the maleness notion, I would never have guessed master was offensive because it could evoke a patriarchal, gender, or sexual context, but again that is not our context.

Removing words from our vocabulary does not remove the ideas of those words. The ideas will live on, even if the words do not; other words will arise to replace those deemed unfit by the grievance culture.

My point is that the open source community lives in a different context. The semantic domain of the word master is bigger than those sub-domains that are offensive to some people in some contexts. Evil or oppressive semantics do not apply in this context.

This reminds me of the logical fallacy of illegitimate totality transfer. In this fallacy, one takes all of the possible meanings of a word and imports them into every particular use, without regard to the critical controlling element: the context of the use. Usage determines meaning, and the usage of “master” in this context does not include an oppressive meaning of the term master.

We could discuss whether master should be renamed “main” or “release” or “stable” or whatever, but that discussion should, in my view, be based on the merits of the software-engineering ideas inherent in those words, not the social or cultural meanings of those words–and upon the technical matters of how difficult it is to change such an identifier in the entire toolchain and common usage.


I think the master/slave terms can be replaced as needed with other terms as long as they portray the same meaning. Master/slave hasn’t been chosen to exclude people or cause offence, it’s just it’s the easiest way in the English language to describe the setup. You can try leader/follower, but that is used in cults so I imagine you can’t use that either?

But I don’t think we should avoid using a word just because it has a homonym that can be used negatively, otherwise where will it end. Mainline also means to take drugs, so if we’re going to apply the same logic we’re applying to master, which refers to master copy, then mainline is not appropriate either.

Why not stop at master? Let’s rename the kill system call whilst we’re at it and man pages.


Let’s try to stick to the topic, and not go down the “slippery slope” fallacy.

Nobody is calling for replacing all contentious terms; we’re talking about replacing:

  • master/slave terminology in GNOME, as a general rule—and, yes: it’s perfectly feasible to adopt descriptive replacement words. This is the least contentious bit of the proposal, and I think it’s been already pretty much widely accepted because it makes sense
  • renaming the default branch of the GNOME Git repositories to a less gendered/loaded term than master; this is contentious because of technological limitations in Git (changing the default remote does not necessarily get reflected in existing clones without manual intervention) and in the various tooling around it

Software developers should not play at being language lawyers; let’s try to figure out if we can make these changes happen at the GNOME level, or if we need to hanlde them elsewhere, like Git or GitLab.


(post withdrawn by author, will be automatically deleted in 24 hours unless flagged)

1 Like

Renaming master branch to mainline or something could be breaking damned lies when pushing translation files

1 Like

Master has nothing to do with slavery. Gender is a feature of a word but not an object it names. The English language has no gender concept. It is so silly for me to see how people manipulate these terms. No offense, but please leave “master” alone. I am ultimately voting to leave master.

I have to say, the only time I’ve ever really heard the term “mainline” (as a single word) in English is in reference to drug-taking, which doesn’t seem like much of an improvement…


I’m fine with removing references to slave as a general course of action, I understand why it was originally chosen but it’s never quite felt right to me

Subordinate seems a fair replacement to me (ADJ: lower in rank or position) giving us a pairing of master and subordinate (or master/sub as a shortening, which nicely maps to nodes and subnodes in cluster contexts etc)

Master, however, is a very common word used in a variety of contexts but I’ve never personally connected it is slavery. Admittedly I am a native speaker with no know connection to slavery so others may have different experiences although I’m sure the same is true about many words in many languages for many reasons

It is very important though we avoid the generic “slippery slope” argument as it’s unproductive and ignores the issues but whilst we are on the topic of git that name itself is unfortunate in Commonwealth English (although I suspect this is the reason Linus chose it…)

For me master makes sense as the name for the main git branch as it should be original truth of a project from which all other branches/clones derive, much the same context as “master copy” (or master tape/disk et al). Mainline on the other hand doesn’t feel as natural, I assume it’s been taken from “main-line” as in railways (which of course have branch lines) but it doesn’t feel like the right metaphor

I assume “mainline” as a single word is an American thing but other than briefly in the context calumb mention I’ve never come across it

1 Like

That made sense for me as well.

But then Bastien’s investigation shows that the “master” branch might very well have been named after the master/slave terminology, not the “master copy” one:

First appearance of “master” in git is in a CVS helper script[1]:

Why is that branch called master? Probably because BitKeeper uses “master” for its main branch:

But maybe this “master” isn’t the same one that’s in “master/slave”? See the documentation about master/slave repositories:

But repositories and branches aren’t the same! They are in BitKeeper:

So, yes, the “git master” branch probably isn’t even a “master copy” reference, but a straight up master/slave reference.


The word “slave” has multiple meanings. Blame English for that It is problem with language. We should not create such a problem and look for a solution.

Yeah true. But remember that context matters. Many words have different meanings in different contexts.

Please stick to the topic and avoid the slippery slope fallacy.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.