Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid master/slave terminology #78786

Closed
vstinner opened this issue Sep 7, 2018 · 47 comments
Closed

Avoid master/slave terminology #78786

vstinner opened this issue Sep 7, 2018 · 47 comments
Labels
3.8 only security fixes docs Documentation in the Doc dir interpreter-core (Objects, Python, Grammar, and Parser dirs) type-feature A feature request or enhancement

Comments

@vstinner
Copy link
Member

vstinner commented Sep 7, 2018

BPO 34605
Nosy @gvanrossum, @rhettinger, @terryjreedy, @pitrou, @vstinner, @larryhastings, @ericvsmith, @giampaolo, @stevendaprano, @berkerpeksag, @serhiy-storchaka, @ammaraskar, @Mariatta, @csabella, @miss-islington, @tirkarthi
PRs
  • bpo-34605, libregrtest: Avoid master/slave terms #9099
  • bpo-34605, pty: Avoid master/slave terms #9100
  • bpo-34605: Avoid master/slave terms #9101
  • bpo-34605: childs => children #9102
  • bpo-34605: Replace "pliant children" with "helpers" #9195
  • [3.7] bpo-34279: Synchronize regrtest with master #10800
  • [3.6] [3.7] bpo-34279: Synchronize regrtest with master (GH-10800) #10802
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = <Date 2018-09-11.06:33:15.222>
    created_at = <Date 2018-09-07.14:22:00.288>
    labels = ['interpreter-core', 'type-feature', '3.8', 'docs']
    title = 'Avoid master/slave terminology'
    updated_at = <Date 2018-11-29.20:39:08.638>
    user = 'https://github.com/vstinner'

    bugs.python.org fields:

    activity = <Date 2018-11-29.20:39:08.638>
    actor = 'miss-islington'
    assignee = 'docs@python'
    closed = True
    closed_date = <Date 2018-09-11.06:33:15.222>
    closer = 'gvanrossum'
    components = ['Documentation', 'Interpreter Core']
    creation = <Date 2018-09-07.14:22:00.288>
    creator = 'vstinner'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 34605
    keywords = ['patch']
    message_count = 47.0
    messages = ['324739', '324740', '324744', '324747', '324748', '324750', '324752', '324754', '324755', '324756', '324757', '324758', '324759', '324760', '324761', '324762', '324763', '324768', '324773', '324774', '324775', '324776', '324777', '324778', '324780', '324786', '324810', '324816', '324822', '324823', '324825', '324838', '324840', '324841', '324843', '324847', '324849', '324870', '324955', '324995', '325094', '325241', '325247', '325351', '325500', '330721', '330724']
    nosy_count = 17.0
    nosy_names = ['gvanrossum', 'rhettinger', 'terry.reedy', 'pitrou', 'vstinner', 'larry', 'eric.smith', 'giampaolo.rodola', 'steven.daprano', 'berker.peksag', 'serhiy.storchaka', 'ammar2', 'Mariatta', 'Socob', 'cheryl.sabella', 'miss-islington', 'xtreak']
    pr_nums = ['9099', '9100', '9101', '9102', '9195', '10800', '10802']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'enhancement'
    url = 'https://bugs.python.org/issue34605'
    versions = ['Python 3.8']

    @vstinner
    Copy link
    Member Author

    vstinner commented Sep 7, 2018

    For diversity reasons, it would be nice to try to avoid "master" and "slave" terminology which can be associated to slavery.

    For more context, see:

    @vstinner vstinner added the interpreter-core (Objects, Python, Grammar, and Parser dirs) label Sep 7, 2018
    @ammaraskar
    Copy link
    Member

    Do you have examples of where this occurs?

    From https://github.com/python/cpython/search?p=1&q=master+slave&unscoped_q=master+slave I really only found the openpty function, and the man pages/argument names there already use this terminology so it wouldn't make much sense to change it there.

    @vstinner
    Copy link
    Member Author

    vstinner commented Sep 7, 2018

    I'm working on patches to change that.

    @vstinner
    Copy link
    Member Author

    vstinner commented Sep 7, 2018

    IMHO it's ok to keep the "master" term for:

    • Git "master" branch
    • "webmaster"
    • "postmaster"

    To find all impacted files, I used the commend:

    git grep -i -E 'master|slave'|grep -v -E 'webmaster|postmaster|/blob/master/'

    @ammaraskar
    Copy link
    Member

    The libregrtest change looks good but I disagree on the pty/openpty changes. If you look at all the current Linux man pages and documentation, they follow the master/slave terminology. Generally, Python documentation for underlying os functions like fork, stat etc are kept short because the OS documentation is the ultimate resource for them.

    This change causes a deviation from the existing standard and will only serve to make things more confusing, I would suggest deferring it until the actual OS documentation reflects this change as well.

    @terryjreedy
    Copy link
    Member

    Having said that, there are situations where words are used confusingly or inappropriately, and better choices are available. (I am sometimes confused, for instance, by the use of 'client' and 'server'.) In such situations, change can be justified without reference to private complaints.

    @skrah
    Copy link
    Mannequin

    skrah mannequin commented Sep 7, 2018

    I'm using "master" in memoryview because of the audio connotation ("the
    source from which all copies will be produced"):

    https://en.wikipedia.org/wiki/Audio_mastering

    The ManagedBufferObject is literally the source from which all views
    are produced.

    Conductors are sometimes called "Maestro", there are chess grandmasters,
    Tiger Woods won the Masters Tournament, Art Tatum is called a master
    pianist, millions of people hold a master's degree.

    The term "master" has so many positive connotations that I think it is
    misguided to effectively eliminate it from the current English language.

    @stevendaprano
    Copy link
    Member

    I strongly disagree with this as a general principle.

    "Master/slave" is a powerful, obvious metaphor which works well and is not the same as parent/child, server/client or employer/worker.

    In fact, in the BDSM subcultures, "master/slave" can have *positive* connotations. You want to support diversity, then why are you discriminating against that subculture?

    Talking about diversity: my wife is of a nationality that historically were often stolen to be slaves and indentured servants, and were discriminated against as second-class people right well into the second half the middle of the 20th century. My maternal family comes from a racial group (Slavic) which gives us the English word for slave and come from serf background. Both of us are angered by this attack on our linguistic culture. Stop trying to sanitize and infantalize language. That's far more offensive than the master/slave terminology.

    I'm not sorry for this impassioned plea. You want diversity, that includes people like me.

    @suic86
    Copy link
    Mannequin

    suic86 mannequin commented Sep 8, 2018

    @vstinner:

    For diversity reasons, it would be nice to try to avoid "master" and "slave" terminology which can be associated to slavery.

    This is too vague. Define what "diversity reasons" are and elaborate your point. Referring to some online discussions is not a way for making a serious argument. Make a point at least (i.e. define the term, add pro/contra arguments and explain why you've taken your decision). Your political standpoint is your political standpoint and it's not my business. However, making these changes without giving reasons and arguments for them is a problem.

    Let me ask:

    Are these "diversity reasons" really reasons? What I've heard seen so far regarding "diversity reasons, ..." had little to nothing to do with rational thinking or argumentation. Is it really necessary to pollute Python code base with SJW ideology/terminology? What comes next?

    Ad absurdum: If I find anything associated with something unpleasant to me in Python code or something which can be considered as e.g. "cultural appropriation", I'm free to change it for diversity reason?

    @mcepl
    Copy link
    Mannequin

    mcepl mannequin commented Sep 8, 2018

    Guys, really, don't we have anything better to do with your time than this silliness?

    Even if the terminology would be used in the strictest and most brutal meaning, i.e., slave must mindlessly follow orders of its master, there is nothing of approval of the real human slavery in the past (or present). This is just the pretty good terminology for such one-sided relationship which is traditionally used in the computer world. By elimination of the word from the world, not a yota changes about the reality of slavery in the past (or present).

    -1 from me with the extreme violence for introducing such quasi-political nonsense to BPO and wasting everybody's time.

    @suic86
    Copy link
    Mannequin

    suic86 mannequin commented Sep 8, 2018

    @mcepl: I completely agree with you that we shouldn't waste time with this. I would be better not to dig into the discussion about "master-slave" terminology. IMO we don't even need to go into that as the problem here is more substantial:

    This case can create a very problematic precedent i.e. _on can modify (even drastically) a well established terminology based on "pseudo-reasons", political opinion or ideology_.

    IMO this should be stopped and prevented as soon as possible for all sake. On the other hand, I believe the @vstinner is a rational person and he is able to give _rational reasons_ for his decision which other could challenge as "potential offensiveness" of language is not an argument.

    @csabella
    Copy link
    Contributor

    csabella commented Sep 8, 2018

    This is certainly a topic that generates a lot of opinions both ways, not just here, but on many other projects. Based on that, I don't think it's fair to blame Victor for bringing it up for discussion. This is and has been an industry discussion for many years (master/slave as it relates to technology was named the most politically incorrect term in 2004). Victor simply brought it up here.

    All of the same arguments and counterarguments have been mentioned in these past discussions. You can argue that this is ridiculous and political correctness has gone too far. You can argue that this term (master/slave) perfectly reflects the model. You can argue that it's not the same relationship as parent/child. These are probably all valid reasons to not change it. But, I think it's mostly because it's what we're used to.

    Here's an idea -- find a friend and explain to them that there is a concept in computer science where there is a group of 'things' and exactly one of those things is the main point of contact or first in line, but the other things around it that either get direction from that main one, or they are exact copies of that main one, or they are downstream from that main one. Sometimes it's because if the main one isn't available, then one of the others is ready to take its place. Or sometimes it's for other purposes (like IDE). Really set the stage in describing what it is. Then tell them it's called master/slave. They probably won't believe that name because it's a little shocking. We take it for granted, but it doesn't really describe the situation.

    I know I'm simplifying and I'm probably not 100% accurate, but I think you get my point. Except for the fact that it's imbedded in engineering and computer science and we know it, there's not really a reason for it to be called what it is and there might be other alternatives that are better descriptors.

    Personally, one that I've never seen suggested, but one that I think can be used to describe the relationship of "one in charge and others follow, but can take over" would be alpha/omega (as in a wolf pack). It's a little stronger that leader/follower, doesn't imply the same structure as parent/child, and allows for the idea that an omega could take over the role of an alpha. Plus, it's very neutral. Just too bad the guys who originally coined the phrase "master/slave" didn't use "alpha/omega".

    (for the record, political correctness sometimes drives me crazy and I may not see a need to change something like master/slave, but at the same time, I can understand why other people would like to see it changed)

    (second aside - I don't recall that there were arguments a few months ago on the PR to make the docs gender neutral. Maybe people were against that too as being 'too politically correct', but they didn't feel the need to talk about. To me, this issue is similar to that one.)

    @ammaraskar
    Copy link
    Member

    Most of the opposition seems to be against a blanket replacing of all master and slave usages, which seems fairly reasonable to me.

    For example, I'm all for the libregrtest change since it conveys the meaning just as well and is an internal tool. However, changing MemoryView and pty seem way more iffy. These changes are potentially backwards incompatible and actually hurt usability.

    Unlike other projects, Python doesn't have nearly enough uses of this terminology to warrant a massive political discussion in my opinion. Just look at the usages on a case-by-case basis and be done with it.

    @skrah
    Copy link
    Mannequin

    skrah mannequin commented Sep 8, 2018

    I commented here to explain the master <-> view terminology of memoryview.
    If anyone wants to change that, please open a separate issue and add me as
    the author to the nosy list.

    @suic86
    Copy link
    Mannequin

    suic86 mannequin commented Sep 8, 2018

    @cheryl.sabella let me challenge some points in your arguments:

    Based on that, I don't think it's fair to blame Victor for bringing it up for discussion.

    Ok, but where was the discussion? @vstinner didn't even make a point and some of the PRs were merged. Maybe I'm too spoiled by the field where I come from but this can be hardly considered to be "bringing up something for a discussion" when someone doesn't even make a point (like e.g. "I think it should be changed because..."). Ad absurdum I could say: Because of because-it-can-hurt-someones-feelings reasons it would be nice to...

    I don't recall that there were arguments a few months ago on the PR to make the docs gender neutral. Maybe people were against that too as being 'too politically correct', but they didn't feel the need to talk about. To me, this issue is similar to that one.

    _Personally_, I consider that to be the same kind of PC/SJW nonsense and there should've been a similar discussion. However, there's a big difference. Making documentation gender neutral is unnecessary but it doesn't affect any established CS terminology and doesn't introduce artificial terminological inconsistency between related technologies.

    But, I think it's mostly because it's what we're used to.

    Yes, and that's what is established terminology about.

    Here's an idea -- find a friend and explain to them that there is a concept in computer science...

    When you enter a new field a part of your responsibility is to learn its terminology and not voluntarily change it because it somehow affects you (hurts your feelings, not compatible with your political view point etc.). Imagine doing the same thing in physics, chemistry or mathematics. Would you redefine number 1 for diversity reasons (there are ways for making up diversity reasons even for this*)? The terminology used inside a field is primarily for the people who are inside the field and understand it.

    My arguments can sound a bit sarcastic as they try to illustrate the absurdity of this whole issue. They are by no means personal. Seeing all the PC/SJW nonsense around me, I'm afraid that this can be the starting of Python becoming PCython (by which I don't mean a combination of Python with Cython :)).

    @berkerpeksag
    Copy link
    Member

    Personally, I find parent/child more descriptive if it can be used in the same context with master/slave, so I'm in favor of replacing master/slave with parent/child where applicable.

    However, I agree that the code changes in PR 9100 are a bit excessive. It would be nice if we could keep the members of the public API (some of them have already been deprecated) and variable/function/parameter names left out of this cleanup.

    @berkerpeksag berkerpeksag added docs Documentation in the Doc dir type-feature A feature request or enhancement labels Sep 8, 2018
    @skrah
    Copy link
    Mannequin

    skrah mannequin commented Sep 8, 2018

    Trying to remove myself from the nosy list again (I know that the interface sometimes surprisingly adds/removes persons).

    @rhettinger
    Copy link
    Contributor

    Mostly, I don't think these changes should be made, particularly in cases where "slave" isn't mentioned at all. The word "master" is used in many contexts where master/slave doesn't apply (such as "master key"). Also, I think the PR disrespects all the original authors of the various documentation entries, none of whom have been consulted.

    If a particular passage is demonstrably unclear or offensive, it should be changed; otherwise, we shouldn't let vaguely formed notions of political correctness shape other clear uses of plain English.

    As far as I can't tell there isn't a single instance where the docs use "master" as a reference to human slavery or where the use could be seen to imply an endorsement of that notion.

    FWIW, Guido drew a line for this a few years ago when someone suggested removing the example using the phrase, "I see said the blind man and he picked up the hammer and saw". The judgment was that we weren't going to go down this path unless there was actual offensive speech.

    @pitrou
    Copy link
    Member

    pitrou commented Sep 10, 2018

    Indeed, "master" in itself is used in a wide range of contexts and can have quite positive connotations (I master Python programming).

    The word "slave" I agree with removing if used gratuitously. If its use reflects an established convention which we do not have power to change, then we should probably keep using it for the sake of clarity (for example in the openpty case, since we're merely exposing a glibc function).

    @gvanrossum
    Copy link
    Member

    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.

    @miss-islington
    Copy link
    Contributor

    New changeset fa7dfae by Miss Islington (bot) (Victor Stinner) in branch 'master':
    bpo-34605: Replace "pliant children" with "helpers" (GH-9195)
    fa7dfae

    @suic86
    Copy link
    Mannequin

    suic86 mannequin commented Sep 13, 2018

    The discussion under GH PRs is now censored. What will be the next level?

    @Mariatta
    Copy link
    Member

    No further discussion needed. This issue has been closed and resolved. Thanks Victor for the PRs.

    @serhiy-storchaka
    Copy link
    Member

    News about this issue published on different resources are exaggerated. Actually the controversial changes were rejected. All merged changes look correct to me, they fix outdated terminology ("worker" instead of "buildslave" is now the official term in the Buildbot documentation) and make the documentation using more common terminology (for example "parent process" instead of "master process" in context of multiprocessing).

    @suic86
    Copy link
    Mannequin

    suic86 mannequin commented Sep 16, 2018

    @serhiy.storchaka: IMO, the problem isn't the master/slave terminology itself but the way how the changes were introduced (no discussion) and the justification ("diversity reasons"???).

    IMO this is the next level: https://bugs.python.org/issue34660 and I can't imagine what comes next. I find this nonsensical and I'm very disappointed that this ideological nonsense is infecting Python.

    IMO the core developers should make a clear statement about this (either pro or contra). Once it's made, I'll have no other choice than respect that stance and act accordingly. Saying that "there will be not more discussions" or sending people to twitter like Guido did is not a solution and it's rather damaging the Python community and its reputation. :(

    @vstinner
    Copy link
    Member Author

    New changeset 8a73cac by Victor Stinner in branch '3.7':
    [3.7] bpo-34279: Synchronize regrtest with master (GH-10800)
    8a73cac

    @miss-islington
    Copy link
    Contributor

    New changeset 43d8126 by Miss Islington (bot) in branch '3.6':
    [3.7] bpo-34279: Synchronize regrtest with master (GH-10800)
    43d8126

    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    lyz-code added a commit to lyz-code/blue-book that referenced this issue Jun 1, 2022
    … of a class
    
    If you're using Python 3.9 or above you can directly use the decorators:
    
    ```python
    class G:
        @classmethod
        @Property
        def __doc__(cls):
            return f'A doc for {cls.__name__!r}'
    ```
    
    If you're not, the solutions are not that good.
    
    perf(git#Change's Controversy): Master to main branch change's controversy
    
    The change is not free of controversy, for example in the [PDM
    project](pdm-project/pdm#1064) some people are not sure
    that it's needed for many reasons. Let's see each of them:
    
    * *The reason people are implementing the change is because other people are
        doing it*: After a quick search I found that the first one to do the change
        was [the software freedom conservancy with the Git
        project](https://sfconservancy.org/news/2020/jun/23/gitbranchname/). You can
        also see [Python](python/cpython#78786),
        [Django](django/django#2692),
        [Redis](redis/redis#3185),
        [Drupal](https://www.drupal.org/node/2275877),
        [CouchDB](https://issues.apache.org/jira/browse/COUCHDB-2248) and
        [Github](https://www.theserverside.com/feature/Why-GitHub-renamed-its-master-branch-to-main)'s
        statements.
    
       As we're not part of the deciding organisms of the collectives
        doing the changes, all we can use are their statements and discussions to
        guess what are the reasons behind their support of the change. Despite that
        some of them do use the argument that other communities do support the
        change to emphasize the need of the change, all of them mention that the
        main reason is that the term is offensive to some people.
    
    * *I don't see an issue using the term master*: If you relate to this statement
        it can be because you're not part of the communities that suffer the
        oppression tied to the term, and that makes you blind to the issue. It's
        a lesson I learned on my own skin throughout the years. There are thousand
        of situations, gestures, double meaning words and sentences that went
        unnoticed by me until I started discussing it with the people that are
        suffering them (women, racialized people, LGTBQI+, ...). Throughout my
        experience I've seen that the more privileged you are, the blinder you
        become. You can read more on privileged blindness
        [here](https://iveybusinessjournal.com/fighting-privilege-blindness/),
        [here](https://dojustice.crcna.org/article/becoming-aware-my-privilege) or
        [here](https://www.mindful.org/the-research-on-white-privilege-blindness/)
        (I've skimmed through the articles, and are the first articles I've found,
        there are probably better references).
    
        I'm not saying that privileged people are not aware of the issues or that
        they can even raise them. We can do so and more we read, discuss and train
        ourselves, the better we'll detect them. All I'm saying is that a non
        privileged person will always detect more because they suffer them daily.
    
        I understand that for you there is no issue using the word *master*, there
        wasn't an issue for me either until I saw these projects doing the change,
        again I was blinded to the issue as I'm not suffering it. That's because
        change is not meant for us, as we're not triggered by it. The change is
        targeted to the people that do perceive that `master` is an offensive term.
        What we can do is empathize with them and follow this tiny tiny tiny
        gesture. It's the least we can do.
    
        Think of a term that triggers you, such as *heil hitler*, imagine that those
        words were being used to define the main branch of your code, and that
        everyday you sit in front of your computer you see them. You'll probably be
        reminded of the historic events, concepts, feelings that are tied to that
        term each time you see it, and being them quite negative it can slowly mine
        you. Therefore it's legit that you wouldn't want to be exposed to that
        negative effects.
    
    * *I don't see who will benefit from this change*: Probably the people that
        belongs to communities that are and have been under constant oppression for
        a very long time, in this case, specially the racialized ones which have
        suffered slavery.
    
        Sadly you will probably won't see many the affected people speak in these
        discussions, first because there are not that many, sadly the IT world is
        dominated by middle aged, economically comfortable, white, cis, hetero,
        males. Small changes like this are meant to foster diversity in the
        community by allowing them being more comfortable. Secondly because when
        they see these debates they move on as they are so fed up on teaching
        privileged people of their privileges. They not only have to suffer the
        oppression, we also put the burden on their shoulders to teach us.
    
    As and ending thought, if you see yourself being specially troubled by the
    change, having a discomfort feeling and strong reactions. In my experience these
    signs are characteristic of privileged people that feel that their privileges
    are being threatened, I've felt them myself countless times. When I feel it,
    +I usually do two things, fight them as strong as I can, or embrace them, analyze
    them, and go to the root of them. Depending on how much energy I have I go with
    the easy or the hard one. I'm not saying that it's you're case, but it could
    be.
    @python python deleted a comment from metal3d Apr 3, 2024
    @python python locked and limited conversation to collaborators Apr 3, 2024
    Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
    Labels
    3.8 only security fixes docs Documentation in the Doc dir interpreter-core (Objects, Python, Grammar, and Parser dirs) type-feature A feature request or enhancement
    Projects
    None yet
    Development

    No branches or pull requests