原文来源:编辑部的故事,开源中国
律动 BlockBeats 序:「Black lives matter」这个口号已经喊了一个月了,似乎一场保护黑人的全球运动在如火如荼的进行。现实生活中人们在游行、抗议;线上世界也难以独善其身。开发者们开始谴责、声讨那些开发语言中带有歧视意味的字符:master、blacklist、slave 等等...... 开发这些字眼的极客们也开始自我检讨,仿佛这些字符的更改真的可以给黑人和那些正在忍受「奴役」的人们带来更好的生活,世界上就真的不再有歧视与不平等。
开源社区本应该是一个自由讨论与沟通,促进科技发展的净土,而如今开源已经有些脱离了他的初衷与本质。科技巨头们忙着宣扬自己的态度,慢一秒自己也会成为众矢之的。有意思的是,事情没发生之前,又有多少人觉得这些词这些字眼有什么不妥呢?如果之前已经意识到问题,为何迟迟未动呢?
我们不禁还是要发出这样的疑问:改掉 master、slave 和 blacklist 就真能世界和平了么?也许当我们不在认为这些字眼充满了不尊重和不妥的时候,才是实现了一种平等。
6 月 17 日,最初在 Git 中写下「master」一词的开发者 Petr Baudis 在社交网站上说,「当我说话时,是给别人听的,而不是给我自己听的。」意指当年不该使用「master」这个可能给别人造成伤害的词语。
Petr Baudis 2005 年参与编写 Git 时,选择了「master」(和「origin」),他曾多次希望可以改成「main」(和「upstream」)。直到现在,才由 GitHub 开始主导替换工作。
这几天,GitHub 首席技术官 Billy Griffin 也在社交网站上忙着回帖。他的大多数回复都在表达一个意思:谢谢您的意见,我们非常同意,并且我们已经开始着手将 master 替换成 main。他们发表上述言论的直接原因是,6 月 12 日,推特用户 Una Kravets 喊话 GitHub,建议把 Git 中默认分支名字「master」改成「main」。随后,GitHub CEO 称赞了这个提议,并在评论区 @Billy Griffin。紧接着,更多人提出自己的意见,参与讨论。Billy Griffin 开始一遍遍回应:我们在改了、我们在改了…… Petr Baudis 则说要去研究计算机术语「master/slave」的历史。
GitHub 不是第一个在公众的监督下,换掉「master」的主体,也不会是最后一个。美国的反歧视和反暴力执法运动,已经促使许多科技巨头或知名软件,调整自己的业务和产品,平息舆论。IBM、亚马逊、微软接连调整面部识别平台业务,以防加深歧视或遭受指责。GitHub、谷歌、OpenShift,微软的 PowerShell 脚本语言、P5.js JavaScript 库等近几周先后开始更改源码中,被认为带歧视色彩的术语,以免不恰当的词语造成伤害。现在,关于是否要更改「master/slave、blacklist/withelist」等词语,可以改成什么的讨论还在继续,而越来越多的软件和厂商已经站好队——决意替换这类词汇。多个公司更改代码中的计算机用语计算机术语政治正确性其实不是新鲜话题。2004 年,「master/slave」曾被全球语言检测机构评为年度最不政治正确的十大词汇之一,时任主席称这是政治渗透到计算机技术控制中的表现。早在那时,洛杉矶就有一个区域采购部门,以种族歧视为由,禁购采用该词汇的软件。不过当时计算机软件和网络并不像今天这么普及,因此更改用语的事件比较零散。比如,2008 年,开源软件 Drupal 在社区发布消息,高调站队,将「master/slave」重命名为「client/server」,并解释称,在有更好的替代方案可用时,继续使用潜在的、冒犯性术语通常是不受欢迎的。
之后一直到 2018 年,IETF 在草案当中,要求开源软件更改「master/slave」和「blacklist/whitelist」两项表述。计算机术语的使用才引起更广泛关注。同年,许多开发者呼吁一些开源软件厂商修改源码,Redis、谷歌、Python 都曾被要求这样做。谷歌开始避免再使用「blacklist」一词,Redis 和 Python 开始清除「master/slave」表述。清除这些表述的成本不低。谷歌几天前确定 Chrome 浏览器中不再使用「blacklist/whitelist」的说法,后续计划用用「blocklist/allowlist」来替代,但这项工作并不确定什么时候能完成。Redis 的作者 Antirez,早在 2018 年就解释过修改源码会产生的兼容性问题,例如:
- 不能再应用现有的 PR
- 有像 INFO 和 ROLE 这样的命令——使用包含 slave 术语的协议进行回复
- 术语 slave 中的源代码包含 1500 个事件
- 拥有私人项目并根据需要进行代码合并的人会遇到很多问题
尤其是最后一项,GitHub 现在也面临这个问题。Billy Griffin 在回复更换用语的建议时说,「我们正在与 Git 的其他利益相关者合作,以达成一致。」GitHub 从更新新存储库的默认设置开始,并为迁移提供更多指导,除了 GitHub Pages 之外,他们正更广泛地更改新存储库的默认分支名称。Billy Griffin 还在跟开发者解释,为什么更认可用「main」而不是其他词来代替「master」。原因包括,前两个字母相同,容易有肌肉记忆,另外表意也更为准确。此外,6 月 7 日,Billy Griffin 还曾建议将计算机使用的「blacklist/whitelist」更改为「allowlist/denylist」。在 Una Kravets 呼吁 GitHub 换掉「master」一词时,大家就在等待 Linus Torvalds 对这件事作出回应,解释为何这样写。事实上,这个词并不是 Linus 写进去的,而且从 Linus 2018 年的一些行动中,或许就能看出 Linus 对此类事情的态度。2018 年 9 月 16 日,Linus 发行了 4.19-rc4 版本的内核,他和其他几个内核开发人员在内核树的补丁程序上签字,合并了新的行为准则政策。行为准则涉及要使用受欢迎、包容的语言。人们对 Linus 的做法和行为准则本身有很多不满,有些人认为采用行为准则是某些利益获得群体,控制软件项目的一种方式,没有必要在计算机用语中讨论立场是否正确,技术应该是中立的。虽然 Linus 发完公告就退出了开发团队,很多人也不喜欢新的行为准则,但这份准则还是留了下来,而「master」显然不属于准则中说的,是受欢迎的语言。为什么硕士学位 master 不用改?黑色有什么不对吗?反对的声音一直很多。最突出的两个理由是:计算机源码中的「master、blacklist」等词语,并不包含歧视情绪;更改的成本不低。「即使我的想法是博客中表达的那样(代码中的 slave 并没有指代奴隶的意思),但我最终还是决定改变 Redis(中引起争议的)术语……但是我们需要做更多事情。」这是 Antirez 6 月 13 日在社交平台上发表的言论,他道出了很多人的心声。
有开发者会问,如果要改代码中的词,那么英语国家的硕士(master)是不是要换?黑帽子、黑天鹅中的黑字是不是也要换掉?其实倡议者们想表达的,并不是不能使用「黑」这个词,而是希望不要把「黑」作为「白」的对立面,表达「不好」、「坏」、「需要被限制」等负面意思。同理,当「master、slave」出现在源码中,并且表达的「主-从」关系,这会让一些人联想到奴隶制。Drupal 十多年前重命名「master/slave」时,就指出过这一点:如果代码里有一句「here are the steps I had to take to get my slave running」,可以理解成:我执行一些步骤,让分支运行;也可以理解成让我的奴隶跑起来。而奴隶制并没有消失,有些地方有人口贩卖交易,很多移民或特殊工种本质上正在被奴役,所以在软件社区,应该尽可能反对所有形式、语言的压迫。针对「blacklist/whitelist」。黑名单 blacklist:代表该被禁止的、不好的名单。白名单 whitelist:代表可以被允许的,好的名单。更容易给看到代码的人,造成「黑 = 不好,白 = 好」的印象,而且,「black」也常常和「slave」联系在一起,提醒人们此前长时间存在的种族不平等。一直以来,黑人运动中,一个重要的「任务」就是告诉所有人:黑色 ≠ 不好、黑人 ≠ 奴隶。上世纪,被誉为「黑人民族的桂冠诗人」Langston Hughes 曾用一首诗,来证明这个道理:
我是黑色的当我照镜子时,我看到我自己,但我并不感到羞耻上帝并没有让我比其他人更坏大地是黑色的,各种好东西从大地里出来树木、鲜花、水果、红薯和玉米,以及一切使人活下去的东西,都是从地下冒出来的——古老的黑土地煤是黑色的,它可以温暖你的房子、做饭夜晚是黑色的,有一个月亮,和一百万颗星星,非常美丽睡眠是黑色的,它让你得到休息,所以你醒来时感觉很好我是黑色的今晚我感觉很好「黑色有什么不对吗?」