The least you can do

I have a cronjob that updates Homebrew every night. Lately it’s been failing and I finally had a moment to dig in this morning. Here was the error:

$ brew update -q
fatal: couldn't find remote ref refs/heads/master
Error: Fetching /usr/local/Homebrew/Library/Taps/heroku/homebrew-brew failed!
Error: Some taps failed to update!
The following taps can not read their remote branches:
This is happening because the remote branch was renamed or deleted.
Reset taps to point to the correct remote branches by running `brew tap --repair`

Well, fine. I can run that command:

$ brew tap --repair    
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 24 (delta 7), reused 22 (delta 7), pack-reused 0
Unpacking objects: 100% (24/24), 12.34 KiB | 308.00 KiB/s, done.
 * [new branch]      main       -> origin/main
==> heroku/brew: changed default branch name from master to main!

I installed Heroku’s CLI a few years ago when I tried out Heroku to host my blog. I stopped that server when it stopped being free. So it’s not really a problem to just uninstall it and call it a day. But the change from master to main was annoying, so I thought I’d dig into what happened.

It started with the obvious observation that “slave” is a loaded term that should be avoided, if possible. If you haven’t been heavily involved in technology in recent decades, you might wonder what context this would come up in. Well there’s a fairly common pattern where one process controls other processes. So the analogy is that the controlling process is a “master” and any processes it controls are “slaves”. It’s vivid and somewhat accurate analogy, but I can see wanting to find an analogy that’ doesn’t have the cultural baggage.

The next observation was that “master” also reminds people of the horrors of antebellum slavery. So technology companies started looking at removing “master” too. A big source was the default branch on GitHub that was called “master”. So GitHub decided to change the default. I haven’t tracked down the reason Heroku changed their branch name, but it was likely a move from one repository to another. Naturally that came with a default branch name change.

I started writing this because I was annoyed with the error. As far as I can tell, the “master” branch come from audio mastering and there was never a “slave” in the analogy. It was the source of copies. Changing to “main” removes the analogy, but it was never an objectionable analogy. So we, people who work with technology, put in untold effort to make changes in the name of justice that really doesn’t help anyone.

Of course these changes weren’t really about helping anyone. They were about people wanting to feel they made a difference. :person_shrugging: