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.
The master/slave terminology was first used in 1904. Since the early 21st century, the terms have become a subject of controversy from their association with slavery and some organizations have opted to replace them with alternative terms.
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.
Said hydraulic brakes for the automotive industry were patented in 1917 by Malcolm Loughead. The term slave cylinder was used in other patent applications, including one by Robert Esnault-Pelterie, published in 1919.
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. Following complaints, the County of Los Angeles issued a statement saying that the decision was "nothing more than a request". Media analytics company Global Language Monitor placed the term first in their annual list of politically charged language for 2004. In 2018, after a heated debate, developers of the Python programming language replaced the term. The Black Lives Matter movement in the United States sparked renewed discussion and terminology changes in 2020. Some have argued that the change is superficial and that companies should make real change to support the black community. Google's developer documentation style guide recommends avoiding the term master in software documentation, especially in combination with slave.
Various replacement terms for 'master' or 'slave' have been proposed and implemented. In 2020, GitHub replaced the default 'master' git branch with 'main'. Other replacement names include 'default', 'primary', 'controller', 'root', 'initiator', 'leader', 'director'; and for 'slave': 'performer', 'worker', 'peripheral', 'responder', 'device', 'replica', 'satellite', and 'secondary'. Python switched to 'main', 'parent', and 'server'; and 'worker', 'child', and 'helper', depending on context. The Linux kernel has adopted a similar policy to use more specific terms in new code or documentation. Many projects and standards have already used alternative terms since their inception.
"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.