In 2020, Ripple accelerated our efforts to enhance diversity and inclusion throughout the company. As part of this commitment, we are sharing RippleNet Engineering's initiative to replace language in our codebase that does not align with the reality in which we collectively want to live. This project was inspired especially by the protests last summer denouncing police brutality against Black citizens and the long fight against systemic racism in the United States.
There are terms we are using today in the technology industry that are artifacts of previous eras. Just as we’ve been moving towards a more inclusive and fairer society where we stray away from racist and offensive terms, we should also update our industry’s terminology and discard the false idea that technical terms are without stigma or immune from their historical context.
We found that this exercise comprised two steps. The first task was to identify words and phrases that have racist and problematic origins and determine their better alternatives. The second, trickier part required us to replace all the previously identified terms and, most importantly, keep them out of our vast codebase where hundreds of code changes are pushed across several repositories every day.
Some of the terms we replaced include:
- Master / slave – In computing architecture, these words describe a hierarchy where one system controls and orchestrates a multitude of others. One node sends out instructions while the other nodes carry out the tasks. It’s a word pairing in poor taste, especially considering that we, collectively, are still trying to resolve generationally compounding injustices that originated from slave labor during the birth of the nation. We emancipated slavery in 1865, so it’s long overdue to emancipate the word from our technical vocabulary. In place of "master / slave," we chose to use "primary / secondary." Similarly, we renamed the "master" Git branch to "main."
- Blacklist / whitelist – These words relate to access control in which we classify items that are denied or allowed. The dictionary definition of the word "blacklist" (noun) is as follows: 1) a list of persons who are disapproved of or are to be punished or boycotted, 2) a list of banned or excluded things of disreputable character. The word pair “blacklist / whitelist” perpetuates the idea of “black equals bad” and “white equals good,” a harmful dichotomy when used in a cultural scope. Instead of “blacklist / whitelist,” we use the words “denylist / allowlist.”
These terms are no longer a reflection of our current times and values, so they should be removed and kept out of our technical vocabulary and code.
Once we identified problematic terms, it was time to dive into the engineering problem that followed. Namely, we needed to change every primary Git branch from “master” to “main,” and to come up with a solution that continuously corrected language in our codebase.
In the most simple case of removing terms from a single file or renaming a single Git branch to “main,” the solution is easy and achievable within a few minutes. On the other hand, removing the terms from numerous files across multiple repositories as well as renaming Git branches to which copious commits were pushed each day, was much more complex. In the second post of this series, we'll dive into the technical details of our solution.
If you are interested in learning more about Engineering at Ripple, check out our team page.
Photo by Omar Flores on Unsplash