种族平权运动加速 Github、Go 废除 Blacklist 命名,技术政治正确?

自 George Floyd 事件后,美国至全球各地为非洲裔人群争取权利的 Black Lives Matter 活动愈演愈烈,从线下游行也扩展到了技术圈里。

2020 年 5 月 26 日,明尼苏达州的明尼阿波利斯市,四名美国警察暴力执法,导致 George Floyd 窒息身亡。

至今,全美已经有近 100 个城市进行了抗议示威、游行、甚至打砸抢的暴力活动。

现在,这场平权风潮也刮到了科技圈,衍生出了不少运动。

GitHub :将 Master 改为 Trunk

GitHub 在 https://github.com/cli/cli/issues/929 

中申明(5 月 15 日首次发布):

Github 团队在近一个月前就提出了该 issue

我们团队希望将默认分支名称从「master」更改为「trunk」,因为「master」在某些情况下与奴隶制相关。

(虽然我们知道 git 中使用的「master」  并不一定具有该含义,但是我们不想在这里出现歧义。)

目前这个 issue 已经关闭。

Chrome 、Go:废除 Blacklist/Whitelist

自去年 10 月以来,Chrome(开源项目 Chromium)在其官方指南加入了如何编写「种族中立」的代码指导手册。

Google Chrome 的代码评审 Chromium Gerrit 指出,在组件/黑名单中重命名类,使用更具包容性的名称

该手册中明确指出,Chrome 和 Chromium 的开发者,应避免使用「Blacklist」和「Whitelist」一词。

而应使用中性词「Blocklist」和「Allowlist」

Go 已经删除了所有 whitelist/blacklist 和 master/slave 的使用

Golang 也有开发者也提了类似 commit,认为 whitelist/blacklist、master/slave 这些词汇给一些人带来了伤害。

Redis :18 年曾因 master/slave 引发争议

因为种族中立的原因修改命名,并不是第一次,早在 2018 年,Redis 就曾做过一次调整。

Redis 的主从模式 (master-slave),源自 MySQL 中同名的一个概念,用于同步数据。

在具体场景中,master-slave 不带任何感情色彩,仅表示主从关系。然而有很多开发者却不这样认为,他们认为 Redis 发布 5.0 RC5 后,更新日志中 Redis 仍然在使用「master」和「slave」  并希望 Redis 作者能修改 Redis 中 master-slave 架构的描述。

按 Redis 作者 antirez 的说法,这已经不是开发者第一次提这种要求了,但这次反馈的人数居多。

antirez 在 Twitter 发起的匿名投票,希望收集大家的意见。

结果显示超过半数的人希望修改 master-slave 这一描述。

Twitter 上站队:修改命名,你滋不滋词?

也是这几天,在 Twitter 上有网友发起了一项运动,号召更多技术组织和公司,将「Blacklist」和「Whitelist」以及「master」和「slave」都进行修改

推特用户 Leah Culver 号召大家加入修改命名运动

获得了很多支持,也收获了不少质疑和嘲讽。

支持的声音主要认为命名的确不妥,尤其在现在,种族问题浮上水面,更应该通过这类方式表示出自己的立场和支持。

而质疑和嘲讽也是很有自己的道理,认为技术本身与立场无关,这些命名无非就是按照大家的认知习惯进行。

无论是 Black/White 还是 Slave/Mster,并没有代表种族歧视的意义在其中。

网友 @Doug Gorley 认为:

我自己这两年也把 Master/Slave 换成了 Leader/Replica,但其实我压根没考虑过 Blacklist/Whitelist 的内涵。 

我不知道有什么好的替代方案。Passlist/Blocklist 或者 Golist/Stoplist 或者 Greenlist/Redlist?

更有网友讽刺这种做法多此一举,只能装装门面:

在我下国际象棋时,我总是让黑棋先走,然后立即认输。虽然这不是一局好棋,但这是一种象征性的姿态,最终会解决种族主义问题。

—— 完 ——