[ 
https://issues.apache.org/jira/browse/COUCHDB-2248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14009743#comment-14009743
 ] 

Sean B. Palmer commented on COUCHDB-2248:
-----------------------------------------

The OED separates the sense of "mastering" from "master-slave" as follows:

(I) In the sense of mastering: master, n.1. 10. "b. an original (of a sound 
recording, film, data file, etc.) from which copies may be made."

(II) In the sense of master-slave: master-slave adj., in master, n.1. "(a) gen. 
involving a master and a slave; relating to masters and slaves; (b) chiefly 
Electronics and Computing, designating or relating to a system in which one 
component controls the behaviour of one or more other components."

CouchDB uses master in sense (I), not in sense (II). In fact, master-slave 
should not apply, etymologically speaking, to database replication. As all of 
the quotes in the OED show, since the c.1940s when the term was coined, the 
meaning of master-slave in the technology sense has been when some component 
"controls the behaviour of one or more other components".

The sense has now obviously been extended in colloquial usage at least to cover 
database replication, since it is presently used in CouchDB. But the metaphor 
makes sense only for the original meaning. A mechanism whose behaviour is 
controlled by another mechanism is in a fairly literal "master-slave" 
relationship, modulo the emotive elements of the term, whereas a database is 
information, and does not actually perform the replication itself.

A better metaphor would be a 3D-printer bashing out copies (something that used 
to be confined to the likes of Star Trek: TNG).

But this is mostly background. The main point that I want to draw attention to 
here is that senses (I) and (II) are entirely separate. They come from separate 
environments, they developed separately, and they have separate meanings.

The oldest dating for sense (I) is 1904. The oldest dating for sense (II) is 
1940. So the concept of mastering emerged several decades before the concept of 
master-slave. Not only that, but the former emerged in the context of 
phonography, whereas the first recorded instance of the latter is made by a 
famous horologist, Frank Hope-Jones. (Hope-Jones is also responsible for 
inventing the Greenwich radio pips broadcast by the BBC.)

Django have gone with "primary-replica", subsequent to the suggestion of 
"leader-follower". Both "primary" and "leader" are inferior to "master" in the 
sense of mastering, sense (I), because mastering has the meaning of 
inviolability as the version from which all copies are sourced. Neither 
"leader" nor "primary" have this meaning.

On the other hand, "slave" is unreasonably senseless, and in master-slave the 
term "master" is used in an entirely different sense, sense (II), from that 
which is intended for CouchDB, which is sense (I). Therefore, from this point 
of view, the term "slave" can be replaced. Programming is a very logical 
discipline, but the use of "slave" is not logical.

Since a master database is either cloned or replicated, the nominal forms of 
the verbs "clone" or "replicate" are entirely suitable, and a master-clone or 
master-replica relationship is certainly more logical.

Earlier in this thread, however, Robert Newson commented that the "suggestion 
to use 'replica' instead of slave is misguided. Both the 'master' and 'slave' 
are replicas (it would not be an error to talk of a 'master replica' and a 
'slave replica' in my opinion)."

This argument is stymied by the unusual tautology.

If "master-slave" is understood here in its etymologically and semantically 
suspect sense of database replication, then just saying "master" instead of 
"master replica" should be sufficient; and likewise with "slave". If, on the 
other hand, the terms "master" and "slave" need to be used only as qualifiers 
of "replica", then it is evidence that "master-slave" is not yet suitably 
established for referring to databases.

So if you accept this argument, then "replica" is redundant and it can be used 
in place of "slave". If you do not accept this argument, then "master-slave" is 
even more semantically dubious than I have indicated, and the argument for 
finding an alternative, whatever it may be, is furthered. The former of the two 
scenarios, that "replica" is available for use as Alexander Shorin suggests, is 
most likely.

I have shown that as "mastering" (sense I) is etymologically distinct to 
"master" (sense II), there can be no reasonable moral objection to it. I have 
also shown that as the meaning of sense I is superior to that of sense II in 
the present context, there can be no reasonable nomenclatural objection to it. 
The situation is reversed for "slave". It only appears in sense II, which has 
contested moral integrity. Moreover, the metaphor does not really make sense, 
whereas "replica" or "clone" certainly do. These terms are also compatible with 
existing terminology. You should pick from these candidates.


> Replace "master" and "slave" terminology
> ----------------------------------------
>
>                 Key: COUCHDB-2248
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-2248
>             Project: CouchDB
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: Documentation
>            Reporter: Noah Slater
>            Priority: Trivial
>
> Inspired by the comments on this PR:
> https://github.com/django/django/pull/2692
> Summary is: `master` and `slave` are racially charged terms, and it would be 
> good to avoid them. Django have gone for `primary` and `replica`. But we also 
> have to deal with what we now call multi-master setups. I propose "peer to 
> peer" as a replacement, or just "peer" if you're describing one node.
> As far as I can tell, the primary work here is the docs. The wiki and any 
> supporting material can be updated after.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to