Master/slave (technology)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Master/slave is a model of asymmetric communication or control where one device or process (the "master") controls one or more other devices or processes (the "slaves") and serves as their communication hub. In some systems, a master is selected from a group of eligible devices, with the other devices acting in the role of slaves.[1][2][3]

The master/slave terminology was first used in 1904.[4] Since the early 21st century, it has become a subject of controversy from its association with slavery and organizations and products began replacing them with alternative terms.[5][6][7]

Examples[edit]

  • In electronics, master/slave relationships are used to describe some of the following scenarios:
    • In parallel ATA hard drive arrangements, the terms master and slave are used to describe drives on the same cable, but neither drive has control or priority over the other.
    • A master clock that provides time signals used to synchronize one or more slave clocks as part of a clock network.
    • In AXI, master and slave have differing roles, with master initiating transactions and the slave responding to those transactions.
    • Edge-triggered flip-flops can be created by arranging two latches (master latch and slave latch) in a master-slave configuration. It is named because the master latch controls the slave latch's value and forces the slave latch to hold its value, as the slave latch always copies its new value from the master latch.
  • In database replication, the master database is regarded as the authoritative source, and the slave (also called replica) databases are synchronized to it.
  • In photography, secondary or slave flash units may be synchronized to the master unit to provide light from additional directions.
  • Duplication is often done with several cassette tapes or compact disc recorders linked together. Operating the controls on the master triggers the same commands on the slaves so that recording is done in parallel.
  • Railway locomotives operating in multiple (for example: to pull loads too heavy for a single locomotive) can be referred to as a master/slave configuration with the operation of all locomotives in the train slaved to the controls of the first locomotive. See Multiple-unit train control.
  • In automotive engineering, the master cylinder is a control device that converts force into hydraulic pressure in the brake system. This device controls slave cylinders located at the other end of the hydraulic system.

Early usages[edit]

The master/slave terminology was used in 1988 for RFC 1059 and in 1997 for RFC 2136, related to the domain name system. In 2020, Paul Vixie commented on his choice of words:

I introduced the master/slave terminology in RFC 2136, because I needed names for the roles in an AXFR/IXFR transaction, and the zone transfer hierarchy could be more than one layer deep, such that a server might initiate some AXFR/IXFR's to the "primary master" but then respond to AXFR/IXFR's from other servers. In retrospect I should have chosen the terms, "transfer initiator" and "transfer responder". However, the hydraulic brake and clutch systems in my car had "master cylinders" and "slave cylinders", and so I did not think I was either inventing a new use for the words "master" and "slave", or that my use of them for this purpose would be controversial.[8]

Said hydraulic brakes for the automotive industry were patented in 1917 by Malcolm Loughead.[9] The term "slave cylinder" was used in other patent applications including one by Robert Esnault-Pelterie, published in 1919.[10]

Terminology concerns[edit]

In 2003 after receiving a discrimination complaint from a county employee, the County of Los Angeles in California asked that manufacturers, suppliers and contractors stop using "master" and "slave" terminology on products. The county supported the request "based on the cultural diversity and sensitivity of Los Angeles County."[11][12] Following outcries about the request, the County of Los Angeles issued a statement saying that the decision was "nothing more than a request".[11] The media analytics company Global Language Monitor placed the term first in their annual list of politically charged language for 2004 with their president commenting that the term was "the most egregious example of political correctness" of the year.[13] In 2018, the Python programming language replaced the term, after a heated debate. Many developers in the discussion agreed that the term "slave" should be replaced while "master" was not offensive, while still others argued that changing "slave" was also unnecessary. There was similarly contentious debate among developers when Django and Drupal (in 2014) and Redis (in 2017) replaced the term.[14] The Black Lives Matter movement sparked that discussion again in 2020.[citation needed] Some have argued that the change is superficial and that companies should make real change to support the black community.[15][6] Google's Developer Documentation Style Guide recommends avoiding the term "master" in software documentation, especially in combination with "slave."[16]

Possible replacement conventions[edit]

Different phrases have been adopted to replace existing usage of the phrase but there is little consensus.[original research?] Some examples include:

Chief/Worker
Google TensorFlow is using the terms chief and worker for distributed training strategies.[17]
Client/Server
The Modbus Organization replaced "Master-Slave" with "Client-Server" in July 2020.[18] This new Modbus terminology replaces Master with Client, and Slave with Server, thus a Modbus network has a single client (ex-master) with multiple servers (ex-slaves). This has caused some confusion as a usual office PC computer network would have a single server with multiple clients (i.e. PC users), and is the reverse of, for example, Python, where Master was replaced with Server. In the case of Modbus, the client (main controller) is the only device on the network that can initiate a transfer requesting the data, and the servers (e.g. sensors) are the ones serving the data in response.
Controller/Agent
Jenkins software project has phased out the words "master/slave" and replaced them with "controller/agent".[19]
Controller/Peripheral
In June 2020, the Open Source Hardware Association resolved to discontinue terms such as MOSI/MISO used for the SPI bus, instead opting for the acronyms COPI/CIPO, though this group is not the owner of the SPI bus specification.[20]
Controller/Target
In June 2021, the I3C bus changed from "master/slave" to "controller/target". The I²C bus followed in October 2021. [21]
Host/Device
Though sometimes described as a "master/slave" protocol, the USB communication standard generally uses the terms "Host" and "Device" to refer to the roles of USB controller and USB peripheral.[22]
Initiator/Follower
The HDMI specification is using "Initiator" and "Follower" for the CEC communication protocol.[23]
Main
GitHub renamed the default branch from "master" to "main" in October 2020.[24][25] Git continues to use "master" as the default branch name for git init for backwards compatibility and is considering to change it in the future.[26] Some people find this replacement questionable, as "master" refers to its meaning of master copy or original rather than master/slave.[27][28][29]
Main-Parent-Server/Worker-Child-Helper
In 2018, Python replaced uses of the term "master" variously with "main", "parent", and "server"; and "slave" with "worker", "child", and "helper", depending on the context.[14][30] The Linux kernel has adopted a similar policy to use more specific terms in new code or documentation.[31]
Marshal/Soldier
Like master/standby below, marshal/soldier maintains the M/S shorthand while completely removing usage of the term "slave". (Marshal/Soldier also accounts for the fact that the soldier [standby] nodes are not always in standby mode -- i.e., sometimes they are active, perhaps somewhat like soldiers -- and additionally completely avoids using the term "master".)
Master/Minion
The master/minion terminology was adopted by Salt.[32]
Master/Puppet
The master/puppet terminology was adopted by Godot Engine.[33]
Master/Replica
The master/replica terminology was adopted by Engine Yard and Redis.[34][35]
Master/Satellite
AUTOSAR organization is using the terms master and satellite for inter partition communication.[36]
Master/Standby
The master/standby terminology was adopted by PostgreSQL.[37]
Primary/Replica
In May 2014, Django replaced "master/slave" with "leader/follower" in its documentation,[38] and then within two days replaced that with "primary/replica".[39][40][6] In June 2014, Drupal replaced "master/slave" with "primary/replica", drawing inspiration from Django.[41] This has also been adopted by Google, Microsoft, and Amazon Web Services/Amazon Relational Database Service.[42]

[43][44]

Primary/Secondary
In December 2017, the Internet Systems Consortium decided to allow the words "primary" and "secondary" as a substitute for master/slave terminology in their DNS server software BIND.[45]
Primary Password
In 2021 the Mozilla Firefox web browser replaced the phrase "Master Password" with "Primary Password" due to concerns that the master/slave terms "perpetuate racism".[46]
Provider/Consumer
The provider/consumer terminology was adopted by OpenLDAP.[47]
Source/Mix/Parent
In 2021, Adobe updated the terminology included in their Creative Cloud suite of apps, replacing "master" with "source", "mix" or "parent", or in some cases outright removing the term, even though "master" refers to the meaning of "master copy" (original) or global settings, instead of master/slave. They also replaced the term "blacklist" with "blocklist".[48]
Source/Replica
In July 2020, MySQL announced that it would replace "master/slave" with "source/replica" in future releases.[49] The change was made in October 2020.[50]

See also[edit]

References[edit]

  1. ^ "Master-slave terminology alternatives you can use right now". TheServerSide.com.
  2. ^ Description of the Microsoft Computer Browser Service from Microsoft KnowledgeBase
  3. ^ "Microsoft Support". support.microsoft.com.
  4. ^ Eglash, Ron (2007). "Broken Metaphor: The Master-Slave Analogy in Technical Literature". Technology and Culture. 48 (2): 360–369. doi:10.1353/tech.2007.0066. S2CID 1358719.
  5. ^ Ellis, Leonard (2020-06-18). "It's Time for IEEE to Retire 'Master / Slave'". EE Times. Retrieved 2020-09-26.
  6. ^ a b c "Tech Confronts Its Use of the Labels 'Master' and 'Slave'". Wired. ISSN 1059-1028. Retrieved 2020-07-14.
  7. ^ "'Master/Slave' Terminology Was Removed from Python Programming Language".
  8. ^ Re: DNSOP Question regarding RFC 8499
  9. ^ Loughhead, Malcolm, "Braking apparatus," U.S. Patent no. 1,249,143 (filed: 1917 January 22 ; issued: 1917 December 4).
  10. ^ "Hydraulic power transmission installation".
  11. ^ a b "'Master' and 'slave' computer labels unacceptable, officials say". CNN. November 26, 2003.
  12. ^ Master/Slave, Snopes
  13. ^ 'Master/slave' named most politically incorrect term, Seattle PI, December 2, 2004, "We found 'master/slave' to be the most egregious example of political correctness in 2004," said Paul JJ Payack, president of The Global Language Monitor.
  14. ^ a b "'Master/Slave' Terminology Was Removed from Python Programming Language". Vice.com. September 13, 2018. Retrieved 2020-07-14.
  15. ^ Shankland, Stephen (2020-06-10). "Tech terms face scrutiny amid anti-racism efforts". CNET. Retrieved 2020-07-06.
  16. ^ "Google Developer Style Guide".
  17. ^ "Distributed training with TensorFlow".
  18. ^ "Modbus Organization Replaces Master-Slave with Client-Server" (PDF). July 9, 2020 – via www.modbus.org.
  19. ^ "Jenkins Terminology Changes". Cd Foundation. 25 August 2020.
  20. ^ "A Resolution to Redefine SPI Signal Names". Open Source Hardware Association. 2020-06-29. Retrieved 2020-10-28.
  21. ^ "I2C-bus specification Rev 7" (PDF). NXP Semiconductors. October 1, 2021.
  22. ^ IEC 62680-3-1: INTERNATIONAL STANDARD: Universal Serial Bus interfaces for data and power – Part 3-1: Universal Serial Bus 3.1 Specification (PDF). International Electrotechnical Commission (IEC). March 2017. ISBN 978-2-8322-1059-7. Archived from the original (PDF) on 2022-04-14. Retrieved 2022-04-14. {{cite book}}: Check |isbn= value: checksum (help)
  23. ^ "HDMI specification 1.4b". 2020-11-13. Retrieved 2020-11-13.
  24. ^ "GitHub abandons 'master' term to avoid slavery row". BBC News. June 15, 2020.
  25. ^ "GitHub to replace master with main starting in October: What developers need to do now". TechRepublic. 22 September 2020.
  26. ^ "Regarding Git and Branch Naming". Software Freedom Conservancy. Retrieved 2020-12-04.
  27. ^ "Easily rename your Git default branch from master to main".
  28. ^ "Git Rev News Edition 65 (July 29th, 2020)".
  29. ^ "Re: Replacing "master" reference in git branch names (Was Re: Proposal".
  30. ^ "Issue 34605: Avoid master/slave terminology - Python tracker". bugs.python.org. Retrieved 2020-07-13.
  31. ^ Cimpanu, Catalin. "Linux team approves new terminology, bans terms like 'blacklist' and 'slave'". ZDNet.
  32. ^ "Configuring the Salt Minion". SaltStack Inc. Retrieved 2019-04-19.
  33. ^ "Godot Engine MultiplayerAPI documentation". Retrieved 2020-10-17.
  34. ^ "Replication – Redis". redis.io. Retrieved 2020-07-13.
  35. ^ "Set Up Database Replication". Engine Yard Developer Center. Retrieved 2018-05-08.
  36. ^ "Guide to Multi-Core Systems" (PDF) – via www.autosar.org.
  37. ^ "PostgreSQL: Documentation: 8.2: High Availability and Load Balancing". www.postgresql.org. 5 December 2011. Retrieved 2020-07-14.
  38. ^ "#22667 replaced occurrences of master/slave terminology with leader/follower by fcurella · Pull Request #2692 · django/django". GitHub. Retrieved 2020-07-14.
  39. ^ "Fixes #22667. Replaced leader/follower terminology with primary/replica by fcurella · Pull Request #2694 · django/django". GitHub.
  40. ^ "Multiple databases". Django Project. Retrieved 2018-05-08.
  41. ^ "Replace "master/slave" terminology with "primary/replica"". Drupal.org. 2014-05-28. Retrieved 2018-04-17.
  42. ^ "Google Developer Style Guide".
  43. ^ "Working with Read Replicas of MariaDB, MySQL, and PostgreSQL DB Instances – Amazon Relational Database Service". docs.aws.amazon.com. Retrieved 2018-05-08.
  44. ^ "Configure Database Replicas for Management Points". technet.microsoft.com. Retrieved 2018-05-08.
  45. ^ "ISC explanation via Twitter".
  46. ^ "Primary Password is replacing Master Password". Mozilla Support. Mozilla Corporation. Archived from the original on 26 December 2021. Retrieved 26 December 2021.
  47. ^ "Update wording to remove slave and master terms, consolidate on provider/consumer". Retrieved 2020-08-12.
  48. ^ "List of terms changed in Adobe Premiere Pro, Adobe After Effects, and Adobe Audition". helpx.adobe.com. Retrieved 2021-03-26.
  49. ^ Gryp, Kenny (2020-07-01). "MySQL Terminology Updates". MySQL High Availability. Retrieved 2020-07-02.
  50. ^ "MySQL :: MySQL 8.0 Release Notes :: Changes in MySQL 8.0.22 (2020-10-19, General Availability)". dev.mysql.com. Retrieved 2021-06-12.