[ 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)