见证历史:“blacklist”等表述将逐渐从源代码中消失

Blacklist-whitelist和Master-slave等词汇将逐渐从源代码中消失。

美国、欧洲Black Lives Matter运动愈演愈烈。本周消息,谷歌决定放弃 Chrome 浏览器中blacklist(黑名单)、whitelist(白名单)的用法,后续使用blocklist和allowlist来替代它们。

这些国家的开发者都在努力摆脱负面代码术语,希望让这个世界变得更友好。Master-slave(主 - 从)与Blacklist-whitelist(黑白名单)等表述将从源代码中逐渐消失。

从源代码中消除负面术语

在过去的几周里,因为弗洛伊德事件的发生,以美国为主的部分国家在举行抗议活动以支持 Black Lives Matter运动。软件领域的活跃分子们也希望借此机会行动起来,表达自己消除种族压迫的决心与意志。

本周一,来自微软公司的程序员兼教育家 Scott Hanselman 发表了一篇博文,呼吁人们消除 Git 版本控制软件所创建代码库中常见的主(master)分支表述,借此表达软件行业对奴役关系的抗议。

见证历史:“blacklist”等表述将逐渐从源代码中消失

他写道,互联网工程任务组(IEFT)认为:主 - 从(master-slave)是一种压迫性的比喻,这种表述背后是深刻的历史烙印。因此无论是从技术层面还是立足历史角度,都不应该使用这样一种冒犯性的比喻。

结合上下文,我们还有很多更准确的表述可以选择。改变表述不会造成任何实际成本,甚至还能让更多新人加入进来,感受技术行业的平等态度。

这项提议最初出现在 2018 年的 IETF 草案当中,要求开源软件更改Master-slave和Blacklist-whitelist两项表述。同一年 Redis(当然也包括 Rails)与 Python 开发团队开始着手清除主 - 从(master-slave)表述。

迫于形势,Google 也对此表示了很大程度上的支持。据报道,谷歌在 2018 年就开始刻意避免使用黑名单这个单词,只不过 Chrome 浏览器的后端源码中还存在blacklist这个单词。

在周一的时候,Chromium 的代码有了最新的提交,components/blacklist 目录中的类名称已经重命名为 components/blocklist。谷歌从最终用户可见的所有位置删除了blacklist和whitelist, 分别用blocklist和allowlist代替。这次更改包含了所有类 / 方法 / 成员 / 变量重命名。

见证历史:“blacklist”等表述将逐渐从源代码中消失

据了解,Chrome 源码中有大概有 2000 处涉及到了blacklist,这种更改不是简单的查找 - 替换,改变源码还需要测试是否会产生 bug。这需要谷歌程序员们付出相当多的劳动,还不确定什么时候能彻底完成。

不止谷歌一家作出了改变

谷歌当然不是唯一一家主动处理歧视性表述问题的企业。

今年 1 月,Pivotal 的 LicenseFinder 开始将whitelist(白名单)转换为permitted licenses(授权许可)。

Box 公司目前正讨论全面使用allowlist(允许名单)与denylist(拒绝名单)的表述。

Elixir 已经在约一周之前清除了这部分表述。

OpenShift 在四天前合并了一条 pull 请求,用于更新全部相关表述。

Yelp 在约两周前修改了密钥扫描代码,osquery 项目的用语变更工作也在进行当中。

开源 Git 项目的贡献者社区也在两个月之前通过邮件列表对master表述展开了讨论,也有人提议在 Git 源代码中更换掉这一术语。但提案遭到抵制,理由之一是这会带来巨大的工作量。

在回应关于措辞修改的帖子时,GitHub 开发人员 Brian Golson(同时也是 Git 代码库的贡献者)对修改意见表示支持。他愿意负责审查用语变更可能对 Git 源代码产生的影响,但同时强调这项工作强度很大,他不可能凭一己之力完成。

他表示,看起来,如果我们对 buildin/init-db.c 直接进行逐行修改,那么大概会引发 304 项测试失败,约占总体测试失败数量的三分之一。

在 GitHub 方面,GitHub CLI 两周前已经用trunk(主干)代替master(主)表述,而 GitHub Desktop 软件早在 2019 年就完成了相关替换。

虽然人们普遍表示支持,但也有批评者指出,Git 对master的理解更多源自读音理解、而非含义理解(设备网络中的主 - 从描述并不存在任何奴役色彩)。另外,master具有非常丰富的内涵,在特定领域的专业知识中完全可以作为中立性字眼自由使用。

除了种族表述之外,谷歌的包容性编码指南还高度关注性别表述,强调应尽量避免使用与性别相关的区别性表达。例如,指南建议开发人员避免使用有性别倾向的他(he)作为代词;但在he代表氦气、希伯来语中的 ISO 639-1 语言代码或者西班牙语动词Haber的第一人称形式时则没有问题。

Hanselman 坦言,单纯变更表述并不能改变历史、也无法减少人们心中的种族主义观念。他在推特上指出,我们做的一切,只是想让这个世界变得更友好。

见证历史:“blacklist”等表述将逐渐从源代码中消失

Python 和 Redis 也曾摊上事儿

其实,早在 2018 年的时候,互联网工程任务组(IEFT)就提出草案,要求更改Master-slave和Blacklist-whitelist两项表述。编程语言 Python 和开源 Redis 数据库在同一年纷纷做出了响应,逐步从说明文档及 API 中剔除关于主、从表述的技术术语。

在 Python 方面,由于来自社区的投诉意见(具体细节并未公开),项目管理团队决定在 2018 年 9 月开始全面替换主与从两项术语。同时,负责 GitHub 平台 CPython 代码库监督工作的管理员也锁定了 pull 请求,旨在清除相关表述并删除部分注释。

Python 核心开发者 Victor Stinner 曾在之前的评论中指出,不少人都在反对这种存在明显从属关系的表述,因此最好能把主与从用语从广泛使用的编程语言中剥离出去。

与此同时,开源内存内数据库 Redis 也遇到了类似的主 - 从(master-slave)难题。2018 年,Redis 缔造者 Salvatore Sanfilippo 发表了一篇博文,其中提到他因 Redis 5.0 RC5 没有清除主、从表述而遭到开发者批评的问题。在此之前,与此相关的争议就一直存在。

Sanfilippo 表示,他压根不打算替换 Redis 中的措辞,但却因此被批评人士们称为法西斯主义者。由于他的家人曾在第二次世界大战期间受到意大利法西斯分子的迫害,扣这顶帽子显然是想故意激怒他。

他写道,最重要的问题是,每个术语在原则上都有令人反感的一面。但表达是多元的,我不希望禁止使用某些存在争议的单词,这些字眼随着时间的流逝已经变得越来越中性了。他也反对开发者们一窝蜂式的批评,并强调在这样混乱的环境下,根本不可能进行任何有意义的讨论。

但在之后实际交流与 Twitter 调查中,他发现共有 6242 名关注者参与了他发布的调查推文,其中有 53% 建议使用较为温和的表述来替代主与从。多数人已经站出来说话,他认为反对之声已经不能忽视。

见证历史:“blacklist”等表述将逐渐从源代码中消失

在此后的一篇 GitHub 帖子中,他解释称,自己打算采取行动以防止他个人的观点影响到其他人使用 Redis 的意愿。

之后不到一周,他又发表一条推文,称删除 Redis 说明文档内主 - 从表述的工作基本完成,目前只剩下一部分 API 中难以清除的单词。

见证历史:“blacklist”等表述将逐渐从源代码中消失

Drupal 及 Django 等其他开源社区也掀起了类似的运动。2017 年,Kubernetes 项目确认将全面调整语言表达。而在开源 Helm 项目中,管理团队承认主(master)本身就带有一定的冒犯性。因此,主图表(master chart)现已更名为伞图表(umbrella chart)。

大家怎么看?

对于更改blacklist这样的事件,中国程序员纷纷表示不能理解:

以后前端开发都不能用 black/white 代替颜色了,得用 #000 和 #fff。

开源软件将 blacklist 改为 blocklist,那么对应的 red-black tree 该怎么表达合适呢?

blacklist 终究是要表达禁止的意思,不够尊重人权,应该改成 yamadeList。

等等, Black Lives Matter里面的 black 是不是也该换成别的?

另外,master-slave 的中文翻译,一开始便避免了英文的奴隶一词,而巧妙地改成了主从复制。从这个角度看,其实国内对于 slave 一词的负面词性也是做了一些处理和规避的。

但是仅仅因为一个词性的问题,就大费周章去做一些牵一发而动全身的修改是否有必要?目前来看需要更加仔细斟酌,如果因为部分批评者的言论就去修改细节乃至源码,是否会影响到更多未发声的实际使用人群?

对于这些更改,你们是怎么看的呢?欢迎在评论里留言哦!

参考阅读:

https://www.theregister.com/2020/06/08/developers_renew_push_to_get/

免责声明:本文作者:“InfoQ”,版权归作者所有,观点仅代表作者本人。本站仅提供信息存储分享服务,不拥有所有权。信息贵在分享,如有侵权请联系ynstorm@foxmail.com,我们将在24小时内对侵权内容进行删除。
(176)
超详细!Linux内核内存规整详解
上一篇 2024年03月06日
华为荣耀小米(小米平板与华为荣耀平板哪个
下一篇 2024年03月06日

相关推荐

  • asp服务器软件(10系统中搭建Web服务器)

    一、IIS的安装:一般在操作系统安装时不默认设置安装IIS,win10怎么搭建web服务器因此在次Web服务器的配置时必须安装IIS。安装方式为:...

    2023年10月29日
  • 深度xp sp3(深度的XPSP3精简有几个版本)

    深度xpSP3完美精简版V6.2版,大盘是windows原版系统,安装需要1小时;小盘指的是克隆版,就是Ghost版,是从大盘分离出来的...

    2023年11月04日
  • 庆阳网站设计(甘肃天水怎么样)

    天水市秦州区“师赵村与西山坪”新石器遗址,经中国社会科学院考古研究所历时10年考古工作,于1999年出版了《师赵村与西山坪》考古成果报告。...

    2023年11月10日
  • epsonlq-630k(630K如何设置连续打印)

    2、在打印机正面的左边,有一个小开关(有刻度的那个不是,有刻度的那个是调节纸张厚度用的),这个开关只有2个档位,把他拨到另外一个档位就可以了。...

    2023年11月26日
  • 正在等待另一项安装或更新(为何感觉安卓应用经常更新)

    这个其实是比较实在的更新,是为了提升APP的使用体验,所以进行的较为合理的更新,让我们使用APP的时候,功能更加全面,体验更好。...

    2023年11月28日
  • 服务器内存条(ECC服务器内存可以与普通内存组合双通道吗)

    一看这问题,我本来想说不行的,因为我以前也试过,玩DIY也好多年了。不过,考虑到主板对ECC的支持与否也会有影响。所以最好你配上试试,看能不能点亮,会不会蓝屏。如果都正常,那就OK了。也就是主板把你那块ECC内存视为普通内存了。就是双通道了。...

    2023年11月29日
  • 三星i589(有没有用VIVO)

    去年年底的时候,也就是12月份的中旬,VIVO发布了旗下首款双模5G手机VIVOX30系列,搭载了三星的猎户座980处理器,发售价是3998元。VIVOX30的相机配置很不错,拍照和拍视频能力都很不错,虽然VIVO手机的拍照是独立于DXO体系...

    2023年12月01日
  • 诺基亚5238(诺基亚5238现在值得购买吗)

    如果是给年纪大的父母使用是值得购买的,但是是自己使用则不建议购买,因为目前手机更新换代的频率很快,市场上都是安卓和苹果系统的智能手机,并且很多软件都只支持在以上两个系统运行,如果是年轻人使用其他手机,是非常不方便的,老年人使用的软件比较少,并...

    2023年12月05日
  • fiture智能健身镜(fiture魔镜有啥亮点呢)

    首先在经济条件允许的情况下我非常推荐入这个健身镜来健身跳操,它会让你更专注,并且会让你觉得趣味性更强。因为你对着镜子跟着动作来做,老师的动作会在屏幕上高清显示,你自己的动作也能从镜子里反射出来,这种视觉的反应我就觉得这样做的动作很安心和有趣。...

    2023年12月05日
  • 屏幕录象(oppo录屏什么手势)

    3、点击红色按钮,即可结束录屏,并且会弹出录屏文件保存信息,点击窗口即可进行播放、编辑、发送等操作。...

    2024年02月09日
返回顶部