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] Historically, the master/slave terminology has existed for decades, although in the 21st century it has been a subject of controversy due to its association with slavery, and some organizations and products have since replaced it with alternative terms.[4][5]


  • 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.
    • D flip-flops can be created by arranging two D 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.

Terminology concerns[edit]

In 2003, the County of Los Angeles in California asked that manufacturers, suppliers and contractors stop using "master" and "slave" terminology on products; the county made this request "based on the cultural diversity and sensitivity of Los Angeles County".[6][7] Following outcries about the request, the County of Los Angeles issued a statement saying that the decision was "nothing more than a request".[6] Following the controversy, Global Language Monitor found the term "master/slave" to be the most egregious example of political incorrectness in 2004, and named it the most politically incorrect term of that year.[8] In 2018, Python replaced the term, after a heated debate. Many developers in the discussion on whether to make the replacement agreed that the term "slave" should be replaced while "master" was not offensive, while 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.[9] The Black Lives Matter movement sparked that discussion again in 2020. Some have argued that the change is superficial and that companies should make real change to support the black community.[10][5] See also similar concerns regarding the technology term "Blacklist".

In 2020, the Open Compute Project published Terminology Guidelines for Inclusion and Openness which recommends general terminology and commonly used pinout and signal names which to deprecate and suggested replacement terminology.[11]


Different phrases have been adopted to replace existing usage of the phrase. Some examples include:

Jenkins software project has phased out the words "master/slave" and replaced them with "controller" / "agent".[12]
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.[13]
In May 2014, Django replaced "master/slave" with "leader/follower" in its documentation,[14] and then within two days replaced that with "primary/replica".[15][16][5] In June 2014, Drupal replaced "master/slave" with "primary/replica", drawing inspiration from Django.[17] This has also been adopted by Microsoft and Amazon Web Services/Amazon Relational Database Service.[18][19]
The master/replica terminology was adopted by Engine Yard and Redis.[20][21]
In July 2020, MySQL announced that it would replace "master/slave" with "source/replica" in future releases.[22]
The master/standby terminology was adopted by PostgreSQL.[23]
The master/minion terminology was adopted by Salt.[24]
The provider/consumer terminology was adopted by OpenLDAP.[25]
The master/puppet terminology was adopted by Godot Engine.[26]
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.[27]
The HDMI specification is using "Initiator" and "Follower" for the CEC communication protocol.[28]
GitHub made the switch from "master" to "main" in October 2020.[29][30]
The Modbus Organization replaced "Master-Slave" with "Client-Server" in July 2020.[31]
In 2021, Adobe updated the terminology included in their Creative Cloud suite of apps, replacing "master" with "source" or "mix", or in some cases outright removing the term, as well as replacing the term "blacklist" with "blocklist".[32]
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.[9][33] The Linux kernel has adopted a similar policy to use more specific terms in new code or documentation.[34]

See also[edit]


  1. ^ "Master-slave terminology alternatives you can use right now".
  2. ^ Description of the Microsoft Computer Browser Service from Microsoft KnowledgeBase
  3. ^ "Microsoft Support".
  4. ^ Ellis, Leonard (2020-06-18). "It's Time for IEEE to Retire 'Master / Slave'". EE Times. Retrieved 2020-09-26.
  5. ^ a b c "Tech Confronts Its Use of the Labels 'Master' and 'Slave'". Wired. ISSN 1059-1028. Retrieved 2020-07-14.
  6. ^ a b "'Master' and 'slave' computer labels unacceptable, officials say". CNN. November 26, 2003.
  7. ^ Master/Slave, Snopes
  8. ^ 'Master/slave' named most politically incorrect term, Seattle PI, December 2, 2004, The computer term "master/slave," which was banned as racially offensive by a Los Angeles County purchasing department.
  9. ^ a b "'Master/Slave' Terminology Was Removed from Python Programming Language". September 13, 2018. Retrieved 2020-07-14.
  10. ^ Shankland, Stephen (2020-06-10). "Tech terms face scrutiny amid anti-racism efforts". CNET. Retrieved 2020-07-06.
  11. ^
  12. ^ "Jenkins Terminology Changes".
  13. ^ "ISC explanation via Twitter".
  14. ^ "#22667 replaced occurrences of master/slave terminology with leader/follower by fcurella · Pull Request #2692 · django/django". GitHub. Retrieved 2020-07-14.
  15. ^ "Fixes #22667. Replaced leader/follower terminology with primary/replica by fcurella · Pull Request #2694 · django/django". GitHub.
  16. ^ "Multiple databases". Django Project. Retrieved 2018-05-08.
  17. ^ "Replace "master/slave" terminology with "primary/replica"". 2014-05-28. Retrieved 2018-04-17.
  18. ^ "Working with Read Replicas of MariaDB, MySQL, and PostgreSQL DB Instances – Amazon Relational Database Service". Retrieved 2018-05-08.
  19. ^ "Configure Database Replicas for Management Points". Retrieved 2018-05-08.
  20. ^ "Replication – Redis". Retrieved 2020-07-13.
  21. ^ "Set Up Database Replication". Engine Yard Developer Center. Retrieved 2018-05-08.
  22. ^ Gryp, Kenny (2020-07-01). "MySQL Terminology Updates". MySQL High Availability. Retrieved 2020-07-02.
  23. ^ "PostgreSQL: Documentation: 8.2: High Availability and Load Balancing". Retrieved 2020-07-14.
  24. ^ "Configuring the Salt Minion". SaltStack Inc. Retrieved 2019-04-19.
  25. ^ "Update wording to remove slave and master terms, consolidate on provider/consumer". Retrieved 2020-08-12.
  26. ^ "Godot Engine MultiplayerAPI documentation". Retrieved 2020-10-17.
  27. ^ "A Resolution to Redefine SPI Signal Names". Open Source Hardware Association. 2020-06-29. Retrieved 2020-10-28.
  28. ^ "HDMI specification 1.4b". 2020-11-13. Retrieved 2020-11-13.
  29. ^ "GitHub abandons 'master' term to avoid slavery row". June 15, 2020 – via
  30. ^ "GitHub to replace master with main starting in October: What developers need to do now". TechRepublic.
  31. ^ "Modbus Organization Replaces Master-Slave with Client-Server" (PDF). July 9, 2020 – via
  32. ^ "List of terms changed in Adobe Premiere Pro, Adobe After Effects, and Adobe Audition". Retrieved 2021-03-26.
  33. ^ "Issue 34605: Avoid master/slave terminology - Python tracker". Retrieved 2020-07-13.
  34. ^ Cimpanu, Catalin. "Linux team approves new terminology, bans terms like 'blacklist' and 'slave'". ZDNet.