[OT] master/slave debate in Python

Chris Angelico rosuav at gmail.com
Wed Sep 26 09:46:06 EDT 2018


On Wed, Sep 26, 2018 at 11:33 PM Ian Kelly <ian.g.kelly at gmail.com> wrote:
>
> On Wed, Sep 26, 2018 at 2:01 AM David Palao <dpalao.python at gmail.com> wrote:
> >
> > Hello,
> > My opinion is that the terms "master/slave" describe well some situations.
> > They could be seen by some people as offensive (although unfortunately
> > sometimes true, even today) when applied to persons. But it is not
> > offensive when applied to processes in a computer. They are not living
> > entities.
> >
> > I would say that when talking about programming, the terms have a
> > perfect meaning.
>
> Care to give an example? The distinctive part of the definition of
> "slave" is that it refers to someone who is owned and/or held captive,
> and forced to work against their will. I can think of no situation in
> programming in which the word is particularly apt, because the trait
> of "lack of freedom" is just not something that comes up. There is
> always a word choice available that is not only more sensitive, but
> more accurate as well.

Lack of freedom? That's exactly what happens *frequently* in any
job-farming situation. For instance, suppose you have an
embarrassingly parallel task to perform - let's say it's some kind of
search for correctness, where as soon as you attempt something, you
know whether it's correct or not. (Examples include crypto, searching
for prime numbers, finding patterns, etc, etc.) A master process hands
out tasks to slave processes; the slaves have no freedom, but must
simply do as they're told. Or you can slave a number of backup
database servers to a master, where the master is in charge of
everything, and the slaves simply follow orders, thus creating perfect
replicas. While it's sometimes correct to talk about "primary" and
"replica", it's also accurate to describe *all* the nodes as replicas
(since they're all identical); and it's entirely possible to have more
than one master, so there isn't really a "primary". So there certainly
are situations in which "slave" is absolutely precisely correct.

Technically, *all* computers lack freedom. But in order to make a
useful distinction here, it's easiest to define "slave" as something
that follows the orders of another program, having no *human*
interaction - in other words, "autonomy" really means "taking orders
from a human". So it's really a hierarchy, with humans at the top, and
a cascade of masters giving orders to slaves, and sometimes those
slaves are themselves the masters of other slaves. (Consider the
Gospel of Matthew, chapter 8, in which Jesus talks to a centurion
about the meaning of authority; the centurion, being a military man,
understands that being a master does not mean he never takes orders.)
The terms "master" and "slave" refer to a specific relationship
between two programs or machines, just as "server" and "client" do (my
program could be an X11 client and an HTTP server, for instance).
Actually, "server" literally means the same thing as "servant" or
"slave", and the only reason it hasn't been excised from the language
is that somehow the non-offensive meaning has become sufficiently
dominant that people would laugh at the implication that it should be
removed.

So rather than removing every trace of the word "slave", how about
instead we go the other way: use it in so many contexts that it loses
its sting everywhere except when referring to humans. In fact, make it
such that a human slave is "a person being treated like a computer",
and thus obviously lacking in basic human rights.

ChrisA



More information about the Python-list mailing list