13 votes

On Redis master-slave terminology

Tags: redis, naming

22 comments

  1. [10]
    jgb
    Link
    This is a very pragmatic stance on what I consider to be an absurd argument. There is nothing offensive about terminology being used in the abstract to refer to abstract relationships between...

    This is a very pragmatic stance on what I consider to be an absurd argument. There is nothing offensive about terminology being used in the abstract to refer to abstract relationships between abstract systems. Obviously, slavery between actual humans in the real world is abhorrent. However, using these terms to refer to the architecture of a database obviously is not condoning slavery. It's simply an apt metaphor that conveys the relationship between two entities well - and indeed, I am yet to see a better terminology pair be suggested by anyone on either side of the debate. Worker is not a good replacement in many systems because it does not convey total control and ownership strongly enough.

    17 votes
    1. [4]
      spit-evil-olive-tips
      Link Parent
      Systems such as Raft have started using leader and follower, which seems like a suitable replacement. In a new project I can see an argument for using them instead of master/slave, to avoid this...

      Systems such as Raft have started using leader and follower, which seems like a suitable replacement. In a new project I can see an argument for using them instead of master/slave, to avoid this sort of controversy if nothing else.

      However, in Redis' case, where the SLAVEOF command is part of the existing API, removing it would break backwards compatibility, and Redis is such a critical part of so many systems that antirez considers that breakage unacceptable, and I think rightfully so.

      5 votes
      1. [3]
        unknown user
        Link Parent
        It's not only Redis, though. It's part of the jargon. I've seen it be used for databases and multiple computer systems all the time. When you change sucn a term, you also break with the...

        It's not only Redis, though. It's part of the jargon. I've seen it be used for databases and multiple computer systems all the time. When you change sucn a term, you also break with the literature.

        Personally I find this sort of sensitivity idiotic, to say the least. These people get offended as a hobby, and usually without being a member of the actual party that could've been offended.

        6 votes
        1. spit-evil-olive-tips
          Link Parent
          The terminology used in the literature changes as well...even the original Raft paper (pdf) uses leader & follower. It happens in other fields too, for example "mongoloid" used to be a common term...

          When you change sucn a term, you also break with the literature.

          The terminology used in the literature changes as well...even the original Raft paper (pdf) uses leader & follower. It happens in other fields too, for example "mongoloid" used to be a common term in anthropological research. Language changes.

          Personally I find this sort of sensitivity idiotic, to say the least. These people get offended as a hobby, and usually without being a member of the actual party that could've been offended.

          Ehh...remember the principle of charity. It's entirely possible they think it's a simple rename and don't realize the implications on backwards compatibility of the Redis API. The guy who called Salvatore a fascist certainly took it too far, but I'm hesitant to generalize from that to everyone else who shares a dislike of the "slave" terminology.

          6 votes
        2. soc
          Link Parent
          I assure you that I'm not offended by it, I just find it awkward, especially when there are a bunch of other ways to convey the same idea without invoking such touchy context. It honestly feels...

          I assure you that I'm not offended by it, I just find it awkward, especially when there are a bunch of other ways to convey the same idea without invoking such touchy context. It honestly feels like you are the one who is getting offended here.

          1 vote
    2. [3]
      Eva
      Link Parent
      People into BDSM must be condoning racism, too, by using that terminology! How wonderful. Honestly, these people have been failing at it since 2003; it's never going to happen. There are just so...

      People into BDSM must be condoning racism, too, by using that terminology! How wonderful.

      Honestly, these people have been failing at it since 2003; it's never going to happen.

      There are just so many "offensive" terms in computer science they could go after. Like oh my God, why don't these people ever go on about forking or killing children? How labelling folders "Enabled" and "Disabled" is offensive for disabled people?

      To quote a really good, like twelve year old thread from slashdot, this is where this will lead to:

      "To avoid casting aspersions on our feline friends, the cat command is now merely domestic_quadruped."


      I personally, at least, think these people need to leave the suburbs at some point. Words have alternative definitions, and vocabulary changes. They need to learn to accept that to be functional members of society.

      5 votes
      1. [2]
        Thrabalen
        Link Parent
        I hereby propose that we change future use of "Master" and "slave" into "Dominant" and "Subservient"... or Dom and Sub, respectively.

        I hereby propose that we change future use of "Master" and "slave" into "Dominant" and "Subservient"... or Dom and Sub, respectively.

        12 votes
        1. Eva
          Link Parent
          Oh my God. Now this I support fullheartedly.

          Oh my God. Now this I support fullheartedly.

          7 votes
    3. [2]
      soc
      Link Parent
      I don't know - I've always thought it was awkward terminology, and have always avoided it myself. I've never had any issue with using various other terminology which convey a similar relationship....

      I don't know - I've always thought it was awkward terminology, and have always avoided it myself. I've never had any issue with using various other terminology which convey a similar relationship. I understand that it's not condoning slavery, but you just can't ignore the linguistic pitfalls of choosing those words specifically when other words work just fine. I don't use the substitute terminology because I feel pressured to do so, I have chosen to avoid it for a long time just because it is potentially awkward in so many settings. Like, come on - if you have black developers, are you really going to stand there at a dev meeting and say "ok Jeremy - I need your team to conduct a review the slave APIs." It's just inelegant, and most people are going to avoid that interaction by simply substituting a different word.

      it does not convey total control and ownership strongly enough.

      Personally, I think it does that just fine, but really - this language is imprecise, and if you are working on or explaining a systematic relationship between application objects which requires that level of precision, then you are working on a technical level where that information is going to be communicated in more formal technical language anyway. Like, you are going to be looking at APIs and real documentation, so the high level language doesn't really matter anyway. Calling it a "worker" or a "client" or "reconfabulator" doesn't matter at all when you are working from an actual list of functional relationships between I/O and behavior.

      4 votes
      1. jgb
        Link Parent
        Personally, I would have no issue at all saying that to a black colleague. In fact, I'm not sure that it would even cross my mind that offense might be taken. Granted, I am in the UK, where...

        Like, come on - if you have black developers, are you really going to stand there at a dev meeting and say "ok Jeremy - I need your team to conduct a review the slave APIs."

        Personally, I would have no issue at all saying that to a black colleague. In fact, I'm not sure that it would even cross my mind that offense might be taken. Granted, I am in the UK, where sensitivities around these issues tend to be somewhat lower than in the US. I don't have a particularly strong association in my brain between slavery and black people. If I think of slaves, I can honestly say that I am just as likely to think of the builders of the Pyramids, or of Eastern European women being trafficked in the present day, as I am to think of enslaved black people.

        7 votes
  2. [3]
    Emerald_Knight
    Link
    It's an interesting debate to be had for sure. Personally, I never thought much of the master-slave terminology. I'm a very pragmatic person--often overly so--and adapt to whatever terminology is...

    It's an interesting debate to be had for sure.

    Personally, I never thought much of the master-slave terminology. I'm a very pragmatic person--often overly so--and adapt to whatever terminology is being used for a bit of technology. In the case of e.g. a MongoDB database, I refer to database nodes as "primary" and "secondary" as is used in the official documentation. When on Linux systems I refer to directories as "directories" and on Windows systems I refer to them as "folders". When discussing versioning with SVN I'll refer to adding changes to a repo as "committing", but in Git I'll refer to it as "pushing". I always try to adapt to the language that people are using to discuss technology, because otherwise there's too much additional communication overhead and confusion, especially when you use that terminology to search through documentation.

    I'm also one to oppose drastic, immediate changes to an API without a sufficiently long deprecation period, as a sudden API change can introduce some major headaches, a problem I've dealt with in the past. In everyday communications it's fine to suddenly stop using certain language, but an API change means breaking existing functionality.

    With all that being said, I'm not opposed to efforts to improve language. The use of "primary" and "secondary/replica" as opposed to "master" and "slave" is a great example of a change that improves the language from a political correctness standpoint and, in my opinion, even improves the language from a purely technical standpoint. At least in the case of MongoDB and replica sets, it makes more sense that a "secondary" replaces a missing "primary" than it does for a "slave" to replace a missing "master", the former more clearly communicating that authoritativeness can be transferred via a form of "promotion" whereas the latter communicates that authoritativeness is unidirectional and a new "master" must be appointed to take over the "slaves".

    I guess that what I'm trying to drive at is that I can see the rationale for both keeping and changing the terminology being used, and that I'm particularly in favor of phasing out rather than cutting off for existing technologies.

    9 votes
    1. [2]
      soc
      Link Parent
      Yeah, I work on a lot of distributed network applications, and I've always avoided using the term "slave" as well. It's never been an issue to use "parent/child" or "controller/client" depending...

      Yeah, I work on a lot of distributed network applications, and I've always avoided using the term "slave" as well. It's never been an issue to use "parent/child" or "controller/client" depending on which fits better. But really, the exact terminology doesn't really matter at all, because none of these terms define a precise functional relationship like real documentation does, so it's sort of moot anyway.

      Plus, I actually work with a pretty diverse team, and whether people want to admit it or not, it's sort of awkward to tell a black engineer to "go review the slave logs."

      2 votes
      1. Emerald_Knight
        Link Parent
        To be fair, that's just an all-around awkward way to say it. Something like "go review the logs on the slave node" is significantly less awkward. Still way more awkward than "go review the logs on...

        "go review the slave logs."

        To be fair, that's just an all-around awkward way to say it. Something like "go review the logs on the slave node" is significantly less awkward. Still way more awkward than "go review the logs on the secondary", though, I agree :)

        1 vote
  3. [4]
    spit-evil-olive-tips
    (edited )
    Link
    As a side note, for anyone curious about the Hacker News algorithm and how it tends to push contentious posts off the front page, here's an example where the thread briefly reached near the top...

    As a side note, for anyone curious about the Hacker News algorithm and how it tends to push contentious posts off the front page, here's an example where the thread briefly reached near the top (#3 when I looked at it) but got pushed all the way down to #153 just an hour later:

    1. On Redis master-slave terminology (antirez.com)

    118 points by kragniz 1 hour ago | flag | hide | 64 comments

    4 votes
    1. cfabbro
      Link Parent
      A similar thing actually happened to the Tildes launch announcement that Deimos posted there. It was rapidly climbing the front page then the mods changed the title and suddenly it shot down and...

      A similar thing actually happened to the Tildes launch announcement that Deimos posted there. It was rapidly climbing the front page then the mods changed the title and suddenly it shot down and off the front page in a matter of minutes, eventually settling in amongst other posts with 1/10th the votes accumulated in the same time frame despite others with similar vote:time ratios still being at the top of the front page.

      4 votes
    2. unknown user
      Link Parent
      It seems to be flagged. HN is a dystopia. Just in my previous comment in another thread I told that it's enabled be certain amazing interactions, but the situation of modding and the behaviour of...

      It seems to be flagged. HN is a dystopia. Just in my previous comment in another thread I told that it's enabled be certain amazing interactions, but the situation of modding and the behaviour of community there is intensely off-putting.

      3 votes
    3. BossHogg2020
      Link Parent
      If I remember correctly, it is not a matter of algorithm, but the moderators are pushing up a few articles, and pushing down a few others. I see no problem with them pushing up articles (it's some...

      If I remember correctly, it is not a matter of algorithm, but the moderators are pushing up a few articles, and pushing down a few others. I see no problem with them pushing up articles (it's some kind of editorialist choice) but I find it super weird when an article is pushed down to page 3 and I cannot find it again.

      Then there's flagging, but I don't know how it works and what its effects are.

      1 vote
  4. [4]
    Deimos
    Link
    It's kind of off-topic, but I feel like Salvatore's English has been getting worse recently, or he's just taking less care with his writing. I used to think his blog posts were very well-written,...

    It's kind of off-topic, but I feel like Salvatore's English has been getting worse recently, or he's just taking less care with his writing. I used to think his blog posts were very well-written, but I keep feeling like I'm having trouble following his newer ones. This post includes sentences like this one, which are really difficult to read:

    Well, I don’t want that the people that did this to the our ability to have conversations will get a free pass to say what to do to others, because conversations is the only way we can make people that yet don't have an open vision to change ideas.

    3 votes
    1. spit-evil-olive-tips
      Link Parent
      I definitely noticed the not-native-speaker-isms in this post, but I don't follow his blog closely enough to know if that's a pattern or not. It looks like the two previous posts before this one...

      I definitely noticed the not-native-speaker-isms in this post, but I don't follow his blog closely enough to know if that's a pattern or not. It looks like the two previous posts before this one were about the licensing hullabaloo from a few weeks ago, so if those are the ones you're thinking of I suspect he takes more time to edit/proofread them when they're on an in-depth technical topic. These more recent ones seem like they were more rushed / in response to events, so he may not have had time to have a native speaker proofread them for him, or whatever his normal process is.

      2 votes
    2. [2]
      jgb
      Link Parent
      To be clear, this guy is not a first language English speaker, right? In which case, I'm not sure it's fair to suggest that a few instances of poor writing imply that he is taking less care....

      To be clear, this guy is not a first language English speaker, right? In which case, I'm not sure it's fair to suggest that a few instances of poor writing imply that he is taking less care. Language learning is tricky and it's not a smooth uphill curve towards fluency. I say this with the proviso that I have not read his blogposts before and therefore cannot myself judge the extent to which his writing quality has degraded.

      1 vote
      1. unknown user
        Link Parent
        Certainly, I guess the reason of that comment is because he's been open about his struggle with english (he was talking about the difficulties he had/has learning and perfecting his grasp of it)....

        Certainly, I guess the reason of that comment is because he's been open about his struggle with english (he was talking about the difficulties he had/has learning and perfecting his grasp of it). Recently, his text was improving. As a non-native user of English, I agree @spit-evil-olive-tips, when you rush, you can fail (actually, for me it's the inverse especially when speaking: when I want to elaborate I sometimes have a hard time, but when I'm angry I become fluent like a news reporter).

        2 votes
  5. spit-evil-olive-tips
    Link
    For background on this controversy in Redis: https://redis.io/commands/slaveof

    For background on this controversy in Redis: https://redis.io/commands/slaveof

    A note about slavery: it's unfortunate that originally the master-slave terminology was picked for databases. When Redis was designed the existing terminology was used without much analysis of alternatives, however a SLAVEOF NO ONE command was added as a freedom message. Instead of changing the terminology, which would require breaking backward compatibility in the API and INFO output, we want to use this page to remind you that slavery is both a crime against humanity today and something that has been perpetuated throughout all human history.

    If slavery is not wrong, nothing is wrong. -- Abraham Lincoln

    2 votes