继 GitHub 改掉 master 后,开发者也开始反省 错误 了?!

2023-12-24 14:08

本文主要是介绍继 GitHub 改掉 master 后,开发者也开始反省 错误 了?!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公众号关注 “GitHubDaily”

设为 “星标”,每天带你逛 GitHub!

转自开源中国

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 曾用一首诗,来证明这个道理:

我是黑色的

当我照镜子时,我看到我自己,但我并不感到羞耻

上帝并没有让我比其他人更坏

大地是黑色的,各种好东西从大地里出来

树木、鲜花、水果、红薯和玉米,以及一切使人活下去的东西,都是从地下冒出来的 —— 古老的黑土地

煤是黑色的,它可以温暖你的房子、做饭

夜晚是黑色的,有一个月亮,和一百万颗星星,非常美丽

睡眠是黑色的,它让你得到休息,所以你醒来时感觉很好

我是黑色的

今晚我感觉很好

“黑色有什么不对吗?”

---由 GitHubDaily 原班人马打造的公众号:GitCube,现已正式上线!
接下来我们将会在该公众号上,为大家分享优质的计算机学习资源与开发者工具,坚持每天一篇原创文章的输出,感兴趣的小伙伴可以关注一下哈!

这篇关于继 GitHub 改掉 master 后,开发者也开始反省 错误 了?!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532024

相关文章

如何提高 GitHub 的下载速度

如何提高 GitHub 的下载速度 文章目录 如何提高 GitHub 的下载速度1. 注册账号2. 准备好链接3. 创建仓库4. 在码云上下载代码5. 仓库更新了怎么办 一般来说,国内的朋友从 GitHub 上面下载代码,速度最大是 20KB/s,这种龟速,谁能忍受呢? 本文介绍一种方法——利用“码云”,可以大大提高下载速度,亲测有效。 1. 注册账号 去“码云”注册一

java线程深度解析(四)——并发模型(Master-Worker)

http://blog.csdn.net/daybreak1209/article/details/51372929 二、Master-worker ——分而治之      Master-worker常用的并行模式之一,核心思想是由两个进程协作工作,master负责接收和分配任务,worker负责处理任务,并把处理结果返回给Master进程,由Master进行汇总,返回给客

【经验交流】修复系统事件查看器启动不能时出现的4201错误

方法1,取得『%SystemRoot%\LogFiles』文件夹和『%SystemRoot%\System32\wbem』文件夹的权限(包括这两个文件夹的所有子文件夹的权限),简单点说,就是使你当前的帐户拥有这两个文件夹以及它们的子文件夹的绝对控制权限。这是最简单的方法,不少老外说,这样一弄,倒是解决了问题。不过对我的系统,没用; 方法2,以不带网络的安全模式启动,运行命令行,输入“ne

Github连接方式

打开Linux中git的配置文件: /home/username/git/MyRepository/.git/config [core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true[remote "origin"]fetch = +refs/heads/*:refs/remot

GitHub每周最火火火项目(9.2-9.8)

项目名称:polarsource / polar 项目介绍:polar 是一个开源项目,它是 Lemon Squeezy 的替代方案,并且具有更具优势的价格。该项目的目标是为开发者提供一种更好的选择,让他们能够在追求自己的热情和兴趣的同时,通过编码获得相应的报酬。通过使用 polar,开发者可以享受到更实惠的价格,同时也能够更自由地发挥自己的创造力和技能。 项目地址:https://github.

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

SQL2005 性能监视器计数器错误解决方法

【系统环境】 windows 2003 +sql2005 【问题状况】 用户在不正当删除SQL2005后会造成SQL2005 性能监视器计数器错误,如下图 【解决办法】 1、在 “开始” --> “运行”中输入 regedit,开启注册表编辑器,定位到 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVer

ssm 之事务管理出现错误

JDBC Connection will not be managed by Spring 项目采用的是分布式架构,分别有controller,service,solr三个服务器,之间通过dubbo进行调用,经过测试发现事务配置完以后不能通过spring进行管理,其中两条insert和一条update语句都执行完毕,异常并没有使得事务进行回滚,通过调取debug日志发现“JDBC Conn

Matter.js:Web开发者的2D物理引擎

Matter.js:Web开发者的2D物理引擎 前言 在现代网页开发中,交互性和动态效果是提升用户体验的关键因素。 Matter.js,一个专为网页设计的2D物理引擎,为开发者提供了一种简单而强大的方式,来实现复杂的物理交互效果。 无论是模拟重力、碰撞还是复杂的物体运动,Matter.js 都能轻松应对。 本文将带你深入了解 Matter.js ,并提供实际的代码示例,让你一窥其强大功能

Unstructured cannot write mode RGBA as JPEG 错误解决

Unstructured cannot write mode RGBA as JPEG 错误解决 0. 错误详细1. 解决方法 0. 错误详细 Image Extraction Error: Skipping the failed imageTraceback (most recent call last):File "/root/miniconda3/envs/learn-y