近日,苹果热门开源项目的首席维护者撰文控诉,GitHub 粗暴封停俄罗斯开发者账户,但并没有考虑到后续带来的后果,对涉及封停账户的开源项目带来了“毁灭性”的影响。好在最新的情况是,GitHub 已对此做出了回应与部分修正。


最近一段时间,关于 GitHub 封停俄罗斯账户的消息闹得沸沸扬扬。理由很简单,因俄乌冲突问题,美国政府开始对俄罗斯开发者/开发组织的自有或关联账户实施制裁。


但不知道“痛下杀手”的 GitHub 有没有意识到,他们的一时爽快正在毁灭我的项目。

Quick 项目历史和 PR 请求凭空“消失”了


首先,我给大家简要介绍一下事件背景。


苹果开发者社区中有两个热门项目— Quick 和 Nimble,我最近刚刚接任项目首席维护者。


几天前,我刚刚发布了 Quick 的 5.0 版本。在发布前一周,我一直忙着审查并合并大量 PR 请求。但到了编写发布说明的时候,我突然发现某些奇怪的现象——不少 PR 请求被删除了。


凭空消失,这是什么情况?!


之后我意识到,整个贡献者社群都不见了,包括开放问题、问题评论、甚至是与用户相关的所有痕迹,全都没有了。


例如,大家可以从 GitHub 自动生成的发布说明中看到这样一行:


@BobCatC 在 PR #1129中做出了第一项贡献


但现在,用户账户和 PR 请求都只显示 404 报错页面。唯一剩下的就只有合并提交,这也是整个变更记录剩下的全部内容。这里的 PR#1129 特别值得注意,因为它修复了一个严重 bug。


今天,维护者 Rachel Brindle 打开了另一个修复重要 bug 的 PR 请求。但很遗憾,造成此 bug 的初始 PR 已经被删除:


造成问题的初始 PR 已被删除,所以我无法确定此贡献的确切意图。


离谱的现实让我一度怀疑人生。为什么那么多用户(相关数据),那么多 PR 请求就直接从项目里消失了?


后来在 Tomasz Saptea 的提醒下,我们才意识到这些神秘失踪的信息,源自 GitHub 粗暴封停了俄罗斯开发者的账户,根本没有考虑过这会引发哪些破坏性影响。


Quick 项目有多位贡献者的账户已经被封停,就是说除了初始提交记录之外,他们的所有贡献内容都找不回来了。

涉及封停账户的开源项目受到“毁灭性”影响

我还不清楚 GitHub 接下来要怎么处置这些封停账户。但至少就目前这些涉及账户封停的开源项目来看,造成的影响用“毁灭性”来形容都不为过。


在 Twitter 等社交媒体上,就算是账户被冻结,我们也仍然可以访问相关账户的个人资料,只是会提示该账户处于封停状态。而其他用户的 @操作仍然链接到已封停账户的个人资料。GitHub 可没那么好心,在这边的账户不该叫“封停”,而是被直接“干”掉了。


很明显,GitHub 对于“账户封停”的理解是删除用户的一切活动(痕迹),具体包括:1)删除被封停账户的所有 PR 请求;2)删除封停账户提出的每个问题;3)删除封停账户的一切评论或发言。


实际上,用户的一切活动痕迹都没有了,全部有价值数据都被直接丢进垃圾桶。唯一还在的就只有 Git 初始提交历史。什么叫“人间蒸发”?GitHub 给出了有力的解释。


另外,我也不确定目前的数据丢失到底是 GitHub 的无心之失、还是有意为之。无论如何,产生的后果都相当严重。不通知用户就删掉全部数据,这明显是在滥用权力和信任。如此一来,我们以后还能放心把数据存放在 GitHub 上吗?


我最不能理解的,就是 GitHub 从头到尾也没给出过任何解释或者通知。他们只是强调“我们将继续确保每位用户都能使用到免费的开源服务,也包括俄罗斯开发人员。”我刚接手项目一个多礼拜,也很想做好维护者的工作、努力跟上项目变化。但突如其来的打击实在让我猝不及防。俄乌冲突当然令人痛心,但删掉 GitHub 账户,就能结束这场悲剧?据我所知,这次被影响的都是一些胸怀热情、想要给开源社区做出贡献的普通 iOS 和 MacOS 开发者。

无法找回信息

GitHub 的这些行径无疑给开源项目、乃至整个开源社区都造成了破坏性的影响。一夜之间,那些积极参与项目的贡献者们的 PR 请求、问题和评论全部消失。


现在,我们没办法找回信息、上下文和讨论历史,甚至没法继续正常审查新的 PR 请求。是的,我们手头还有合并 PR 的初始提交记录,但这并不足以支持完整的代码审查和讨论。


光是维护开源项目已经够难的了,继承一个略显陈旧、人气不算太高的项目就更难了。在这种情况下,每一条 PR 请求、问题和评论对于项目的长期维护和发展都显得弥足珍贵。


如果没有这些信息的支持,我们根本没法理解在这样一个多年来流转于不同维护者之间的开源项目,到底是怎样一路发展到今天的。


我认为 GitHub 最好是能保留所有贡献,冻结掉异常账户以阻止其后续操作,并在账户的个人资料页面中明确标记为“封停”。待调查清楚之后,再把账户恢复正常即可。很遗憾,GitHub 并不想费这个劲 —— 删,都给他删喽。


行吧,GitHub,算你狠行吗?

最新:GitHub 已恢复封禁账户发布的 PR 请求等


April 2022 年 4 月 21 日更新


好消息!GitHub 开发者关系高级总监 Martin Woodward 联系到我,表示 GitHub 已经恢复了被封停的俄罗斯开发者账户发布的 PR 请求、问题和评论等。用户个人资料也已恢复,只是仍没有提供封停提示信息。


据他介绍,GitHub 此前之所以粗暴封停账户,是为了预防有恶意人士发送垃圾邮件或者实施其他不当行为。情况紧急,最好的办法就是先把所有账户和活动都撤下来。但我觉得这怎么看也算不是“最好的办法”。总之,感谢 Martin 主动联系我,并帮助我们在 GitHub 上找到更合理的解决办法。