Skip to content

Instantly share code, notes, and snippets.

@mattn
Last active February 25, 2025 15:03
Show Gist options
  • Select an option

  • Save mattn/488af4c3b3841ea901a1f9820636393c to your computer and use it in GitHub Desktop.

Select an option

Save mattn/488af4c3b3841ea901a1f9820636393c to your computer and use it in GitHub Desktop.
blacklist/whitelist master/slave に関する情報集め

blacklist/whitelist master/slave に関する情報集め

blacklist/whitelist、master/slave という単語は相応しくないという意見に OSS がどの様に対応すべきかを自身で考える為の情報集めです。見つけ次第、逐次更新していきます。

僕(mattn) 自身は black lives matter に同意をしています。blacklist/whitelist、master/slave という単語を廃止する事が、歴史的背景を持たない文化圏では特定の意味を持たなかった為、個人的には若干思う所はありますが、廃止自身に反対するつもりはありません。

昔から、主副を表す物には master/slave という単語が使われてきました。ハードディスクの IDE、仮想端末(pty)、色々あります。またネットワークの IP フィルタリングに関しては blacklist/whitelist と表記した物が今でも沢山あります。

我々日本人が意識せずに使っていた blacklist/whitelist、master/slave という単語が、人々にどの様に影響しうるのか、今後 OSS としてどの様に関わっていけば良いかを理解する上で、自分なりの情報集めをしたいと思っています。

この Gist で個人的な偏りを出すつもりはありません。ただ、1つだけ言っておきたいです。これらの単語が過去に特定の文化圏で差別的な意味を持っていたのを知らずに使った他の文化圏の人達や、その前提知識を得ずに議論に参加しょうとする人達に対して無知だ無関心だ素人だと攻撃する様な事は建設的ではないと思っています。決してそれらを招く為の情報集めではない事をご理解下さい。

master/slave の歴史的背景

https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96

マスター(主人)とスレーブ(奴隷)という用語はしばしば論争の的となることがある。

2003年11月、ロサンゼルス郡は電子メールで出入り業者に対してこれらの用語を使った製品を納入しないよう要求した[5][6][7]。これに対してIT業界ではばかげた主張だとして取り合わない動きが大勢を占めた[8]。マスタースレーブという用語はデバイス内部で起きていることを正確に表した技術用語であり、かつて存在した奴隷制度とは何の関係もないというのがその理由であった(ポリティカル・コレクトネスも参照)。

一方で、こうした論争を避けるため、データベースの分野ではマスタースレーブの代替語として「プライマリー」や「レプリカ」といった語句を採用するケースもある。2018年には、プログラミング言語Pythonが論争の末、マスタースレーブを「ペアレント」や「ワーカー」「ヘルパー」といった語句に置き換えている。

代替案

  • leader/follower

blacklist/whitelist の歴史的背景

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

A blacklist can list people to be discriminated against and cannot be employed. As a verb, blacklist can mean to put an individual or entity on such a list.

https://en.wikipedia.org/wiki/Blacklist_(computing)

代替案

  • blocklist/allowlist

各 OSS での議論

Django (2014-05-21)

django/django#2692

The docs and some tests contain references to a master/slave db configuration. While this terminology has been used for a long time, those terms may carry racially charged meanings to users. This patch replaces all occurrences of master and slave with 'leader' and 'follower'

CrunchDB (2014-05-26)

https://issues.apache.org/jira/browse/COUCHDB-2248

Inspired by the comments on this PR:

django/django#2692

Summary is: master and slave are racially charged terms, and it would be good to avoid them. Django have gone for primary and replica. But we also have to deal with what we now call multi-master setups. I propose "peer to peer" as a replacement, or just "peer" if you're describing one node.

As far as I can tell, the primary work here is the docs. The wiki and any supporting material can be updated after.

Drupal (2014-05-28)

https://www.drupal.org/node/2275877

Redis (2016-04-21)

https://github.com/antirez/redis/issues/3185

Python (2018-09-07)

https://bugs.python.org/issue34605

https://developers.srad.jp/story/18/09/14/0935201/

Chromium (2019-07-04)

https://bugs.chromium.org/p/chromium/issues/detail?id=981129

Go (2020-06-08)

https://go-review.googlesource.com/c/go/+/236857/

https://news.ycombinator.com/item?id=23445987

https://www.reddit.com/r/golang/comments/gy9ylr/go_has_removed_all_uses_of_blacklistwhitelist_and/

@yoku0825
Copy link

yoku0825 commented Jun 9, 2020

MySQLにも来ておりますー

MySQL Bugs: #99806: replace master/slave terminology with primary/replica https://bugs.mysql.com/bug.php?id=99806

@suu-g
Copy link

suu-g commented Jun 9, 2020

DNS 用語としては Primary / Secondary が正しい用語となります
https://tools.ietf.org/rfc/rfc8499.txt
https://tools.ietf.org/rfc/rfc7719.txt <- deprecated by 8499

歴史を紐解くと、もともと Primary / Secondary という言葉を使っていたようですね
https://www.ietf.org/rfc/rfc1034.txt
https://www.ietf.org/rfc/rfc1035.txt

これが、ゾーン転送の時点で Master / Slave の名前も取り込まれたということのようで。
https://www.ietf.org/rfc/rfc1996.txt

その後は用語が混乱したようですが、界隈では Primary / Secondary の方を中心に使おうとしたような形跡がみられます
https://tools.ietf.org/rfc/rfc2182.txt

@mattn
Copy link
Author

mattn commented Jun 9, 2020

@yoku0825 ありがとうございます。足させてもらいました。内容は後で読みます。

@suu-g ありがとうございます。bind もそういう変更が入ったのを教えて頂いていました。今後どうするんでしょうね。

@yamamoto-works
Copy link

yamamoto-works commented Jun 9, 2020

swift でもこれらの表現は変更されてますね

@mattn
Copy link
Author

mattn commented Jun 9, 2020

@paul-yamamoto ありがとうございます。追加させてもらいました。

@negibouze
Copy link

本質と関係ない内容で恐縮なのですが、本文のリンクを見る限りだと「CrunchDB」ではなく「CouchDB」かなと思いました。
https://gist.github.com/mattn/488af4c3b3841ea901a1f9820636393c#crunchdb

@mattn
Copy link
Author

mattn commented Jun 9, 2020

ありがとうございます。あとで修正します。

@wataash
Copy link

wataash commented Jun 10, 2020

Chromiumですが、
https://chromium-review.googlesource.com/c/chromium/src/+/2234793

  • Replaced blacklist references with blocklist in components/blacklist
  • Replaced whitelist references with allowlist in components/blacklist

というCLが6/8に出されて6/9にマージされています。

@mattn
Copy link
Author

mattn commented Jun 10, 2020

ありがとうございます。取り込ませて頂きました。

@yuta0801
Copy link

PHPにもPRが出ているみたいです
php/php-src#5685

@mattn
Copy link
Author

mattn commented Jun 10, 2020

ありがとうございます。追記しました。

@shiena
Copy link

shiena commented Jun 10, 2020

gitとGitHub CLIです。gitの方はメーリングリストから移ってきたようです。
git-for-windows/git#2674
cli/cli#929

@mattn
Copy link
Author

mattn commented Jun 10, 2020

ありがとうございます。追記しました。

@shiena
Copy link

shiena commented Jun 10, 2020

gitのメーリングリストのsubjectRename offensive terminologyでgithubを検索するとissuesとpull requestでそこそこの量がヒットしました。
https://github.com/search?q=Rename+offensive+terminology+is%3Aissue+is%3Apr+is%3Aissue+is%3Aissue&type=Issues
https://github.com/search?q=Rename+offensive+terminology+is%3Aissue+is%3Apr+is%3Aissue+is%3Aissue+is%3Apr&type=Issues

@mattn
Copy link
Author

mattn commented Jun 10, 2020

ありがとうございます。著名な物をいくらかピックアップします。

@yuta0801
Copy link

Node.jsでもデフォルトブランチを変えることを議論しているようです
nodejs/node#33864

@matarillo
Copy link

@fumiyas
Copy link

fumiyas commented Feb 25, 2025

OpenLDAP は provider/consumer に変更:

https://bugs.openldap.org/show_bug.cgi?id=9275

「Terminology, Power, and Inclusive Language in Internet-Drafts and RFCs」のリンク先が not found になっていました。最新版の URL は存在しないのだろうか。過去版を含む一覧:

https://datatracker.ietf.org/doc/draft-knodel-terminology/

  • primary/second (DNS)

s/second/secondary/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment