Hacker News new | ask | show | jobs
by _qswe 1808 days ago
I haven't read the article or the book in question, but this reminds me of the hullabaloo about git master branches.

Never in my life have I associated git or its default branch name with American slavery. I would be shocked if a single black programmer in the world had considered before last year that it might be offensive. I haven't discussed the issue with any black friends or family, but it's just such an odd leap to make even if the claim about its etymology is potentially correct.

Of course, if even a minority of black programmers were or are offended, it's not my place as a non-black person to tell them they're wrong. I'll happily rename all my branches, update all my code that references master, rename all "master" test environments/hostnames, and update the gitconfig on all my machines, if credible surveys come out showing that a statistically significant number of black programmers genuinely consider master branches offensive.

Until then, I'm not going to do free labor to back up what so far appears to be an ill-conceived PR stunt on GitHub/Microsoft's part. The only arguments I've seen in favor of renaming master have been from white people appealing to technicalities/etymology, as if solving a puzzle to prove whether it should be offensive according to some logic, rather than any kind of appeal to the feelings of actual humans.

"Robotic wokeness" is a nice term to describe this phenomenon. I'm all for Black Lives Matter and correcting genuine injustices, but it's harmful to everyone when private interests artificially manufacture outrage and social justice causes solely for their own benefits.

4 comments

I took the opportunity to rename all my master branches to `trunk`:

https://en.wikipedia.org/wiki/Trunk_(software)

Because y'know, branches? Trunk and branches? It's the older term. I ran into it using Fossil and liked it, now all my git repos have trunks as well.

Of course there's nothing wrong with master, that was just histrionic bullying. At best it was people doing something they can do (change variable names) as a substitute for something they can't (meaningfully affect racial injustice).

But like I said. I took the opportunity. Way better name than main... or master for that matter.

Makes sense. I'm not familiar with Fossil, but I know trunk was also the standard when I used SVN back in the day. I think the trunk-branch metaphor makes more sense in the centralized VCS model where there is actually something special about the trunk that makes it distinct from branches, whereas in a DVCS like git master is just another branch except that it happens to be the default one checked out.

Ultimately, it doesn't matter to me in and of itself. Even before last year, it wasn't that unusual to see git/GitHub repos with default branch names other than master (dev is probably the next most common one I've seen), and presumably not because of anything to do with racial justice. "Master" seems most practical to me for the moment, since it's the most standard/common term and is relatively non-overloaded, whereas "main" may be more ambiguous unless expanded to "the main branch" (depending on context).

It almost feels silly to bikeshed about something so minor, but it's not fair for anyone to demand that millions of people change their behavior and/or spend money without meeting some reasonable burden of proof. It's a slippery slope to allowing such unfalsifiable Pascal's-wager-type propositions ("foo may or may not be harmful, so better do bar instead just in case") to be used for more malicious manipulation of markets and geopolitics.

Trunk worked fine for Subversion since it kind of sucked at branching. You generally had to have a reference branch where everything else was understood to be a copy of it.

Modern systems like git don't really work this way. I don't think trunk is properly descriptive anymore because it isn't necessarily the root of all branches. In a GitFlow branching model, commits can move back and forth on feature, bugfix and release branches without ever being merged to develop. On top of that you have branches like gh-pages which should have no shared history at all with other branches.

In keeping with GitFlow, the main development branch on many of my projects is called "develop". I like the name: this is where development happens, where new features are first merged. Unlike "master" or "main" it doesn't imply that it's stable or deployable, and unlike "trunk" it doesn't imply that it's special or that it's the root of all other branches.

> Modern systems like git don't really work this way. I don't think trunk is properly descriptive anymore because it isn't necessarily the root of all branches. In a GitFlow branching model, commits can move back and forth on feature, bugfix and release branches without ever being merged to develop. On top of that you have branches like gh-pages which should have no shared history at all with other branches.

This criticism apply to every other branch naming, especially "master" (it's not a master copy of anything, then). Maybe "main" would be the best one since it highlights the most important branch of that git tree.

Sure, and this is one of the nice things about git, that it supports a number of flexible workflows.

My repos are in fact trunk and branch shaped: the trunk branch is always the first commit, and I tend to just have feature branches. That won't last forever, I'll need to start having release branches and the like, but 'trunk as root' with the first commit is going to be a constant.

So 'develop' is a fine choice. I worked at a company which had a 'master' branch but really only used it for releases. It wasn't a continuous deployment model, so everything would land on 'develop', turn into a candidate branch near release time, and then land once on master when it was blessed for release.

So master was just a series of squashed deltas between point releases, which kind of matches the semantics of 'master' if you squint: like it was the gold master from which release copies (including one client who took delivery by CD-R!) was pressed.

Most of the Git projects I've worked with followed the "trunk" model of there being one core branch; in theory, you can use git in other ways but in practice that's the main one. That said, trunk works, but so does main, production, or even development depending on whether you want to communicate that the mainline branch is considered stable or unstable.
Then you should stop using Fossil.

It gives a bad example for climate change.

/s

One good thing that has come of Github changing the master/main/default/primary branch to "main" is that it forces git-related software/products to drop the assumption that the primary branch is `master`.

Unfortunately, Heroku "fixed" this problem in completely the wrong way, by now allowing deployments from `master` or `main`, instead of making it user-configurable.

So although I'm not particularly a fan of the PC brigade researching the etymology of technical terms to find new ways to feel outraged, I do appreciate the fact that in many cases, it forces developers to create software without arbitrary assumptions.

For the record, I do think in many (most?) cases, these crusades [0] are the social justice equivalent of bike-shedding, so that companies and individuals can pat themselves on the back and say "we're fixing racism/sexism/foobarism" without actually doing any real work to solve inequality issues in the tech industry. It also allows them to squarely put the blame on others (i.e. whichever 1970's white men came up with master/slave or blacklist/whitelist), while avoiding the need for meaningful introspection and contemplation of their own role (as people in the industry, regardless of identity) in the inequality of the tech industry.

[0] Apparently, this is also a word we're not allowed to use

In my opinion and experience people bringing up "the master name for hard drive cable is bad" and "look, they want to change the name of an insignificant detail in computers but no black people really care" are put in the same bag and forced to tag along.
> Never in my life have I associated git or its default branch name with American slavery

> I haven't discussed the issue with any black friends or family

I'll just highlight these quotes there for you to consider. It was never about you or your opinion on a matter that is not about you.

Apparently my original reply to this was controversial. Let's try again. Please explain how it has nothing to do with me when I'm the one being asked to foot the bill.

Let's say it costs a total $500 - $1000 worth of resources to excise the term "master" from all the code and infrastructure under my control. You're asking me to spend that uncritically and unquestioningly. If that's what you want, send me $1000 and it'll be done by the end of the month.

As I said, I'm perfectly willing to donate to progressive causes I believe in (and do, frequently); I have no problem doing this if someone makes the minimal effort to prove that it would be a positive use of my money. I have a very big problem with donating to what amounts to Microsoft's marketing department. Convince me that this is more worthwhile than donating the same amount of cash to charity.

You're free to ignore my request and suggest (again) that I'm a racist, but that's not going to open my wallet; I'll just continue using master branches and also think you're a jerk.

I'm a developer who maintains repositories with master branches. It is exactly about me.