此前,我们曾报道了 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 把事情搞砸了。
Good news! Martin Woodward, the Senior Director of Developer Relations at GitHub, reached out to let me know that GitHub has restored the missing pull requests, issues, comments, etc. from the Russian developers whose accounts have been suspended. User profiles are also restored, though they do not specifically mention that the accounts are suspended.
...
I still disagree with punishing ordinary individuals for atrocities perpetrated by The Russian State (and all States, for that matter), but I suppose most US corporations have little choice but to concede to governmental pressure. That’s a topic for another post.