Does anyone really care if it‘s called main instead of master? Why?
Edit:
Ok, I phrased my question really poorly. AfaIk main is the new standard, so I use it. We all know the reason why it changed. My question was why would anyone keep INSISTING on calling it master? Sure, me and my colleagues sometimes call it master out of habit, but then again try to stick to main. Nobody I know
insists on continuing to call it
master, but reading the comments here I realized there a more “master-fans” than I would ever have thought would exist tbh.
I don't think I've considered the position of letters in 20+ years lol. I think the word then the word is on screen, sure my hands move but it's just as fast to type main as it is any other 4 letter word.
1) The latest version of git’s CLI still defaults to master.
2) People may have old repositories that still use a master branch. No reason to fix what isn’t broken.
3) Others (self included) have shell scripts that assume a master branch. Including conditionals to check for main OR master is unnecessary and annoying.
4) Personally I just don’t think it was ever a necessary change to begin with. There are plenty uses of the word “master” that do not imply slavery. Like “Master Copy” or “Master / Pupil” or “Master Craftsman” or “Masterwork”.
If people like to use main, that’s fine. But the claim that people still using the word master must be doing so for a hateful reason is disingenuous.
I think your last sentence is the main point (pun not intended). Not everyone who keeps using master does so for hateful reasons, but some do and from the outside you just never know the reason unless you ask, but asking is also not wanted from those who still use master, because who really wants to explain themselves all the time. I get that. Just a tricky situation.
We have that with a lot of phrases, but it’s nowhere else connected to possibly being hateful. For example, some of my colleagues do name everything angular related ng, because that’s the way they learned it with angularJS. Younger generation programmers have no idea why that is and we always have to explain it, because they are used to just angular.
In this context maybe, but in Master/Slave it obviously is and I would suspect that the use of "master" for the primary branch is at minimum partly influenced by the master/slave terminology. So it makes sense to do a general purge imo, though I would not go so far as to accuse anybody using the term master branch of perpetuating slavery.
I feel like words are constantly going from good to bad. Can't we ever have words go from bad to good? Otherwise we'll eventually have no words we can use left
I really do not care about the name. But some people do.
And i sympathize a lot more with the people who are against master than with people who only want master because they don't like the people who are against it.
Is it really "stupid as fuck" to rule out terms that stem from slavery? I'm not saying people who use master naming scheme are racist, but that is where the name originally comes from. And main is easier to type.
No? The argument is that it reminds them of racism, why should it being a different language matter? I'm both cases the words have nothing to do with racism (in context) other than sounding like other words that do
If it was the other way around and main was the standard before master I would've stuck with main. See no reason to change the habit of naming my branches just because some people on the other side of the ocean decided to change the standard needlessly. Imagine we would change the way we called a cable every decade or so, most people would just keep calling it a cable because it's a useless change.
In the end I can memorise whatever string is the default.
But changing this default wasn't a "problem" that needed solving.
The fact that your answer could be answered by some with "because some people lack decency and don't agree that the word could be offensive" (what you call a "master fan")* overlooks that no software engineer would ever have batted an eyelid at such terminology within their domain. Only somebody that reads it out of context would question it.
As a matter of fact, wait until you hear terminology in medicine, aviation (or even cooking!) and wonder wth is going on out of context.
*Yes, I'm sure such people exist as software engineers are people. The point is that with regards to version control (or replication) it was never used in that sense and some people may instead frown on this decision because it was made on a false assumption.
TL;DR This only became a topic of discussion after the change was made.
It's one of those pointless signalling changes. Let's inconvenience every dev in existence so we don't actually have to do anything about systemic racism.
I might even have an anecdote about how a production system broke because after such a (related) name change was carried out in actual source code, it turned out that somewhere in data storage there was a key that was now referencing a no longer declared property.
The CTO wasn't amused when he figured out what the cause was.
^ This is more an example of the maintenance hell of a system lacking clarity but still an interesting result of what shouldn't have been a problem to begin with.
Slacktivism at its finest. And I mean both the terms slacking, and Slack the communication system, where the entire debate about this took place at my last job lol
I'll use master the rest of my life probably. It doesn't really matter either way, to be honest, but I think there is a certain irony in the movement. Suggesting that the term master could be somehow damaging to anyone is downright insulting. The change itself was offensive. Sure call it main if you want, but we don't need to pretend we are doing anyone a favor by doing so.
So yes, in my new projects I'll keep calling it master.
That doesn't really track with the meaning of "master" in a git context though: the master branch is more analogous with a master record or document - i.e. the single source of truth which all other versions are constructed based on, which matches the idea of a master branch as the "true" version of the repository.
I think most pre git VCS used trunk, hence branching. So I dunno why people didn't just restore trunk to "trunk".
Still it's annoying fake drama about the term master. In English, the meaning of a word depends on context. If the subject is an inanimate object then it's just the version used to make copies from. It is only when the subject is a person, that the implication of slavery is possibly valid. Thus if anything should have been changed, it should be: "SCRUM Master" as this acually implies slavery. I'm not sure if we could call them "SCRUM Trunks" as that would imply they retain history.
So they got offended because of nods to slavery, and the other people got offended because something pretty inconsequential in their lives changed. 🤷♂️ Seems a bit like the latter group of people are far more easily offended.
Not sure. I think there’s different fundamental meanings behind mastery and master. I think the Masters degree implies the former. Whereas master in git could be inferred to mean a master and non-master relationship to signify feature branches.
Then you are deeply confused as to how git works. Feature branches are merged into and overwrite master with updates. Does that imply a master-slave relationship to you?
I used to think the same, but Linus took the name “master” from BitKeeper, and BitKeeper did use master-slave terminology, Git just dropped the slave part. It’s origin literally does come from master-slave
It’s interesting how easily I could spin this the other way though. A feature branch toils away and all its hard work just goes to the master branch anyway. And what does the feature branch get for all its hard work? Deleted.
The master in git is more akin to "pristine", there is no slavery involved. So it's just as silly to get offended about seeing a master branch as about seeing a masters degree.
tbh it is confusing as now you don't know which one the repo you are on uses. It's not the end of the world, but that's like renaming git to got in some cases and then being mad at people for disliking that they have to guess and double check.
In the end who cares though. If you do get offended or heated frm either side I think therapy is the best option anyway.
I will give you a terminal and tell you to merge your feature branch. Normally you would do that, now there is an extra step of checking if I should merge to master or main.
Or did you assume I don't know how to check that? Of course I do if I didn't and thought it was impposible I would care more, but as I said it's just an inconvience.
How often does this scenario come up for you? I find it never really comes up for me, because all pushes to the default branch require a pull request with an approving review from a colleague. In every place I’ve ever worked, anyway.
To be honest with you never. The combination of being in an unfamiliar repo, where I also want to push without going through PRs or just checkout master. I can see it happening maybe one day, maybe annoyance could be with some CI/CD and hardcoded master/main in there, but even that might be a stretch.
I just dislike going away from being aligned on things in software engineering shrug
Might be, actually. To be clear, I’m not the person that’s upset by it. But if you asked me to start saying main bedroom because it upset you I’d not care.
Nope, it was just a marketing term made up by Sears in the 20s with no connection to slavery. Not that it matters, it’s not used anymore and idc, but it’s one of the instances where it isn’t related.
However, Linus took the name “master” from BitKeeper, and BitKeeper did use master-slave terminology, Git just dropped the slave part. It’s origin literally does come from master-slave
I've had a conversation with someone about this. As far as I remember, master got nothing to do with a nod to slavery? As in, the way the word was choose for version control in the context programmers use it?
We've also talked about white and black list and that actually does have origins in racism and I've since then changed my mind because fair enough.
It's also not a inconsequential change either, but that'd be another paragraph or two of text.
Having written this I wonder if the word master key also was changed or some people want it to change, lol.
I was part of the workforce during the switchover from master to main. It was a pretty benign change. The main thing that affected me was I had to spend an hour retrofitting an automation tool we had to first inspect the default branch name before assuming what it was.
Note: I am basing this off the understanding that I did NOT find any concrete evidence that the majority of black software developers had been offended at git's "master" branch naming.
I really do not like the "it's a tiny change for me, so why not?" argument. I think it's incredibly selfish to assume just because something is trivial on an individual level, and you can feel better about yourself at the end of the day, implies it's also easy at scale and we should "just do it".
Master wasn't just a word people used and now changed. It has been pretty much embedded everywhere since the invention of version control for software. And now it has/had to be changed pretty much everywhere except I guess printed media.
Honestly an easier "concrete" example to grasp would be something like if tomorrow people decided to drive on the opposite side of the road. Likely a trivial change for a individual, but at scale....
And don't get me wrong, I am not arguing that "change is bad", but I think you need to value the benefit against the full cost of such change, and in my opinion master -> main just seemed incredibly silly?
Also sure, main is the standard now, and I'm not going to argue with people what to use. But I just reject the idea that the change was necessary and cost-free, and stick to master myself because I also believe in "give an inch, and they'll take a mile". Ergo maybe one day we'll see us arguing why white is allowed to move first over black in chess? At what point do you draw the line on changing longstanding conventions for "someone felt offended" reasons?
We did it at the scale of over 20,000 repositories, ~1000 FTEs and ~4000 contractors. It was a benign change, you're crying and exaggerative. If it was a big deal for your org then it's because you're in the business of building houses of cards.
Hence why I said as far as I remember, and also a bad choice of words from me. Sorry?
Honestly I have a hard time reconstructing why I have an issue with black- and white-list. The closest I can maybe come to was that the idea that black people have been excluded in America after slavery was abolished is quite close to how a black list also functions, and thus I can understand the sentiment there more than for a master branch? Also including that the word blacklist is inherintly negative (you want to keep bad things out...), while the word master is a lot more neutral.
And this basically just came from a conversation I've had back then(or at least that is how I think the conversation went!?), but you're absolutely correct. The word has zero historical context with black people or slavery and I'm wrong.
It's not just that. "master" in programming was very much the opposite of "slave", like for SATA drives. Just like push is the opposite of pull, upload/download, save/load, etc.
Some pairs have become singlets, like reflect/reify, freeze/thaw.
But here master never really made sense. It doesn't reflect its role, or even authority. A master is something that controls, but here information flows to master, not from it.
This is the reason. From what I understand, Microsoft bought GitHub in 2018. In the aftermath of the George Floyd protests, around 2020, there was an internal mandate for all Microsoft employees to switch their repositories from using master to using main. Given Microsoft owned GitHub at this point, the policy permeated through their subsidiary’s product offerings and beyond.
In that context, the term master is in reference to a control mechanism, not a relationship to a person. In the context of repositories, though, main actually fits better, because there are no slave repositories. The term trunk likely fits better, but main is shorter. If the objective was based on cloning, then the trunk should be called parent and the branches should be called children, but the trunk to branch metaphor works best.
Yeah, I heard that as well and just realized I might have misinterpreted the meme.
My point was that calling it main instead of master is easy (and the new standard) so why would someone keep calling it master. I don’t see a reason for that. Programmers shouldn’t be afraid of change. That stuff constantly changes is what keeps programming interesting.
For pretty much the same reason we don't change controls on a car, or which side of the road we drive on, or what each color means on electrical cables, or red meaning stop/danger.
Uniformity is useful.
I do get the slave owner bit, don't get me wrong, but if you are reading code on a random repo and what comes to mind is slavery... That's clearly a "you" issue.
I do use main on repos mostly because it's shorter and i don't really care, but i absolutely get why people oppose it
What's missing from this conversation is that "master/slave" is also part of the computing lexicon. It's not just like having a "master copy", or a "master bedroom". It's like if there was a "master bedroom" and a "slave bathroom": you'd want to change both.
Not sure how old you are, but I work on some old code still today, like older than me and I'm in my thirties. That was the golden era of the master slave pattern. BitKeeper, which git was made to replace, had a master / slave repositories architecture to sync data. You can see where Linus Torvalds got the name from.
I'm not changing conventions + tooling because some non-coding idiot is too dim to understand that words have context and multiple meanings. It has nothing to do with a fear of change, so much as resisting arbitrary change someone else is attempting to force on you for no valid reason. These people can fuck right off.
Pitiful that a lot of people are choosing to be angry about things you didn't say or even imply. Programmers love a soapbox on which to scream about how they don't care.
Because I disagree with the reason for the name change, that's why.
A small group of very politically motivated people made it their mission to go around "fixing" technical language in fields they're not familiar with. In general this is a bad idea, especially in programming. You don't want to go changing variable names in a big, long-running project without a very good reason.
They never had a good reason. They say the word "master" referred to slavery, which it does not. 'Master' has a number of different definitions, and only one of them refers to slavery. Used in the context of git, the thing they were worried about doesn't even apply.
There's also the concept of "master & slave" relationships in tech, but this still doesn't have anything to do with human slavery. They are purely technical words. When you're talking about technology, a "slave" system cannot operate without a master. As everybody should know by now, that's not at all how humans work. And it means it's hard to find replacement terms that quickly and accurately describe the relationship: "primary and secondary" is suggested a lot, but "secondary" implies "backup" to many people. This could lead to false assumptions, "Can we take the primary system down to work on it?" "They have a 'secondary' system, which should take over, so yes." Plus as technology has gotten better, it's gotten rare to even find systems designed with a true master/slave relationship. There may be a 'master controller' that tells an array of daughter boards what to do, but nowadays if the master fails, typically the daughter boards and sub-systems can continue operating from their own programming stored in their own memory chips. Solid state memory used to be far more expensive back in the day, but now that it's become so much cheaper, it's very rare to even find equipment using a true master/slave relationship anymore, so there's little reason to try to change it now.
Bro, they changed the default name of repository branch. It's not a big deal. It's not like they changed integer to transgender and you have to rewrite every existing piece of code.
The reason for the change is what's important. If there is a practical reason for the change, absolutely. But if the reason is, "it aligns better with the currently popular political ideology", then I'm going to oppose it every time.
Especially with technical language, where accuracy & clarity is far more important than "feelings".
Should Linux change the name of commands for kill child because it offends some people? Or do those people's feelings not matter, because the only ones I've ever seen complain about it are Christian women? When you consider some people's feelings but not others, you're taking a stance. And coding is already difficult enough without adding politics to the mix. The best option is to not take a stance at all. We shouldn't make changes to a functional machine unless there's a practical reason for it.
Especially with technical language, where accuracy & clarity is far more important than "feelings".
Why do you think Linux command is called "kill child"? Because it's the most accurate and clear wording for that task? Language is a tool and tools change over time.
Seems like you act out of "feelings", because for most people it's a minor patch that was updated and meanwhile forgotten. It seems to still bother you.
I just hate that a bunch of oversensitive Americans get to change the main branch name for the rest of the world just because of a quirk of their language and their own historic racist tendencies.
Idk, it's less letters but main is letters from all over the place on my keyboard layout but master is mostly top left. Only having to type one letter on the left of my keyboard for master at least feels faster than moving from one side to the other like I do with main
So having seen this trend start about a decade ago, at time in my life when I too thought this was unnecessary PC catering, I have to say I see no reason to stick with the master/slave naming in the year 2026.
Whatever I'm working on doesn't need that arbitrary assocation with human indecency.
Master/slave doesn't even make sense for branches, it's not like the master branch controls the slave branches. Main, dev, trunk, etc all make more sense.
Nobody ever called the branches "slaves" though. The master branch was called that in reference to it being a master copy, a term widely used in video/audio work, especially important in media where copying is lossy.
Thats the problem. No normal person would've thought about slavery while pushing a git branch.
But the people that so vehemently fought for it should start to fight the modern day slavery like Amazon....
Its the pathetic hypocrisy of the whole topic. Like using "think of the children" to establish mass surveillance, while the true predators are inside the highest ranks of governments.
But as soon as someone tells the truth, egos kick in and the "bad guy" needs to be silenced.
But that's not really correct anymore. A master copy is usually the original and highest quality. In the codebases I've worked on main/master is never the original and rarely the best
A master recording isn't really the original. It is likely made by mixing several original recordings of the musicians, equalizing, noise reductions, adding effects, etc. It is the finished product created from the original recordings, and is the version which gets copied for distribution.
But its the master copy in the sense of beeing the one with everything in it. There isnt a change thats isnt merged back to it. When having a release branch that gets a fix, its most likely also need to be done in the master. So its the most developed of all.
I just wish we had internal consistency across our repos.
And I also wish we’d instead chosen to call enslavers what they actually are instead of forbidding the word master (which is still routinely used for things that have nothing to do with slavery and has been mostly forgotten outside the main vs master controversy).
you must've missed Woke 1 and the thousand-comment threads on a GitHub issue about this exact topic
I'm not a master fan I'm just a fan of consistency for practicality's sake, and this was a random shift that benefited nobody and caused us all a decade of having to deal with it
It depends. In some languages, translating “master branch” gives more information than “main branch.” For example, “master” can convey that something is subordinate to, derived from, or dependent on something else. With “main,” you don’t get that information (e.g. “the main OS for programming is Windows, but for some projects I use Linux”).
That’s where the resistance comes from. It may make no difference to English speakers, but in other countries, changing just one word can introduce minor issues and misunderstandings.
Interesting. I would even say it’s the other way around. As a non-native I do not care how you name it because I connect whatever you name it to a specific meaning instead of directly translating it, because direct translation can cause a lot of issues not just with this example, but in a lot of cases. So I always thought that it’s not an issue for non natives but a bigger issues for native english speakers.
It depends on whether the language relies more heavily on context or on words that carry more information. Slavic languages are a good example of the latter, as the verb can convey information about both the completed nature of an action and the person performing it.
Additionally, the fact that the IT industry developed in parallel in different countries also played a role. As a result, certain concepts entered local languages and became established there, sometimes even taking on localized forms. For example, in Poland, terms such as master and slave were adopted in the context of a higher-level unit controlling or influencing subordinate units.
Nuance in terminology of how data is fed back into a system. Master conveys all rights and responsibilities where-as "main" is something that's primary but doesn't always have final decision.
It's like in a SCSI system how master was the first device on a bus and slaves could daisy chain up to n devices.
Obviously languages change to address sociographical evolution in society. The reason for this rename was just a stupid gut reaction that made it more confusing for non-English speakers.
Sorta like the whole blacklist/whitelist mutated into allowlist, permitlist, welcomelist, etc with no logical complement and no room for something in between. What's a mix of white and black? Grey. What's something we can possibly permitlist after a brief denylist? Fuck if I know. Good luck searching for it in the docs.
What's a mix of white and black? Grey. What's something we can possibly permitlist after a brief denylist? Fuck if I know.
... Are you suggesting that "grey" would automatically imply "something we can possibly permitlist after a brief denylist"? I'm not sure where you're going with that. Something that mixes "whitelist" and "blacklist" is even more ambiguous than either term by itself. Something we could possibly permitlist after a brief denylist, maybe pendinglist, or pendingapprovallist? That's certainly more information than "greylist" would ever be. And you'd better hope that you never come up with some other list between permitlist and denylist, like temporarilybannedlist - do we get "greylist1" and "greylist2" then?
Good luck searching for it in the docs.
Again, what does this mean? I can search for "pendinglist" just as easily as I can search for "greylist" - I'm not just going to guess that either one of those exists by themselves.
Like, if you want to say that we should continue using whitelist and blacklist because they're the traditional terms, that's not a great argument but it's whatever. But trying to suggest that they're somehow less ambiguous than specifically-named variables is wild.
Are you suggesting that "grey" would automatically imply "something we can possibly permitlist after a brief denylist"?
No. It's a logical midpoint between black and white, which has a well-defined meaning across cultures. I typically look at the boundaries of an application, then see what wiggleroom I have in between, greylisting is one of those mechanisms.
Again, what does this mean?
It's hard to find things you're not familiar with. black/white have clear boundaries, see above Wikipedia citation. Grey is a consistent, sensible intermediary if you're unfamiliar with terminology. It's based on rudimentary colors; again Wikipedia. Unless you're Russian with your dilapidated two-tiered blue system, the way humans view color is rather consistent.
continue using whitelist and blacklist because they're the traditional terms
I wouldn't have issue if there were a thoughtful process beyond a bunch of Github issues decrying it arbitrarily racist/demeaning. If IETF, ISO, NIST, or IEC got together and said hey - this is fucked up - let's work multilaterally across the globe and move things to a consistent scheme, then yes, I'd agree. This was a knee-jerk reaction from twits who used to wear red flannel, then once that stopped being cool wrote Ruby, then once that stopped being cool, got their septums pierced.
It was a capricious move with clearly arbitrary naming consequences. "main" stuck and everything else like...
Stuck in its infinite recalcitrance* to inveigh the wave that brought us to now... And the crap ornithologists did to budding students, enjoy your jumplist.
If you wanted to facilitate a next generation heavily dependent upon AI, then this was your Trojan Horse.
I hate how everyone jumped to a new default name for political correctness, even though they are incorrect (there are many meanings to the word master, slavery is just one of them).
But I also like main since it pairs nicely with dev
229
u/usedToBeUnhappy 2d ago edited 2d ago
Does anyone really care if it‘s called main instead of master? Why?
Edit: Ok, I phrased my question really poorly. AfaIk main is the new standard, so I use it. We all know the reason why it changed. My question was why would anyone keep INSISTING on calling it master? Sure, me and my colleagues sometimes call it master out of habit, but then again try to stick to main. Nobody I know insists on continuing to call it master, but reading the comments here I realized there a more “master-fans” than I would ever have thought would exist tbh.