Powershell: Feature Request: rename default branch

Created on 12 Jun 2020  ยท  20Comments  ยท  Source: PowerShell/PowerShell

Summary of the new feature/enhancement

I suggest we change the name of the default branch in this repo to something other than master, due to its connotation with the history of slavery.

Proposed technical implementation details (optional)

  1. Pick a less insensitive name (main/trunk/shell/where_tests_usually_break or the likes) ๐Ÿ˜…
  2. Rename and push renamed branch
  3. Change the default branch to the new non-master branch in the repo settings
Issue-Enhancement

Most helpful comment

Where the relationship between two items is characterized as "master / slave" the case is much easier to make than when master is used alone in the sense of 'the definitive one' (as in master-tapes, -copy, -key, -switch etc) where slave- would be non-sensical as a prefix for the others. But when we talk of mastering the art of something, creating a masterpiece, performing Ibsen's The Master Builder, (or call someone a master-anything including a mastermind), of studying for a masters degree - where the person in charge of some colleges is known as the "master" or golfers playing in the masters I'd _really_ like to know if every use of "master" in English is causing upset to people whose heritage makes slavery a sensitive subject, or whether this is the same people who are crushed by embarrassment when using a phrase like "I'll look into it" when speaking to a blind person. (I had a Uncle, now dead, who got angry when people used terms other than "blind" to describe his total lack of sight, I remember him shouting 'I'm not b----- visually impaired I'm _blind_!', and if people made a fuss about having used those kinds of metaphors he'd get similarly angry. That experience showed me that people aren't as put out by some terms as the rest of us think - but I'm aware I may under-estimate it too).

I contribute to one project created and maintained by a PoC who doesn't seem to have a problem with the branch naming (that's not much of a sample, but it's all I have) I'm trying to get work to break out of the fixation with doing everything with/to/from/in something named "Master" by not having the branch with that name in new projects. Changing an existing project and finding all the places the old name is embedded will come with a bunch of pain points, none of which will be insurmountable; so if there's genuine (not imagined) offence let's change it; if it's only imaginary the effort can be better used elsewhere.

All 20 comments

Semi-related, Microsoft has an employee hackathon coming up in July and making all the CI work with this change would sure fit in nicely there.

The user interface of PowerShell-7.0.0-win-x64.msi contains hyperlinks to https://github.com/PowerShell/PowerShell/blob/master/LICENSE.txt and https://github.com/PowerShell/PowerShell/blob/master/ThirdPartyNotices.txt, and several NuGet packages have the former as the license URL.

GitHub
PowerShell for every system! Contribute to PowerShell/PowerShell development by creating an account on GitHub.
GitHub
PowerShell for every system! Contribute to PowerShell/PowerShell development by creating an account on GitHub.

I'm sure we'll find more branch-specific references once we start digging. We could keep master around for a version or two as a non-default branch to keep links alive. Or perhaps Github will invent some branch redirection feature before we get as far (we're probably not going to be the only ones in this predicament)

Where the relationship between two items is characterized as "master / slave" the case is much easier to make than when master is used alone in the sense of 'the definitive one' (as in master-tapes, -copy, -key, -switch etc) where slave- would be non-sensical as a prefix for the others. But when we talk of mastering the art of something, creating a masterpiece, performing Ibsen's The Master Builder, (or call someone a master-anything including a mastermind), of studying for a masters degree - where the person in charge of some colleges is known as the "master" or golfers playing in the masters I'd _really_ like to know if every use of "master" in English is causing upset to people whose heritage makes slavery a sensitive subject, or whether this is the same people who are crushed by embarrassment when using a phrase like "I'll look into it" when speaking to a blind person. (I had a Uncle, now dead, who got angry when people used terms other than "blind" to describe his total lack of sight, I remember him shouting 'I'm not b----- visually impaired I'm _blind_!', and if people made a fuss about having used those kinds of metaphors he'd get similarly angry. That experience showed me that people aren't as put out by some terms as the rest of us think - but I'm aware I may under-estimate it too).

I contribute to one project created and maintained by a PoC who doesn't seem to have a problem with the branch naming (that's not much of a sample, but it's all I have) I'm trying to get work to break out of the fixation with doing everything with/to/from/in something named "Master" by not having the branch with that name in new projects. Changing an existing project and finding all the places the old name is embedded will come with a bunch of pain points, none of which will be insurmountable; so if there's genuine (not imagined) offence let's change it; if it's only imaginary the effort can be better used elsewhere.

See: https://github.com/desktop/desktop/issues/6478 and https://blog.carbonfive.com/2018/10/08/problematic-terminology-in-open-source/

I see no reason to oppose the change. Updating a few links is entirely trivial and a one-time effort. ๐Ÿ™‚

This is a good summation (from the linked article):

Treat problematic terminology as technical debt. When you learn that you have it in your projects, make it a priority to remove it.

Blog by Carbon Five
It remains a common practice in database systems today to refer to configurations where one database is a source of truth, and another database is a replica that follows the state of the source of โ€ฆ

@jhoneill I hear you (and I'm certainly not suggesting we ban the word ๐Ÿ˜…) but given that the word has been marred (specifically in the context of distributed systems) by widespread historical use to describe replication chains, I'd still argue we rename it. Not in the least because it's just not a good description - the default branch in a git repository is not an authoritative copy of the repository, it's just _a_ path through the version tree.

If master was a collection of self-containing commits that could all produce a valid release it might make sense.

There is discussion internally at Msft about all our GitHub projects rather than one-by-one. There is an ask for GitHub to have some tooling to support this so that everyone and everything doesn't break on a rename.

See: desktop/desktop#6478 and https://blog.carbonfive.com/2018/10/08/problematic-terminology-in-open-source/

That article says what I said, making the case for getting rid of "master/slave" is very easy - we shouldn't be referring to things as slaves. Master on its own is somewhat different, whether it is a master slide in PowerPoint or whatever.

@jhoneill I hear you (and I'm certainly not suggesting we ban the word ๐Ÿ˜…) but given that the word has been marred (specifically in the context of distributed systems) by widespread historical use to describe replication chains, I'd still argue we rename it. Not in the least because it's just not a good description - the default branch in a git repository is not an authoritative copy of the repository, it's just _a_ path through the version tree.

If master was a collection of self-containing commits that could all produce a valid release it might make sense.

The thing is: either one says 'look, this word is tainted, no more "Master Slides", no more "Masters Tournaments" in sports, ban performances of "Die Meistersinger" or "The Master Builder", here in the UK take "Masterchef" and "Mastermind" off the TV, find a new name for "Old-Master" paintings and "Masterpeices" ...yada yada yada ' Or one says, "Where are people [legitimately] upset, and how do we stop upsetting them?" _Legitimately_ means pale skinned people like you and me don't really get a say when the concern is slavery. In none of those cases is the master associated with a slave, but if it offends despite that, it should go.
If people with disabilities start to say "Look, PowerShell shouldn't have 'Disable' as an approved verb" the able-bodied don't get a say ... etc. I think there is element of "pre-emptive embarrassment". ... "What if this group are offended by this or that" .

"Master" is _only_ useful as a term for a branch in the sense of "source of many copies". My current gig is working in a place with some bad practice around [lack of] branching and _not_ having a branch named master on new projects would help that. (And if "main" , which is a fairly unhelpful name, or "trunk", which at least is the source-of-branches, become the norm we may avoid them too). I don't quite understand your last line - master - or whatever the branch is named - should always produce a valid release, because if it doesn't branching from it and adding to it won't produce one. .

Changing what exists is harder, because every one of the 3300 forks of this repo need to be updated. I notice you still have master branches in your repos, and @vexx32 still has master in PSKoans, etc (and this isn't meant be snide, but I can't phrase it better) before proposing / supporting it for this it would be better to investigate the practicalities on repos you control - I'm guessing you saw Scott Hanselmann on this and read some of the comments about things breaking - nothing unfixable I'm sure, just more work than estimated.

Blog by Carbon Five
It remains a common practice in database systems today to refer to configurations where one database is a source of truth, and another database is a replica that follows the state of the source of โ€ฆ

I notice you still have master branches in your repos

FWIW It took me about 35 minutes to update the default branch designation in all of my (~25) source repos just now, but I'm afraid that's not really a good proxy for assessing the impact on PowerShell/PowerShell.git (I only have a handful or less contributors in my most popular projects) ๐Ÿ˜„

either one says [...]

Except, no? We don't actually live in a world where everything is a binary choice hinged on absolute principle - languages and vernaculars evolve, and this is not a discussion about whether the six latin glyphs m,a,s,t,e,r in that order constitutes as "forbidden word" that we must ban at all cost.

What _I'm_ saying is: Keep enjoying your masterpieces while watching Masterchef and signing up for a master class... and rename the default branch in this repository to something that's hopefully slightly more inclusive

I notice you still have master branches in your repos

FWIW It took me about 35 minutes to update the default branch designation in all of my (~25) source repos just now, but I'm afraid that's not really a good proxy for assessing the impact on PowerShell/PowerShell.git (I only have a handful or less contributors in my most popular projects)

It might be a poor proxy, but it's a start. It silences any criticism of you, and helps to discover if there any side-effects which hadn't been anticipated, how to work round them and so on.

either one says [...]

Except, no? We don't actually live in a world where everything is a binary choice hinged on absolute principle - languages and vernaculars evolve, and this is not a discussion about whether the six latin glyphs m,a,s,t,e,r in that order constitutes as "forbidden word" that we must ban at all cost.

Well... I think there is room in the world for more than one view - I'm not convinced I'm right and even less sure others are wrong. There's a growing feeling that we should not use "master/slave", and I've watched two sides in a photography forum rage about the use for flash units - and there seems to be no common ground between the "How dare anyone tell us to change" and "How can you keep using the those terms" arguments.
But "Master" isn't the troublesome one in that pair and has a variety of meanings from expert/teacher, to original source, to person in charge. Either _every use_ of the word evokes slavery, or _some don't_ and I _think_ you're with me that some don't. I would say that use as a branch name is in the "don't" pile.

What _I'm_ saying is: Keep enjoying your masterpieces while watching Masterchef and signing up for a master class... and rename the default branch in this repository to something that's hopefully slightly more inclusive

I do tend towards binary choices... If a _master-branch_ is not inclusive, why is a _master-class_ OK? I would like some evidence that it makes any difference to inclusivity. Done right it's harmless, and pleases a few people but not the ones we're worried about excluding.

As I alluded to above, the default branch is neither a golf tournament or a teacher, and in a decentralized system like git, master isn't really an apt description. But that's obviously not all this comes down to.

I apologize if I didn't properly convey my intentions when calling master a "less inclusive" branch naming choice, so let me try and do that:

We have a bit of a white dude problem in this community - and by that I don't mean that every white dude in the PowerShell community is a problem, but rather that when I go to conferences, user group meetups etc., there's an excessive majority of people who look just like me. This has made it extremely easy _for me_ to feel a "part of the tribe", but I genuinely fear that the overwhelmingly positive experience I've had is a mere a pipedream for someone who happens to _not_ look like me. Now, 5 years ago I might have thought to myself "maybe it's just a reflection of it/devops/tech in general" and that the problem would somehow "solve itself". But if I look around me today, _not much has changed_.

Changing the default branch name to something other than master is _not going to solve that problem_, but it feels like the _least-effort_ thing we could do to send a signal that we actually care about making the community (including contributing to the development of PowerShell) an open and inclusive environment. And maybe, just _maybe_, that'll make it easier for others to raise their voices with more fundamental concerns about how we can further that mission. And based on comments from @SteveL-MSFT and @thomasrayner above, it sounds like Microsoft is on board, thankfully.

Speaking only for myself here, not for my employer or colleagues

The use of the term master for the name of a default/primary branch doesn't bother me, and I personally feel that it's more akin to other widely accepted and approved instances of the term. _However_, there are many in the community that have another opinion and are hurt, even in a small way, by the use of the term master in this context. I want those people to be included and that's why I support changing the name of default Git branches. Not because it abolishes an evil term from this project's lexicon, but because it helps others feel more welcomed to the project even if the reason they feel uncomfortable or excluded isn't one I identify with. This and basically every open source project thrives because of, and depends on the contributions of a rich and diverse community of individuals, whose perspectives and differing opinions are shared and combined to make for a greater project.

I don't have any need to be "right" over someone whose experiences have led them to feel differently than me. I do feel a need to do what's within my power and ability to help make them feel comfortable being a part of a project and a community that I treasure.

there are many in the community that have another opinion and are hurt, even in a small way, by the use of the term master in this context.

@thomasrayner I'm puzzled by this because I have not encountered anyone who feels that way @IISResetMe describes "white dudes" feeling guilty and actually says this is _"not going to solve that problem, but it feels like the least-effort thing we could do to send a signal that we actually care"_ I spent some time looking for anyone who expressed any hurt : I couldn't find any. Scott Hanselmann's post from last week was the top result followed by ycombinator with lot of "white dudes" reacting to it arguing about whether he was right or just "virtue signalling" - which is why I quoted that bit above No-one turned up to that debate and said "Actually I feet hurt / excluded / annoyed" by this. This link also turned up https://github.com/microsoft/calculator/issues/169 and again no one said they personally had a negative reaction they were just imagining other people might feel, people asked why webmaster or postmaster were ok.

I've said more than enough, I'm not so much a "white dude", as "Pale, Male, and Stale", and have ended up as the only person here questioning this when I don't think "master" is a uniquely good name, and for different reasons I'm trying to stop using it in my day job. It doesn't need defending, and a change can be done without much disruption. If it is an empty gesture which delivers no benefit it still does no harm, but I could be wrong and some good may come of it.

@jhoneill Fair point, and you might indeed be right - maybe the number of people who feel hurt or unwelcome by its use is infinitesimally small, and I'm making a big fuzz out of nothing - but the anecdotes unfortunately does little to prove that.

Asking the victims of systems of oppression to "raise their hand and speak up" and then concluding there's no oppression when nobody speaks up is a fallacious conclusion. Similarly If you have an abusive manager with a track record of retaliation and they ask you for feedback, you're unlikely to give them the unvarnished truth.

FWIW it turns out we were both wrong about the origins of the term, git cargo-culted master from BitKeeper's use of master/slave terminology.

All the more reason to change it :)

@IISResetMe well indeed, the wish to change this might be all over nothing , or I might be wrong and some people are genuinely upset. There's really no way to know, I was hoping that the present discussion would mean people who had a right to feel aggrieved would emerge and say either "About Time Too!" or "Really? You think that bothers me?" - as you say there is a hesitancy about being the one to raise it. But no-one has done so we're stuck not knowing.

Here in England we've had people saying "Nitty-gritty" referred to the bottom of slave ships (it never did), or "Ship-shape and Bristol fashion" was of slave sales when it has only ever meant "Tidy, and secured against falling over", there are stories of people mistaking the meaning of paediatrician and smashing someone's windows in, and someone who nearly lost his job for using the word "Pedagogue". In the North of England they had about 100 words for "mean", and one of them beginning with N has caused such misunderstanding it has it's own wikipedia page.

I'm in my 50s and I have seen it dawn on people that certain figures of speech either have a derogatory overtone, or just grate with some groups of people. I tweeted about hearing this https://benjaminzephaniah.com/rhymin/white-comedy/ and so when Microsoft started changing from "black-list" to "block list" I felt that if anyone said "It's just ..." I could reply "To you, sure, but here's someone who feels differently". I said on twitter that must have been 10 or 15 years ago and yet people are still getting round to changing that one.

I make those two contrasting points because there are both "invented harms" where people demand action where none is needed and "denied harms", where action is needed but people refuse to take it. If this use of master _is_ a problem then many others will need to go too but of itself that's not a reason to block a change. Maybe some uses are OK in some countries and problematic in others (Some people think "collaborate" is a fine word, for others it still has overtones of working with Nazis in world war II) and a concern wanting to be international might need to do things something working in one country doesn't need to worry about.

I saw that link where someone said "Oh yes, Linus T probably used master in a system which has branches, because a different system where separate repos did the job of branches used master/slave for that relationship". It's a quite a leap, especially as slave has never been part of git (though some users have no-doubt used it), and the one person who seems to have said isn't definite about it. Incidentally, have a look at the derivation of "cargo cult", that might also be one to avoid. ;-)

Benjamin Zephaniah
I waz whitemailed By a white witch, Wid white magic An white lies, Branded by a white sheep I slaved as a whitesmith Near a white spot Where I suffered whitewater fever. Whitelisted as a whiteleg I waz in [...]

What a collosal waste of time that can be used for real functionality, since it is far from trivial to change now.

My people were slaves more then half of millenia yet you dont see us making drama over that on technical sites and random places.

I am really repulsed by events like this - things should be kept technical here, not political. When talking about effect of _somehow_ attracting contribs from certain kind of people who are offended by the word but will magically become top contributors once the word is gone, you seem to forget that there are also people who will be turned away by going further with childish "fixes" proposed here. And when I say childish, its literray insult to children who are known to tolerate far worst behavior.

You can bring on the thumbs down now.

@majkinetor Thanks for sharing your honest opinion.

Whether or not you find my proposal childish, I'd appreciate if you could share _specific concerns_ that make you think it's "far from trivial"? It's tough to have a technical discussion without facts :)

Not yours per se, this lunacy is beyond PowerShell repository and this "feature request". Not sure what is your motive, nor I want to act shrink here, but if anything, I consider it hostile as much as anything else that introduces clearly unneccessary and offtopic work on fine project such as this.

But let me bring _some_ of the facts many of which are beyond this repository:

  • Awfully lot of documentation uses _master_ as working example along with specific ones like contributing/develop/whatever.md. People do the same with gists/snippets
  • Awfully lot of automation has this branch hardcoded or set as default config value
  • One can argue that it is zero effort for new projects but people typically bring their existing scripts and whatnot into new projects
  • As noted already, MS is considering or already developing a tool for this, which cuts from available human and time resources
  • A lot of other people have now to devote time to this, on various levels, like us here, which could be infinitelly better spent elsewhere ( like improving your posh modules such as PSCache)
  • A lot of integrative and CI/CD tools assume master for various things (like build templates, just check out GitLab)

Obviously, "some group" which knows next to 0 about technology (and other things like human rights) thought this is great idea and asssumed little dwarfs will fix it magically over the night and everybody will be happy.

This is not the first time such thing happens on Github either. This is also not the first time people who are interested in technology and not about everything else under universe voice their concern about such measures.

Personally, I am thinking hard about giving up comming here next time something like this creeps in, and just get back to private or more sane git community.

I was concerned about how the following requirement will be satisfied for previously released PowerShell MSI packages, if they carry only URLs rather than the notices themselves (since https://github.com/PowerShell/PowerShell/issues/8846) and the URLs no longer work after the branch is renamed: https://github.com/PowerShell/PowerShell/blob/ab7460365ffdd40e1c3ae67958a27f210c6b594a/LICENSE.txt#L14-L15

However, the MSI packages apparently install $PSHOME\LICENSE.txt and $PSHOME\ThirdPartyNotices.txt (since https://github.com/PowerShell/PowerShell/pull/7203).

Was this page helpful?
0 / 5 - 0 ratings

Related issues

rudolfvesely picture rudolfvesely  ยท  3Comments

andschwa picture andschwa  ยท  3Comments

pcgeek86 picture pcgeek86  ยท  3Comments

JohnLBevan picture JohnLBevan  ยท  3Comments

Michal-Ziemba picture Michal-Ziemba  ยท  3Comments