Python is set on changing its “master” and “slave” terminology in its documentation and code. This is to conciliate the people claiming the terminology as offensive. A python developer at Red Hat, Victor Stinner, started a discussion titled “avoid master/slave terminology” on Python bug report, last week.
The bug report discusses changing “master” and “slave” in Python documentation to terms such as “parent”, “worker”, or something similar, based on the complaints received “privately”.
“For diversity reasons, it would be nice to try to avoid ‘master’ and ‘slave’ terminology which can be associated to slavery” mentioned Victor Stinner in the bug report.
Not every Python developer who participated in this discussion agreed with Victor Stinner.
One of the developers in the discussion, Larry Hastings, wrote “I’m a little surprised by this. It’s not like slavery was acceptable when these computer science terms were coined and it’s only comparatively recently that they’ve gone out of fashion. On the other hand, there are some areas in computer software where “master” and “slave” are the exact technical terms (e.g. IDE), and avoiding them would lead to confusion”.
Another Python developer, Terry J. Reedy wrote, “To me, there is nothing wrong with the word ‘master’, as such. I mastered Python to become a master of Python. Purging Python of ‘master’ seems ill-conceived. Like Larry, I object to action based on hidden evidence”.
Python is not the only one who has been under Scrutiny. The Redis community, Django, and Drupal all faced the same issue. Drupal changed the terms “master” and “slave” for “primary” and “replica”. Similarly, Django swapped “master” and “slave” for “leader” and “follower”.
To put an end to this debate about the use of this politically incorrect language, Guido Van Rossum, who resigned as “Benevolent dictator for life” or BDFL in July, but is still active as a core developer, was pulled back in.
Guido ended the discussion by saying, “I’m closing this now. Three out of four of Victor’s PRs have been merged. The fourth one should not be merged because it reflects the underlying terminology of UNIX ptys. There’s a remaining quibble about “pliant children” -> “helpers” but that can be dealt with as a follow-up PR without keeping this discussion open”.
The final commit on this is as follows:
bpo-34605, pty: Avoid master/slave terms
* pty.spawn(): rename master_read parameter to parent_read
* Rename pty.slave_open() to pty.child_open(), but keep an
pty.slave_open alis to pty.child_open for backward compatibility
* os.openpty(), os.forkpty(): rename master_fd/slave_fd
* Rename internal variables:
* Rename master_fd/slave_fd to parent_fd/child_fd
* Rename slave_name to child_name
For more information on the discussion, be sure to check out the official Python bug report.