此前,我们曾报道了 GitHub 封锁受美国制裁公司的俄罗斯开发人员账户。该平台的这一举措不可避免的带来了一些破坏性的副作用,苹果开发者社区两个热门项目 Quick 和 Nimble 的首席维护者 Jesse Squires 近日就发文控诉称,“但似乎 GitHub 并没有完全考虑到这一点,因为这些账户的封停正在搞砸我的项目。”
Jesse 在其个人博客中指出,Quick 5.0 版本已于几天前发布。在发布前的一周里,他曾审查并合并了许多 PR;但是当他准备写 release notes 时,神奇的事情发生了 —— 一些 PR 被删除了,更过分的是整个贡献者的存在都消失了。
“他们在 issue 上的所有评论都消失了,他们打开的所有 issue 都消失了,他们打开的所有 PR 都消失了。与该用户有关的每一项活动都消失了。这 TM 的是什么情况?”
Jesse 以项目中一个关键性的 bug 修复 PR #1129 进行了举例,大家可以从 GitHub 的自动生成的 release notes 中看到这一行:
“但用户账户和 PR 的结果都是 404。但是你可以在这里找到合并提交,这是所有关于这一变化的历史记录”。
维护者 Rachel Brindle 还打开了一个 PR(另一个重要的 bug 修复),但引入该 bug 的原始 PR 也已经被删除。“引入它的原始 PR 后来被删除了,所以我不确定该贡献的确切意图。”
在经历过短暂的疑惑后,Jesse 终于意识到这些“神秘的消失”都是由于 GitHub 轻率地暂停了俄罗斯开发者的账户,而没有考虑到其破坏性的副作用所造成的。目前已有多位 Quick 的贡献者账户被封禁,“这意味着除了原始 commit 历史之外,我们已经失去了他们的所有贡献。”
我不清楚 GitHub 暂停这些账户的目的是什么,但对于任何与现在被暂停的账户有互动的开源项目来说,这似乎是难以置信的破坏性。在像 Twitter 这样的服务中,你可以访问已暂停帐户的占位符配置文件,并看到一条传达该账户被停用的信息,而其他用户对该账户的 @mentions 仍然链接到被停用的账户的资料。在 GitHub 上,情况完全不是这样的。
显然,在 GitHub 上“suspending an account”实际上意味着删除一个用户的所有活动。这导致(1)被停用账户的每一个 PR 都被删除,(2)被停用账户打开的每一个 issue 都被删除,(3)被停用账户的每一个评论或讨论都被删除。实际上,用户的整个活动和历史都被蒸发掉了;所有这些有价值的数据都会丢失,唯一保留下来的是原始的 Git commit 历史。就好像这个用户从未存在过一样。
同样,目前我还不清楚数据丢失是 GitHub 的目标还是这是一个失误。无论怎样,这都是一个巨大的问题。在没有通知的情况下删除这些数据是对信任的一种滥用。我们还应该继续把重要数据存放在 GitHub 上吗?
除了此前发布的一篇声称会“为包括俄罗斯开发者在内的所有开发者提供服务”的声明外,GitHub 没有发布任何有关当下这一封禁举措的通知或沟通。Jesse 称,“这绝对是令人困惑的”。
猜你喜欢:我在这个我接手的项目上只工作了一个星期左右,试图像一个好的维护者一样勤奋地跟踪变化,然后各种奇特的、意想不到的怪事开始发生。我不知道的是,GitHub 正悄悄地加入了西方世界其他国家的行列,以惩罚无辜的俄罗斯平民......我不明白删除 GitHub 账户和造成平民的食物短缺是谁的'胜利'。据我所知,现在失踪的贡献者只是对社区开源项目感兴趣的普通 iOS 和 macOS 开发者。
来自 GitHub 的这些行为对开源项目和开源社区是有害的和破坏性的。突然之间,我看到那些积极为项目做出贡献的用户的 PR、issue 和 comment 都消失了。我们丢失了关于 issue 和 PR 的宝贵贡献、信息、上下文和讨论历史,我们甚至丢失了开放且正在积极审查的 PR。这些工作现在已经完全、永远地消失了。对于合并的拉取请求,我们有原始的 commit 历史,但这不能代替完整的代码审查和讨论。
维护开源项目已经很困难了。继承一个旧的、被忽视的项目,并试图让它回到正轨,这就更难了。在这种情况下,每一个 PR、issue 和 comment 对于项目的长期维护和成功都很重要。评论、讨论和代码审查提供了宝贵的背景资料,而这些资料并不总能在 commit 历史中体现出来,特别是对于那些多年来经历了多个维护者的开源项目。我认为 GitHub 的正确解决方案应该是保留所有的贡献,冻结可疑账户以防止未来的活动,并在账户资料页面上明确标明封停。然后,在可能的情况下,重新启用这些账户。但显然,GitHub 认为最好的办法是将其全部删除。
所以,感谢 GitHub 把事情搞砸了。