137 lines
6.1 KiB
Markdown
137 lines
6.1 KiB
Markdown
|
# Language style
|
||
|
|
||
|
Following our [Code of Conduct](code_of_conduct.md) the project aims to
|
||
|
be a space where people are considerate in natural language communication:
|
||
|
|
||
|
There are terms in computing that were probably considered benign when
|
||
|
introduced but are uncomfortable to some. The project aims to de-emphasize
|
||
|
such terms in favor of alternatives that are at least as expressive -
|
||
|
but often manage to be even more descriptive.
|
||
|
|
||
|
## Political Correctness
|
||
|
|
||
|
A common thread in discussions was that the project merely follows some
|
||
|
fad, or that this is a "political correctness" measure, designed to please
|
||
|
one particular "team". While the project doesn't exist in a vacuum and
|
||
|
so there are outside influences on project members, the proposal wasn't
|
||
|
made with the purpose of demonstrating allegiance to any given cause -
|
||
|
except one:
|
||
|
|
||
|
There are people who feel uncomfortable with some terms being used,
|
||
|
_especially_ when that use takes them out of their grave context
|
||
|
(e.g. slave when discussing slavery) and applies them to a rather benign
|
||
|
topic (e.g. coordination of multiple technical systems), taking away
|
||
|
the gravity of the term.
|
||
|
|
||
|
That gets especially jarring when people aren't exposed to such terms
|
||
|
in abstract sociological discussions but when they stand for real issues
|
||
|
they encountered.
|
||
|
|
||
|
When having to choose between using a well-established term that
|
||
|
affects people negatively who could otherwise contribute more happily
|
||
|
and undisturbed or an alternative just-as-good term that doesn't, the
|
||
|
decision should be simple.
|
||
|
|
||
|
## Token gesture
|
||
|
|
||
|
The other major point of contention is that such decisions are a token
|
||
|
gesture that doesn't change anything. It's true: No slave is freed
|
||
|
because coreboot rejects the use of the word.
|
||
|
|
||
|
coreboot is ambitious enough as-is, in that the project offers
|
||
|
an alternative approach to firmware, sometimes against the vested
|
||
|
interests (and deep pockets) of the leaders of a multi-billion dollar
|
||
|
industry. Changing the preferred vocabulary isn't another attempt at
|
||
|
changing the world, it's one thing we do to try to make coreboot (and
|
||
|
coreboot only) a comfortable environment for everybody.
|
||
|
|
||
|
## For everybody
|
||
|
|
||
|
For everybody, but with a qualifier: We have certain community etiquette,
|
||
|
and we define some behavior we don't accept in our community, both
|
||
|
detailed in the Code of Conduct.
|
||
|
|
||
|
Other than that, we're trying to accommodate people: The CoC lays out
|
||
|
that language should be interpreted as friendly by default, and to be
|
||
|
graceful in light of accidents. This also applies to the use of terms
|
||
|
that the project tries to avoid: The consequence of the use of such
|
||
|
terms (unless obviously employed to provoke a reaction - in that case,
|
||
|
please contact the arbitration team as outlined in the Code of Conduct)
|
||
|
should be a friendly reminder. The project is slow to sanction and that
|
||
|
won't change just because the wrong kind of words is used.
|
||
|
|
||
|
## Interfacing with the world
|
||
|
|
||
|
The project doesn't exist in a vacuum, and that also applies to the choice
|
||
|
of words made by other initiatives in low-level technology. When JEDEC
|
||
|
calls the participants of a SPI transaction "master" and "slave", there's
|
||
|
little we can do about that. We _could_ decide to use different terms,
|
||
|
but that wouldn't make things easier but harder, because such a deliberate
|
||
|
departure means that the original terms (and their original use) gain
|
||
|
lots of visibility every time (so there's no practical advantage) while
|
||
|
adding confusion, and therefore even more attention, to that situation.
|
||
|
|
||
|
Sometimes there are abbreviations that can be used as substitutes,
|
||
|
and in that case the recommendation is to do that.
|
||
|
|
||
|
As terms that we found to be best avoided are replaced in such
|
||
|
initiatives, we can follow up. Members of the community with leverage
|
||
|
in such organizations are encouraged to raise the concern there.
|
||
|
|
||
|
## Dealing with uses
|
||
|
|
||
|
There are existing uses in our documentation and code. When we decide to
|
||
|
retire a term that doesn't mean that everybody is supposed to stop doing
|
||
|
whatever they're doing and spend their time on purging terms. Instead,
|
||
|
ongoing development should look for alternatives (and so this could come
|
||
|
up in review).
|
||
|
|
||
|
People can go through existing code and docs and sort out older instances,
|
||
|
and while that's encouraged it's no "stop the world" event. Changes
|
||
|
in flight in review may still be merged with such terms intact, but if
|
||
|
there's more work required for other reasons, we'd encourage moving away
|
||
|
from such terms.
|
||
|
|
||
|
This document has a section on retired terms, presenting the rationale
|
||
|
as well as alternative terms that could be used instead. The main goal is
|
||
|
to be expressive: There's no point in just picking any alternative term,
|
||
|
choose something that explains the purpose well.
|
||
|
|
||
|
As mentioned, missteps will happen. Point them out, but assume no ill
|
||
|
intent for as long as you can manage.
|
||
|
|
||
|
## Discussing words to remove from active use
|
||
|
|
||
|
There ought to be some process when terminology is brought up as a
|
||
|
negative to avoid. Do not to tell people that "they're feeling wrong"
|
||
|
when they have a negative reaction to certain terms, but also try to
|
||
|
avoid being offended for the sake of others.
|
||
|
|
||
|
When bringing up a term, on the project's mailing list or, if you don't
|
||
|
feel safe doing that, by contacting the arbitration team, explain what's
|
||
|
wrong with the term and offer alternatives for uses within coreboot.
|
||
|
|
||
|
With a term under discussion, see if there's particular value for us to
|
||
|
continue using the term (maybe in limited situations, like continuing
|
||
|
to use "slave" in SPI related code).
|
||
|
|
||
|
Once the arbitration team considers the topic discussed completely and
|
||
|
found a consensus, it will present a decision in a leadership meeting. It
|
||
|
should explain why a term should or should not be used and in the latter
|
||
|
case offer alternatives. These decisions shall then be added to this
|
||
|
document.
|
||
|
|
||
|
## Retired terminology
|
||
|
|
||
|
### slave
|
||
|
|
||
|
Replacing this term for something else had the highest approval rating
|
||
|
in early discussions, so it seems pretty universally considered a bad
|
||
|
choice and therefore should be avoided where possible.
|
||
|
|
||
|
An exception is made where it's a term used in current standards and data
|
||
|
sheets: Trying to "hide" the term in such cases only puts a spotlight
|
||
|
on it every time code and data sheet are compared.
|
||
|
|
||
|
Alternatives: subordinate, secondary, follower
|