There are a number of words that we use in software, hardware, engineering etc... that can be interpreted with racist, sexist, violent or bigoted undertones. And even if the original intent of these words are a completely different story, encountering these terms without further context can be harmful, offensive or triggering, and have a negative impact on minorities and other people with negative associations with the terms.
If we wish to be truly inclusive as an industry, and let's face it, we know we've struggled... we should do everything we can to change these terms everywhere we use them.
As Clockwork say in their blog post:
It’s not hard to see that associating positive things with “white” (like whitelisted) and negative things with “black” (like blacklisted) is, at worst, deeply offensive and at best entirely unnecessary. So let’s change it.
If you would like to publically indicate your support of this initiative, and take a pledge to commit to replacing exclusive terminology wherever you can, please feel free to submit a pull request adding yourself to this document.
Any contributions are subject to our Contributing document.
Used as the default branch in Git along with many other
Alternatives:
primary
main
default
develop
(git)trunk
(git)stable
(git)
Where are these changes happening?
- Git:
There is movement within the Git ecosystem
to replace the default branch name
master
with alternatives. There is an open issue on GitLab, and Nat Friedman has said on twitter that GitHub is working on renaming the default branch. See the github/renaming repository for more info.
Beyond this, it is already possible for you to change the default branch of your repostories on GitHub (and most other Git platforms). Simply push a branch with the new name you would like, and change repository settings. If you have a lot of GitHub repositories to deal with, here is a tool to do it automatically using the API.
Alternatives:
Many of these alternatives provide an even clearer and more accurate representation of the relationship between different entities in a system:
primary
/secondary
leader
/follower
active
/standby
,failover
primary
/replica
writer
/reader
coordinator
,conductor
,manager
/worker
,helper
parent
/child
,helper
Where are these changes happening?
Alternatives:
index
/ detail
Alternatives:
plug
/ socket
plug
/ jack
Alternatives:
blocklist
,denylist
/allowlist
,permitlist
Where are these changes happening?
Alternatives:
meddler in the middle
,monster in the middle
If you care about inclusivity... Yes.
The original intent of the terms does not change the impact it has on someone when they see it without that context.
That's what Semantic Versioning is for!
If you have an API that uses these terms in it, then to fully adopt these changes, you'll need to change your API. Like any breaking change, you can depricate the old terms / symbols / parameters / etc... and then remove them in the next major version bump!
We've been known to bump major versions of software for smaller changes than this, and this is totally worth it!
You may find the following resources useful, some of them have helped inspire this document:
- IETF - Terminology, Power and Oppressive Language
- Clockwork - Creating inclusive naming conventions in technology
We welcome Pull Requests that:
- Sign the pledge.
- Add additional terms that should be avoided, with alternatives offered.
- Add examples of technical (software, hardware, engineering, etc...) projects or products that have decided to make these changes.
- Expand the FAQ or any other textual elements.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.