This article is based on reporting originally published by ZDNet (zdnet.com) in June 2020.
GitHub Commits to Replacing “master” with a Neutral Default Branch Name
GitHub announced in June 2020 that it was actively working to replace the term “master” — historically used as the name of a repository’s default branch — with a neutral alternative such as “main.” The announcement came from GitHub CEO Nat Friedman, who confirmed the effort publicly on Twitter after being prompted by Google Chrome developer Una Kravets.
The move placed GitHub among a growing number of technology companies and open source projects revisiting terminology that critics argue carries racially charged connotations — a discussion that accelerated significantly during the Black Lives Matter protests of mid-2020.
Why This Terminology Is Contested
The concern centers on terms such as “master/slave” and “blacklist/whitelist” that are widely used in computing to describe technical relationships, but which some researchers and practitioners argue reflect and reinforce racial stereotypes. A 2018 academic paper cited in ZDNet’s reporting stated: “Such terminology not only reflects racist culture, but also serves to reinforce, legitimize, and perpetuate it.”
Proponents of change argue that replacing these terms carries a low technical cost while sending a meaningful signal of inclusion to developers from underrepresented communities. Common proposed replacements include:
- master →
main,default,primary, orroot - slave →
secondary,replica, orworker - blacklist →
deny listorexclude list - whitelist →
allow list
How Git and GitHub Use “master”
In Git, the version control system that underpins most modern software development workflows, a repository is initialized with a default branch historically named master. Developers create feature branches from this default branch, commit their changes, and merge them back in via pull requests. GitHub, which hosts tens of millions of Git repositories, surfaces the master branch prominently throughout its interface.
Because the default branch name is set at the Git level and inherited by GitHub, a change of this magnitude requires coordination across tooling, documentation, CI/CD pipelines, and existing repository histories — making it a non-trivial infrastructure decision for both the platform and its users.
A Movement With Roots Before 2020
Although the 2020 protests gave the effort fresh momentum, the push to remove racially charged language from software predates that moment by several years:
- 2014: The Drupal project replaced “master/slave” with “primary/replica” in its database configuration terminology.
- Subsequently: The Python programming language, the Chromium browser project, Microsoft’s Roslyn .NET compiler, and the PostgreSQL and Redis database systems made similar changes.
Despite those precedents, adoption remained uneven across the industry until 2020, when several high-profile projects committed to change in quick succession.
Other Projects Moving in the Same Direction
Around the same time as GitHub’s announcement, a number of other prominent projects and organizations announced similar intentions:
- Android — committed to replacing blacklist/whitelist with neutral alternatives.
- Go programming language — indicated plans to update its terminology.
- PHPUnit and Curl — stated intentions to adopt inclusive language.
- OpenZFS — replaced master/slave terminology used to describe storage relationships.
- OpenSSL, Ansible, Microsoft PowerShell, and P5.js — were reported to be evaluating or initiating changes to their default branch names.
- LinkedIn — engineer Gabriel Csapo publicly stated he was filing requests to update Microsoft’s internal libraries.
The Git project itself also opened discussion threads on its mailing list and GitHub Issues tracker about officially changing the default branch name, though those discussions attracted significant debate and pushback at the time.
The Counter-Arguments
Not everyone in the technical community supports the changes. Common objections include:
- The terms “master” and “slave” are now used in a purely technical sense to describe hierarchical system relationships, divorced from their historical origins.
- Renaming default branches introduces friction for existing repositories, tooling, scripts, and documentation.
- The word “blacklist,” some argue, derives from the historical practice of keeping “black books” listing problematic individuals, rather than from any racial reference — though this etymology is itself disputed by linguists.
Supporters counter that the technical cost of migration is manageable, that etymology does not negate real-world impact on affected communities, and that the industry regularly updates its vocabulary as understanding evolves.
What Happened Next
GitHub subsequently rolled out tooling to allow repository owners to rename their default branch and, eventually, set main as the default for all newly created repositories. Git itself, as of version 2.28 (released July 2020), introduced the init.defaultBranch configuration option, enabling users and organizations to set their preferred default branch name globally.
GitHub’s participation — given the scale of its platform — was widely seen as a turning point that both legitimized and accelerated adoption of inclusive naming conventions across the open source ecosystem.