就在本周一,我们报道了GitHub将从4月13日开始屏蔽受美国制裁公司的俄罗斯开发者账户。但没想到,一些普通的俄罗斯开发者也受到了误伤,还让涉及到的项目受到了“毁灭性”打击。
4月20日,一位独立的iOS和macOS开发者、开源项目贡献者Jesse Squires在Twitter上对GitHub进行了控诉。
他称GitHub并没有做到之前声明中所说的,会为俄罗斯开发者继续提供服务,反而是暂停了自己项目中俄罗斯贡献者的账户,这也导致涉及到的重要项目历史和拉取请求都被删除了。
Jesse Squires最近接任了Apple开发者社区中两个热门项目——Quick(9.4k+ stars)和Nimble(4.4k+ stars)的首席维护者,几天前他刚刚发布了Quick的5.0版。
在发布前一周,他正在审查和合并许多拉取请求。当进行到编写发行说明的时候,他惊讶地发现,项目中的一些拉取请求被删除了!
Jesse Squires推特截图
接着,Jesse Squires发现,事情远没有那么简单,因为他发现相关贡献者的所有痕迹仿佛凭空消失了一样,他们对问题的评论、打开的所有问题和拉取请求等与用户有关的每项活动都不见了。
举个例子,Jesse Squires可以在GitHub自动生成的发行说明中看到这行信息:
但是点进去时,唯一能显示的只有这项贡献的合并提交记录,而该用户的账户和拉取请求结果都是404。由于PR#1129是一个关键的错误修复,所以它对项目来说特别重要,现在这个错误的原始PR被删了,那维护者就完全不知道这项贡献的确切意图了。
正当Jesse Squires一脸蒙圈,不知道发生什么事的时候,一位名为Tomasz Sapeta的贡献者发现了“华点”:这些神秘失踪的账户和拉取请求都来自俄罗斯开发人员。
Jesse Squires发现,GitHub上的“暂停账户”实际意味着删除用户的所有活动历史。这一做法会导致:
1.来自被暂停账户的每个拉取请求都被删除
2.被暂停账户打开的每个问题都被删除
3.被暂停账户的每条评论或讨论都被删除
这也意味着,被暂停账户贡献的所有重要数据全都没了,唯一完好无损的只有原始的项目提交历史,但这并不能替代完整的代码审查和讨论。
Jesse Squires接手这个项目只有一周的时间,维护开源项目本就很艰难,而现在,他面临的还是一个缺失关键信息的项目。对此,Jesse Squires表示无能为力,这个项目的维护工作算是永远无法进行了。
GitHub的做法让Jesse Squires感到很气愤,因为他们只会轻率地暂停俄罗斯贡献者的账户,根本不考虑这一行为带来的破坏性后果。
Jesse Squires认为项目中失踪的贡献者只是对社区开源项目感兴趣的普通开发人员,不应该随意给他们定罪。于是他把自己的经历写成一篇博客发到网上,引起了网友对GitHub这一做法的热烈讨论。
Reddit截图
也许是迫于舆论的压力,或者是意识到全部删除的做法太过于偏激,Jesse Squires在4月21日得到了一个好消息。
他在博客里更新道,GitHub开发者关系高级总监Martin Woodward联系到了他,告诉他GitHub已经恢复了相关俄罗斯开发者丢失的拉取请求、问题、评论等,用户资料也得到了恢复。同时,他们没有特别提到账户被暂停的事。
据Martin Woodward介绍,GitHub之前唯一暂停账户的机制是针对垃圾邮件发送者和其他恶意行为者。在这种情况下,通常最好的办法是让账户和所有活动完全消失。
但针对普通的俄罗斯开发人员,显然这种做法是不合适的。
参考链接:
1.GitHub suspending Russian accounts deleted project history and pull requests · Jesse Squires
2.https://www.reddit.com/r/programming/comments/u7yf0q/github_cant_be_trusted_or_how_suspending_russian/