blob: 419b959515a4a46497e98783795c5ee9d943b813 [file] [log] [blame] [view]
# Respectful Code
Inclusivity is central to Fuchsia's culture, and our values include treating
each other with dignity. As such, it’s important that everyone can contribute
without facing the harmful effects of bias and discrimination. However, terms
in our codebase, UIs, and documentation can perpetuate that discrimination.
This document sets forth guidance which aims to address disrespectful
terminology in code and documentation.
## Policy
Terminology that is derogatory, hurtful, or perpetuates discrimination, either
directly or indirectly, should be avoided.
## What is in scope for this policy?
Anything that a contributor would read while working on Fuchsia, including:
- Names of variables, types, functions, files, build rules, binaries, exported
variables, ...
- Test data
- System output and displays
- Documentation (both inside and outside of source files)
- Commit messages
## Principles
- Be respectful: Derogatory language shouldn’t be necessary to describe how
things work.
- Respect culturally sensitive language: Some words may carry significant
historical or political meanings. Please be mindful of this and use
alternatives.
## How do I know if particular terminology is OK or not?
Apply the principles above. If you have any questions, you can reach out to
fuchsia-community-managers@google.com.
## What are examples of terminology to be avoided?
This list is NOT meant to be comprehensive. It contains a few examples that
people have run into frequently.
| Term | Suggested alternatives |
| --------- | ------------------------------------------------------------- |
| master | primary, controller, leader, host |
| slave | replica, subordinate, secondary, follower, device, peripheral |
| whitelist | allowlist, exception list, inclusion list |
| blacklist | denylist, blocklist, exclusion list |
| insane | unexpected, catastrophic, incoherent |
| sane | expected, appropriate, sensible, valid |
| crazy | unexpected, catastrophic, incoherent |
| redline | priority line, limit, soft limit |
## What if I am interfacing with something that violates this policy?
This circumstance has come up a few times, particularly for code implementing
specifications. In these circumstances, differing from the language in the
specification may interfere with the ability to understand the implementation.
For these circumstances, we suggest one of the following, in order of decreasing
preference:
1. If using alternate terminology doesn't interfere with understanding, use
alternate terminology.
2. Failing that, do not propagate the terminology beyond the layer of code that
is performing the interfacing. Where necessary, use alternative terminology
at the API boundaries.