Django is a server-side framework with the goal of making Pythonistas'
life sweet. By no means this requires reforming old and widely accepted
database terminology, or feeding fat internet trolls like Feminist
Software Foundation.
Let's look at the famous Zen of Python:
* Special cases aren't special enough to break the rules.
* Although practicality beats purity.
* There should be one-- and preferably only one --obvious way to do it.
And, above all:
* '''Explicit is better than implicit.'''
Here are four reasons, baked in the core of the language, as well as in
the core or the developers' hearts, for why changing this '''clear,
concise and immediately recognized''' terminology is a bad idea.
This terminology has been used for a long time, and by no means those
purely technical terms carry racially charged meanings to users, neither
are they offending in any other way.
This patch replaces all occurrences of "primary/replica" with the good old
"master/slave" together with now unnecessary comments like "referred to as
master/slave by some databases".
--
Ticket URL: <https://code.djangoproject.com/ticket/22707>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Comment:
https://github.com/django/django/pull/2720
--
Ticket URL: <https://code.djangoproject.com/ticket/22707#comment:1>
Comment (by EvilDMP):
Thanks for your comments, and your pull request.
You may be right. Or you may be wrong.
It's clearly an issue that seems to mean a lot to a lot of people. It's
not one that can be satisfactorily resolved in Trac or GitHub issues.
Whatever we do about this, we're not going to do it on the basis of
whatever latest pull request that has come in.
For now, we're going to leave it as `master/replica`. Time will tell
whether that's the best solution. If it still seems glaringly wrong to you
in six months' time, say, feel free to raise it again, but in the
meantime, please accept that it's going to stay like that for the time
being.
--
Ticket URL: <https://code.djangoproject.com/ticket/22707#comment:2>
* status: new => closed
* resolution: => wontfix
--
Ticket URL: <https://code.djangoproject.com/ticket/22707#comment:3>
Comment (by anonymous):
Ok, then, why the first commit with that change was merged, instead of
telling the author to wait 6 months?
--
Ticket URL: <https://code.djangoproject.com/ticket/22707#comment:4>
Comment (by Noah Slater <nslater@…>):
Sean B. Palmer did some research on this topic for CouchDB after I opened
a similar bug on that project.
https://issues.apache.org/jira/browse/COUCHDB-2248?focusedCommentId=14009743#comment-14009743
He argues that master/slave was originally used to refer to hardware that
controls other hardware. It has since been borrowed for databases, but
doesn't make conceptual sense as databases are in the business of copying
data, not controlling the behaviour of each other.
There is a separate sense of the word master meaning the primary copy of
something. We use this sense when we talk about master recordings. The two
senses seem to have been confused with each other. When we speak about
master databases, we're talking about master records. And so replica,
copy, or clone are obvious parings.
I thought this was interesting because I am in favour of retiring words
that a discriminatory or offensive to people, regardless of how logical it
is. But this is a clear argument that supports the change while also
neatly explaining why talking about master branches in Git and so on is
fine.
--
Ticket URL: <https://code.djangoproject.com/ticket/22707#comment:5>