Inclusive language in LLVM: can we rename `master` branch?

Hi,

When we moved to GitHub a few months ago, we used without more consideration the “master” convention to name our development branch. On SVN it used to be just “trunk”.
This naming is unfortunate as it can hurt some contributors, and there is really no technical advantage that I know of to favor this convention over another.

I am perfectly aware that master has other significations than the master/slave meaning, and I personally never made this association in the past. However I’m also able to recognize that I’m privileged here, and that not everyone is in the same position.

As we intend to be an inclusive community, I propose that we change the name of our development branch and that we adopt instead a more neutral terminology for the LLVM monorepo. Possible names are “dev”, “trunk”, “main”, “default”, …

We need to plan a transition as all the bots will need to be updated to track this new branch instead, but these are minor technical details, nothing compared to the SVN->Git migration we went through.

Since I’m on this topic, we should also likely look into the pervasive use of whitelist/blacklist in the project.

Thoughts?

I never got around to updating it in my brain, so still call it trunk. I would be very happy to see reality updated to reflect my mental model.

David

Hi,

When we moved to GitHub a few months ago, we used without more consideration the "master" convention to name our development branch. On SVN it used to be just "trunk".
This naming is unfortunate as it can hurt some contributors, and there is really no technical advantage that I know of to favor this convention over another.

I am perfectly aware that `master` has other significations than the master/slave meaning, and I personally never made this association in the past. However I'm also able to recognize that I'm privileged here, and that not everyone is in the same position.

As we intend to be an inclusive community, I propose that we change the name of our development branch and that we adopt instead a more neutral terminology for the LLVM monorepo. Possible names are "dev", "trunk", "main", "default", ...

While we're at it, I strongly urge to also deal with the words "work"/"job".

As one can easily fact-check, in Russian (slavic?) language,
for example, the word "Worker" can be translated as "Работник", "Рабочий".
Similarly the word "Job" can be translated as "Работа".
As you may notice, they all contain "Раб", which, as you can easily
check, literally translates to "slave".
It doesn't seem very inclusive to me to use words with such dubious origin..

We need to plan a transition as all the bots will need to be updated to track this new branch instead, but these are minor technical details, nothing compared to the SVN->Git migration we went through.

Since I'm on this topic, we should also likely look into the pervasive use of whitelist/blacklist in the project.

Thoughts?

--
Mehdi

Roman.

Speaking entirely personally here as I’ve not had a chance to discuss this with anyone else at Sony yet.

Our internal CI jobs still refer to trunk and anecdotally I still hear trunk and master being used interchangeably so I don’t think going back to trunk would cause any great churn at this end. I’m in favour.

I’d imagine that it wouldn’t be too hard to keep the trunk and master branches in sync for some transition period. I’m not sure if git symbolic references would be feasible, otherwise we could create trunk from master, restrict pushes to master and run a bot to just keep fast forwarding it to match trunk. That way although committers would have to change to pushing to trunk, bots could have a longer transition period with read-only access from master.

In terms of blacklist/whitelist it’s never a thing that had occurred to me until reading recent discussions but I’d be in favour of recommending denylist/allowlist as preferable alternatives in future.

-Greg

+1

Language shapes how we observe reality, so this is right step to do.

Best regards,
Kai

Hi,

When we moved to GitHub a few months ago, we used without more consideration the "master" convention to name our development branch. On SVN it used to be just "trunk".
This naming is unfortunate as it can hurt some contributors, and there is really no technical advantage that I know of to favor this convention over another.

I am perfectly aware that `master` has other significations than the master/slave meaning, and I personally never made this association in the past. However I'm also able to recognize that I'm privileged here, and that not everyone is in the same position.

As we intend to be an inclusive community, I propose that we change the name of our development branch and that we adopt instead a more neutral terminology for the LLVM monorepo. Possible names are "dev", "trunk", "main", "default", ...

+1, I would be happy with any of these, but "trunk" is terminology I'm
already used to using from SVN and feels most natural to me.

We need to plan a transition as all the bots will need to be updated to track this new branch instead, but these are minor technical details, nothing compared to the SVN->Git migration we went through.

Since I'm on this topic, we should also likely look into the pervasive use of whitelist/blacklist in the project.

Also +1. FWIW, a while back I set up a herald rule to subscribe me to
any code review using those terms and I've been quietly suggesting
improved wording (because there's always a clear construct to use
instead) and authors have been great at making changes when I point
them out. Having more eyeballs on this would be a good thing!

~Aaron

If possible could you please avoid using the name "trunk". At Arm we already use
the trunk branch in our downstream repository, so we would have to rename
"trunk" to something else and that would actually require more effort than
renaming the master branch.

+1 for main or trunk + main seems to be what most git projects move towards, but I have no strong opinions on the new name (just strong opinions about not using master).

I am perfectly aware that `master` has other significations than the master/slave meaning, and I personally never made this association in the past. However I'm also able to recognize that I'm privileged here, and that not everyone is in the same position.

Hi Mehdi,

I never associated any of those words with their negative
connotations, either, but this is because of my upbringing and some of
the privileges I enjoy from our broken society.

I always associated the word "master" as reverential, like with
martial arts, Jedi kind of thing. And to me, "white" and "black" (on
list, hat) had to do with day and night (when the monsters come out).

But I'm also painfully aware that small amends to our mental model
could improve the lives of many people. Every little bit counts.

I did read around for all of the reasons to change all the names, and
all the reasons not to. Turns out, the reasons to change are that a
lot of people go through repeated pains throughout their lives for
generations and every little bit helps. The reasons not to change were
that "people are used to". I think that's clear enough for me.

As we intend to be an inclusive community, I propose that we change the name of our development branch and that we adopt instead a more neutral terminology for the LLVM monorepo. Possible names are "dev", "trunk", "main", "default", ...

Funny enough, git doesn't care what you call your branches. Better
still, Github has a setting to name your main branch.

I personally dislike "trunk". I'd prefer "main" because that's where
all commits go. "dev" would make people think that's not the official
place to look at.

Since I'm on this topic, we should also likely look into the pervasive use of whitelist/blacklist in the project.

As long as the new names are clear, it should be fine. Maybe we could
have a "dictionary" to refer to the terms we use to replace old ones.

I'd also strongly advise against worrying about translations. As a
multilingual speaker, I notice funny words in many languages, either
by spelling or by sound, and it's impossible to avoid all similarities
with all languages of the world. Particularly to the times we live in,
the N-word is the "right" word to use in Brazil, while "black" is
extremely offensive. For example, one would translate "blacklist" into
"lista negra" to be culturally correct. Culture is beautiful because
it's different, and we should all embrace differences. Without it, we
wouldn't be human.

We could use non-English words that are more restricted in meanings,
like "libre" is used for a specific meaning of "free". But worrying
about spelling or sound in hundreds of different languages for every
word we use would never end. Worst still would be worrying about
Spanish and French, but not for example, about Vietnamese or Afrikans.

cheers,
--renato

As we intend to be an inclusive community, I propose that we change the name of
our development branch and that we adopt instead a more neutral terminology for
the LLVM monorepo. Possible names are "dev", "trunk", "main", "default", ...

If possible could you please avoid using the name "trunk". At Arm we already use
the trunk branch in our downstream repository, so we would have to rename
"trunk" to something else and that would actually require more effort than
renaming the master branch.

I like "dev" as an option here. It's short, and in addition, conveys the fact that the development happens in that branch. "main" in fine too, although it doesn't have has much semantic benefit.

-Hal

"main" shares the first two letters of "master", and it's nice for TAB
completion. :slight_smile:

I'm still confused why the name needs to be changed. It's a branch
upon which (nearly) all other branches are based, and rebased. Why is
'master' such a horrible name for it? There are no negative
connotations with a branch name. Anyone who reads more into it, the
problem is on them and them alone.

- Justin

If the name of our branch causes anxiety/difficulty for a significant portion of our population, it is literally the least we can do to choose a word that better respects the last few centuries of world history.

That said, I kinda hate 'main' as it is my stand-in for 'how to describe the active branch in an upstream/downstream', so it'll lead to some confusing conversations. That said, it seems the programming community has already chosen main as the replacement, so I guess I'll have to just figure out that 'Main is on first' a couple times in the next few months.

Honestly, if the name of a branch causes anxiety/difficulty, that's an
issue on that population. It has absolutely no relation to the dark
history of the world, none at all. Anyone who casts it in such a light
is either signalling or trolling.

I won't stop any kind of rename, but renames have to be done for a
technical merit, not a political correctness merit, or it has no value
at all. If renaming the branch to 'main' or 'trunk' makes it easier
for people to reason about the branch setup then fine. But if it's "to
address a past wrong that has absolutely no relation to the project"
it needs to be rethought. And I'll go so far as to say that this
frivolous renaming occurring across the board is doing more harm than
good in the name of 'respecting the last few centuries', as it forces
people to highlight that aspect of history, and not move on as a
society.

A master branch is the source of truth. It's where development
branches branch from, and where they inevitably merge back into.

Speaking only for myself here...

From: llvm-dev <llvm-dev-bounces@lists.llvm.org> On Behalf Of Justin
Hibbits via llvm-dev
Sent: Friday, June 19, 2020 10:59 AM
To: Keane, Erich via llvm-dev <llvm-dev@lists.llvm.org>
Subject: Re: [llvm-dev] Inclusive language in LLVM: can we rename `master`
branch?

> If the name of our branch causes anxiety/difficulty for a significant
> portion of our population, it is literally the least we can do to
> choose a word that better respects the last few centuries of world
> history.

Honestly, if the name of a branch causes anxiety/difficulty, that's an
issue on that population.

Much as I hate to use this sort of language, that statement appears to
be blaming the victim for not getting over it and progressing to a
connotation-free reading of language. But language is never free of
connotations, even if you and I don't see those connotations.

I'm not seeing the change as a huge inconvenience, and this argument is
not much different than the head-butting over camelCase vs CamelCase.
Some people care deeply, others see little value in the change so why
bother; IMO it makes the people who care deeply happier, and it doesn't
particularly interfere with my work or cost me more than a bit of one
time adaptation. Thus overall it is a plus for the community.

If anyone's keeping track of the voting:
+1 for "dev" (contrasts with "release")
+1 for "trunk" (historical and consistent with the branch metaphor)
-1 for "main"
--paulr

Hi Mehdi,

I completely agree and this has been raised in other forums as well. GitHub is planning to change the default name of the ‘master’ branch for new repos - I think we should wait to see what they move to, so we can decide whether its makes sense to align with that.

-Chris

Hey! At least one +1 for "main" from me!

Also, on -1 for "trunk" from Arm.

I may have missed some, too.

I agree with Chris we should wait for Github, mostly because that
would be looking over a much wider scope and will be choosing
something that more people are happy with.

Moreover, more people will use the Github name as their main branch
and will be "surprised" why ours is different and we'll have to
explain.

Least surprise principle is always good.

This is a reason I can support... least surprise, consistent with other
projects on the platform. However I may disagree with the reasoning
behind GitHub's changing (which reeks of arrogance on their part),
maintaining consistency of this project for users of other projects on
the platform is respectable and acceptable.

- Justin

+1 to everything here. I was writing up a similar proposal this morning.

Mehdi,

Thank you so much for bringing his up. Personally, I agree with many points you have brought up and I appreciate you taking the time to write this email to the community.

Just an FYI, but Mike Edwards is talking to Galina and folks about the “cost” of the technical changes to bots/CI and should have something to share about that soon. This information could be helpful when making a decision.

Thanks,
Tanya