[OT] master/slave debate in Python

Ian Kelly ian.g.kelly at gmail.com
Wed Sep 26 11:26:30 EDT 2018


On Wed, Sep 26, 2018 at 7:49 AM Chris Angelico <rosuav at gmail.com> wrote:
>
> On Wed, Sep 26, 2018 at 11:33 PM Ian Kelly <ian.g.kelly at gmail.com> wrote:
> >
> > 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.

The master also must do what it's told. This isn't a characterization
of the relationship between processes; it's just the nature of
programming.

I see you addressed that point below, but note that subordinate
processes *can* often reject tasks. It might be because "I ran out of
memory", or it might be because "I'm already doing something", or even
because "I hadn't heard from you in a while so I assumed there was a
connectivity problem or that your process died, and I correspondingly
initiated an election among my peers and now I'm the master node".

> 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.

Your conclusion does not follow. Just because "primary" is not always
the best term does not mean that "slave" automatically fills the role.

> 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.

"Servant" and "slave" do not have the same connotation. While it's
generally rude or offensive to refer to an individual as a servant,
the use of the word is not seen as a slight to an entire subculture.

> 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.

How about we also plaster the swastika (another symbol that carries
"another meaning") all over everything, all while insisting that it's
just a good luck symbol and that it shouldn't be associated with Nazis
forever, and force anybody who finds it offensive to "get over it" or
suffer in silence. I don't mean to Godwin the thread, but this is no
different than what you're proposing.

Also: a human slave is not "a person being treated like a computer"
and I find it highly disrespectful that you would move to trivialize
slavery like that.



More information about the Python-list mailing list