整理 | 郑丽媛

头图 | CSDN下载自东方IC

近日,GitHub宣布,自2020年10月1日起,在GitHub平台上创建的所有源代码存储库都将默认命名为 main ,而非原本的 master 。

这一变化是什么原因?具体又是怎样的变化呢?接下来为你一一解答。

替换 master 等术语,开源项目在行动!

今年6月12日,谷歌浏览器开发人员 Una Kravets 的一条 Twitter 火了,内容是建议 GitHub 用 main 之类的中性术语替换 master ,并解释了提出这个建议的原因:

  • main 更短,简洁明了;

  • 容易被人记住;

  • 会让我的队友们感到舒适;

  • 不会让黑人在科技界感到被歧视;

GitHub 的 CEO 对此回应到:“提议非常好,我们已经在执行了。”

外媒 ZDNet 曾表示:继续使用带有种族色彩的词汇可能会加深种族歧视,这实在令人担忧。一些学者也认为:这些术语不仅反映了种族主义文化,而且还强化、合法化和延续了它。”因为美国 “Black Lives Matter” 运动愈演愈烈,技术界再次掀起了在源码、软件应用开发中删除此类词汇的浪潮。

因此 GitHub 于今年6月表示,公司正在努力以 main 之类的中性术语替换 master 一词,以避免不必要的联想到奴隶制。具体的更换有:master 和 slave 将被替换为 main/default/primary 和 secondary,whitelist 和 blacklist 则将被替换为 allow list 和 deny/exclude list 。

除了 GitHub , Android 移动操作系统、 Go 编程语言, PHPUnit 和 Curl 等都已表示打算用中性词汇替换掉 blacklist/whitelist 。同样,OpenZFS 文件存储管理器也用合适的词语替换了原用于描述存储环境之间关系的 master/slave 术语。

与此同时,一些业界知名的开源项目也将其默认 Git 存储库的名称从 master 更改为 main、default、primary、root 等替代名称。

不过,值得注意的是,开源项目的名称修改也并非想象中那么简单。在今年6月,React Refresh Webpack Plugin 的开发者迅速将 master 改成 main ,却被一个程序员吐槽:因为在 Git 上下文中,单词 master 的用法与 master/slave 不同,导致所有程序都改变了,最后项目都崩了。

由此可见,修改存储库默认分支的名称并非一朝一夕的事,需要循序渐进。这正如同近日 GitHub 官宣的内容:将从10月1日起用 main 代替 master ,但将分阶段进行。

GitHub 用 main 取代 master 举措落地,开发者最关心的事情在这里

GitHub 以及庞大的 Git 社区都在考虑重命名源代码存储库的默认分支名称,而GitHub 选择用 main 取代 master ,来作为自己存储库的默认分支名称,并将分为几个阶段进行更改,以尽可能减少对现有项目的破坏。

GitHub 建议用户:如果您尚未重命名默认分支,可以考虑等到今年年底。我们正在投资开发工具,用来重命名现有存储库的默认分支,从而给维护者和贡献者提供无缝的体验。

以下是 GitHub 就此宣布的一些注意事项:

已更改部分

  • 已更新 GitHub.com :将包含已删除的分支名称的原版链接重定向到存储库新默认分支中的相应链接;

  • 已更新 GitHub Pages :可以从任何分支构建和部署;

注意:发布到特殊的 gh-pages 分支仍可以像以前一样工作,但是现在可以选择存储库中的其他任何分支作为发布源。

  • 添加了用户,组织和企业设置:为 GitHub.com 上所有新创建的存储库设置默认分支名称。

这些设置涵盖通过 GitHub.com 和 GitHub API 创建的存储库。Git 2.28 添加了类似的设置来控制在命令行上运行 git init 时使用的默认分支。在 Git 2.28 博客文章中可以了解更多有关新的 init.defaultBranch 的设置信息。
GitHub Desktop 还将在本月晚些时候为新存储库引入默认分支设置。

2020年10月1日:新创建的存储库都将默认为main
自2020年10月1日起,新创建的存储库都将使用 main 作为默认分支,而不是原本的 master 。但此更改不会影响任何现有存储库:现有存储库将继续保留与之前相同的默认分支。

但此更改可以随时选择退出,通过以下对应网址,可为用户,组织或企业的新存储库设置默认分支:

  • 对于用户,请访问 https://github.com/settings/repositories

  • 对于组织所有者,请访问 https://github.com/organizations/YOUR-ORGANIZATION/settings/repository-defaults

  • 对于企业管理员,请访问 https://github.com/enterprises/YOUR-ENTERPRISE/settings/member_privileges

为什么选择用 main 替代?

main 是在 GitHub 上看到的最受欢迎的 master 替代词。并且 main 这个词汇很短,可以让用户形成良好的肌肉记忆;在很多种语言中翻译起来也很容易。

GitHub 目前正将 main 用于新创建的存储库以及正在迁移的存储库,例如 dependabot-core。

今年年底:无缝迁移现有存储库

重命名默认分支肯定会对现有存储库带来很多麻烦:

  • 打开拉请求需要重新定位到新分支

  • 草案发布需要重新定位到新分支

  • 分支机构保护策略需要转移到新分支机构

今年年底之前,GitHub 将使现有存储库全部无缝重命名其默认分支。当重命名分支机构后,GitHub 会重新定位未完成的PR和草稿版本、移动分支机构的保护政策等等——全部都将自动执行。并且,GitHub 还正在考虑将 git fetch 或 git clone 旧分支名称的用户重定向到新分支名称(带有警告和说明以更新其本地克隆)。

对这一举动的思考

其实关于计算机术语的政治正确性并不是近几年才出现的话题,GitHub 在公众的督促下换掉 master 也不是首当其冲。

早在2004年,master/slave 就曾被全球语言检测机构评为年度最不政治正确的十大词汇之一,只是当时的软件开发和网络发展并没有如今这么发达,所以更换术语这类事就全靠自发。比如,2008年,开源软件 Drupal 宣布将 master/slave 重命名为 client/server ,理由是在有更好的替代方案时,继续使用冒犯性术语很不合时宜。之后一直到2018年,IETF 在草案当中,提出开源软件需要更改 master/slave 和 blacklist/whitelist 两项表述,计算机术语的使用才引起了广泛的关注。

因此同年,许多开发者就开始呼吁 Redis、谷歌、Python 这些开源软件厂商修改相关术语。

但其实反对的声音也一直很多。其中最重要的两个理由是:

  • 计算机源码中的 master、blacklist 等词语,并不包含种族色彩;

  • 更改的成本太大。

事实上那些倡议者们所追求的,并非完全不能使用“black”这个词,而是呼吁不要把“biack”作为“white”的对立面,传达出“不好”、“需要被限制”等这些负面含义。所以,当 master/slave出现在代码中,表达的又恰好是“主-从”关系,就难免让人想到奴隶制。

可是,究其根本,在计算机术语中的master、blacklist等词语,本身并不包含负面和歧视的意思,却因为误解而花费巨大成本修改术语,是否会有些许过犹不及的意味呢?

参考链接

https://baijiahao.baidu.com/s?id=1669620192902455480&wfr=spider&for=pc

https://www.sohu.com/a/405073858_478315

https://www.jiangweishan.com/article/hulianwang0234098230948.html

更多精彩推荐
☞程序员删库被判 6 年,公司损失近亿,云原生时代如何打造安全防线?☞8次迭代5大升级,旷视天元1.0预览版正式发布☞曾是谷歌程序员,抛下百万年薪创业,4 年成就 7 亿用户,今身价百亿!
☞首次在手机端不牺牲准确率实现BERT实时推理,比TensorFlow-Lite快近8倍,每帧只需45ms
☞Service Mesh 在超大规模场景下的落地挑战
☞比特币背后的技术,是否已成为科技领军代表?
点分享点点赞点在看

注意!下个月开始 GitHub 新建存储库的默认分支就不叫“master”了!相关推荐

  1. 注意!今日起 GitHub 新建存储库的默认分支就不叫“master”了!

    整理 | 郑丽媛 头图 | CSDN下载自东方IC GitHub 宣布,自2020年10月1日起,在 GitHub 平台上创建的所有源代码存储库都将默认命名为 main ,而非原本的 master . ...

  2. github组织存储库使用_为什么我不使用您的GitHub存储库

    github组织存储库使用 by Sam Westreich, PhD 由Sam Westreich博士 为什么我不使用您的GitHub存储库 (Why I'm not using your GitH ...

  3. 10月1日之后,你新建的GitHub库默认分支不叫「master」了

    点击上方"视学算法",选择加"星标" 重磅干货,第一时间送达 本文转载自:机器之心  |  作者:张倩.杜伟 从 2020 年 10 月 1 日开始,GitHu ...

  4. 今天开始,GitHub将启用main作为默认分支名,master将成为历史!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 今天开始,GitHub将启用main作为默认分支名,ma ...

  5. 34 个最受欢迎的 GitHub JS 存储库

    原文作者: Iren Korkishko 翻译:weakish@LeanCloud 二月以来,Web 社区涌现了很多令人惊叹的 JS 项目,多到难以汇总,幸运的是 Iren Korkishko 为大家 ...

  6. 在github上托管Maven存储库

    本文翻译自:Hosting a Maven repository on github I have a fork of a small open sourced library that I'm wo ...

  7. g4e基础篇#4 了解Git存储库(Repo)

    Git 存储库看上去就是一个文件夹,只是在这个文件夹中不仅仅保存了所有文件的当前版本,也同时保存了所有的历史记录,这些额外的信息都保存在当前文件夹下面的.git子目录中.因为前面我们所描述的git跟踪 ...

  8. git 创建本地存储库_创建您的第一个Git存储库

    git 创建本地存储库 读: 第1部分:什么是Git? 第2部分:Git入门 第3部分:创建第一个Git存储库 第4部分:如何在Git中还原旧文件版本 第5部分:3个用于Git的图形工具 第6部分:如 ...

  9. 如何仅从git存储库中稀疏签出单个文件?

    如何从git仓库中检出一个文件? #1楼 git checkout branch_or_version-路径/文件 示例: git checkout HEAD -- main.c #2楼 如果您已经有 ...

最新文章

  1. oracle in与exists的使用
  2. 混合文件下分离xml文件和jpg文件
  3. 万万没想到,分布式存储系统的一致性是......
  4. 【备战春招/秋招系列】美团Java面经总结进阶篇 (附详解答案)
  5. perf script 执行时间_在Python中准确地测量代码执行时间
  6. 甲骨文每季安全更新再修补297个漏洞
  7. 移动硬盘在服务器上读不出来怎么办,移动硬盘无法识别的usb设备怎么办
  8. tiny4412 编译并烧写系统
  9. SQLite数据库存储数据
  10. FreeSwitch笔记
  11. arcgis10之根据lyr文件进行配色
  12. 有些歌,放在这慢慢听
  13. html之解决边框重合问题,鼠标移动文字上文字抖动问题
  14. 电脑显示屏无信号怎么办?
  15. esp8266点灯LCD12864心知天气+农历+空气质量ArduinoJson6
  16. 粒子群算法查找函数最小值
  17. zotero 使用方法
  18. 华为云前端一阶段HTML入门(常用标签 表格标签 表单)
  19. 计算机音乐火影吧,【史上最全的火影BGM(背景音乐)】
  20. 服务器安全证书认证失败,【证书验证失败】证书验证失败怎么解决、怎么办_佰佰安全网...

热门文章

  1. [bzoj 3110] [ZJOI2013] K大数查询
  2. JavaEE Web 开发 链接 mysql 出现 Class.not found的错误
  3. iOS连续上传多张图片
  4. Spring Boot Shiro权限管理--自定义 FormAuthenticationFilter验证码整合
  5. Firefox-常用扩展
  6. 责任心来自爱而不是债
  7. 单线程智能聊天机器人
  8. T-SQL AVG Functions
  9. Sqoop增量抽取Oracle数据,最近8个小时的数据未被抽取
  10. 去掉知乎/CSDN网页标题未读消息提示