Opened 4 years ago

Closed 4 years ago

#22667 closed Cleanup/optimization (fixed)

Replace occurrences of master/slave terminology with leader/follower

Reported by: Flavio Curella Owned by: nobody
Component: Documentation Version: 1.6
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


The docs and some tests contain references to a master/slave db configuration.

While this terminology has been used for a long time, those terms may carry racially charged meanings to users.

This patch replaces all occurrences of master and slave with 'leader' and 'follower'

Change History (14)

comment:1 Changed 4 years ago by Flavio Curella

comment:2 Changed 4 years ago by Flavio Curella

Has patch: set

comment:3 Changed 4 years ago by Tim Graham

Resolution: fixed
Status: newclosed

Fixed in 73a57b06f9d8c963b9be2bdb83122a004a4a8b0b.

For future reference, please note our commit message guidelines so that the ticket will be automatically closed when the PR is merged, thanks.

comment:4 Changed 4 years ago by Sasha Romijn

I can definitely see the point of this ticket, but I'm worried that this particular change significantly reduces the readability of the documentation, especially for those less familiar with database terminology or not native English. Personally, I had never heard of leader/follower in the context of SQL replication before, and I'm not sure how fast I would have figured out, if I had not seen this ticket. In addition, we've also replaced all references to master in the multi-db support, where it does not seem to be used in master/slave context.

PostgreSQL uses master/slave or primary/standby, and MySQL only uses master/slave. Heroku mixes follower and slave. I've also heard replica in the past, which is my favourite (standby suggests cold to me).

Suggestion: use the terminology master and replica. On the first use of replica in each document, add: "(referred to as slave or standby by some databases)". That seems like a good middle ground to me between avoiding problematic historical associations and keeping our documentation readable and understandable, even by those new to development or not being native English speakers.

comment:5 Changed 4 years ago by Aymeric Augustin

I share Erik's concerns. Making Django's docs more difficult to understand for the people who need them most, for the sake of political correctness, seems like a bad tradeoff. Besides, it would have been polite to wait for feedback -- especially constructive feedback about non-loaded terms that are more consistent with the vocabulary of supported databases -- instead of rushing this ticket before anyone could contribute.

comment:6 Changed 4 years ago by Aymeric Augustin

Has patch: unset
Resolution: fixed
Status: closednew
Triage Stage: UnreviewedAccepted

comment:7 Changed 4 years ago by Flavio Curella

FWIW, I'm ok with any of the proposed terminologies (basically anything that's not master/slave).
I'm volunteering to do the work of making another PR as soon as we reach a rough consensus. Let's just not have too long of a bikeshed

comment:8 Changed 4 years ago by Aymeric Augustin

If we want to avoid master and slave (I don't see the need, but I won't stand in the way) I suggest "primary" and ("replica" or "standby"). These appear to be the least ambiguous terms. "standby" has the advantage of being PostgreSQL terminology, "replica" of being a bit more explicit (at least to me).

comment:9 Changed 4 years ago by Flavio Curella

primary/replica sounds good to me. I'd like to wait for erikr's opinion before proceeding, since he raised the initial concern.

EDIT: to clarify, i'd be ok with master/replica too. It's using master *and* slave that just doesn't sound right.

Last edited 4 years ago by Flavio Curella (previous) (diff)

comment:10 Changed 4 years ago by Aymeric Augustin

If we're sticking with non-standard terminology, we should explain it at the beginning of the multi-db docs, where it's used most heavily.

Let's try not to make this change too exclusive for Django users who haven't been exposed to this kind of activism before -- most haven't.

It goes against our recent efforts to make the docs easier to understand (which, as an unfortunate side-effect, destroyed a lot of their character).

comment:11 Changed 4 years ago by Aymeric Augustin

Flavio, there was a quick discussion in the core team's IRC channel in parallel. Everyone agreed that primary/replica were good choices and that these terms should be defined (if they aren't already). If you can send a new PR that would be most helpful. Thank you.

comment:12 Changed 4 years ago by Flavio Curella

comment:13 Changed 4 years ago by Tim Graham

Has patch: set

comment:14 Changed 4 years ago by Tim Graham <timograham@…>

Resolution: fixed
Status: newclosed

In beec05686ccc3bee8461f9a5a02c607a02352ae1:

Fixed #22667 -- Replaced leader/follower terminology with primary/replica

Note: See TracTickets for help on using tickets.
Back to Top