👩‍💻 chrismanbrown.gitlab.io

Racism and Oppressive Language in Software Development

small ways to be anti-racist


There is a lot of metaphor embedded in software development. Julia Evans recently did a really interesting analysis of metaphor in man pages in Metaphors in Man Pages.

Another pervasive metaphor that exists in software development is that of white supremacy.

You can see examples of the “Black is Bad” effect when we talk about blacklisting and whitelisting. Or about black hat and white hat hackers.

One surprisingly common convention in hardware and software is to describe things as having a “master / slave” relationship.

In a memo titled Terminology, Power and Oppressive Language The IETF makes several recommendations for alternatives such as replacing blacklist and whitelist with blocklist and allowlist. This is anti-racist, and also has the additional benefit of being more clear, precise, and descriptive by saying what it actually is instead of relying on racism to convey meaning.

They also recommend several alternatives to master/slave such as primary/secondary.

Master/slave terminology is hardcoded into git. Git by default initializes a project with a “master” branch.

Eliminating racist language from the platform is possible. Python did it. Until that happens though, what you and I can do right now is to configure git locally to initialize with a primary branch called something–anything, really–besides master.

You can do this with git template directories, which contain everything you want copied into a .git directory upon initialization. Including the HEAD file, which contains a reference to the name of the primary branch.

So I did it.

I created a template directory, and updated my gitconfig to use it.

Now every time I run git init I start with a “main” branch.

Because we should be dismantling racism when ever and where ever we encounter it.

You can use https://github.com/chrisman/kill-your-masters to get started yourself.

Kill your masters.