Main image of article Developers Debate Deleting 'Master' and 'Slave' Code Terminology

For years, some developers have regarded certain programming terminology—most notably ‘master/slave’—as racially problematic. For example, there was a push a few years ago to remove those terms from Python documentation, which led to much heated discussion. Now, with protests against racial discrimination and police brutality sweeping the nation, the debate is coming up again. 

The developer collective behind Go (a programming language that began life within Google) is undergoing a big push to replace usages of whitelist/blacklist and master/slave. “There's been plenty of discussion on the usage of these terms in tech. I'm not trying to have yet another debate,” read the explanation accompanying the changes, which went live on June 6. “It's clear that there are people who are hurt by them and who are made to feel unwelcome by their use due not to technical reasons but to their historical and social context. That's simply enough reason to replace them.”

Not everyone in the comments accompanying the Go team’s note supported the move. “I am all in support of BLM,” one wrote. “But this is basically trying to say that we should eradicate the colours black and white and the words master and slave.”

Google’s Android and Chrome teams have likewise been determined to replace terms such as “blacklist” and “whitelist” within their respective codebases. “‘Blacklist’ and ‘whitelist’ reinforce the notion that black==bad and white==good. That Word Black, by Langston Hughes illustrates this problem in a lighthearted, if somewhat pointed way,” reads a note posted within the chromium Git repositories nine months ago. “These terms can usually be replaced by ‘blocklist’ and ‘allowlist’ without changing their meanings, but particular instances may need other replacements.” (There are also guidelines on gender neutrality.)

According to 9to5Google, “at least one Android Open Source Project developer” has been working on inserting more “inclusive language” into the android codebase. Such efforts have also been underway since last year.

Nat Friedman, CEO of GitHub, claimed in a June 11 Tweet that his team has already been working on the “master” to “main” transition for default branch structure. Again, the comments below that Tweet were mixed, with some complaining that it was more a demonstration of “performative wokeness” than anything useful. (Hat tip to ZDNet for highlighting Friedman’s Tweet, and for pointing out that similar efforts have been underway in pockets of the developer community for years—for example, the Drupal project deciding way back in 2014 to embrace ‘primary/replica’ in place of ‘master/slave.’)

For those developers who want to wipe out problematic terminology for good, there’s a mountain of code to confront. “Instead of referring to ‘slaves,’ Kubernetes uses ‘replicas’ and ‘workers’ and even ‘minions,’” Sinclair Im, a student fellow of the Information Society Project at Yale Law School, wrote in a recent Washington Post editorial. “But its code repository still contains more than 200 lines that use ‘slave.’ Because its code must talk to others, even Kubernetes can’t completely avoid the terminology.”

Im suggests that the entire software industry make a collective decision to voluntarily stop using master/slave terminology in software. While the heads of large companies could certainly issue a top-down order preventing the use of those terms, it might prove more difficult to convince independent developers and smaller projects to shift quickly, at least until new terminology is widely adopted. If the conversation threads that erupted when Python made its big change are any indication, this is a topic that many developers will only continue to debate for quite some time to come.