DNF 基金会正在开源社区中面临信任危机

版权声明:所有博客文章除特殊声明外均为原创,允许转载,但要求注明出处。

DNF 基金会正在开源社区中面临信任危机

最近,负责掌管 .NET 社区的开源基金会(DotNetFoundation,以下简称 DNF)接连发生了几件有争议的事情,由此引起许多开源爱好者对于该基金会、以及其背后的微软产生了普遍的负面看法。这些事件或许暴露出了微软在开源路线上的一些潜在的问题。

奇怪的是,尽管该系列事件已经在外网上闹得沸沸扬扬,但在同样有众多微软粉丝的中文网络上却几乎没看到什么讨论,连相关新闻都很难看到。不过,这也可能是因为我已经有一段时间不再关注国内微软社区的原因吧。

如果你想知道整个事件的原委,不妨从以下中文新闻的链接开始:

被质疑“在开源社区执行微软意愿”,.NET 基金会前董事为其提交的 PR 道歉并辞职

整件事情说起来有点复杂,因为涉及到的人物比较多。我就用自己的话简单介绍一下吧。

起因

曾是若干开源项目的积极参与者、以及 DNF 基金会执行董事的 Claire Novotny 最近在 ReactiveUI 项目提交了一个 Pull Request。该 PR 的提交信息只提到她的目的是满足 DNF 方面的要求,但除此之外没有其他细节。我们知道,开源项目一般对提交信息都是有格式要求的,显然这个 PR 并不符合规范,因此被目前的管理者拒绝了。在之后的讨论中,Claire 强调她有正规的维护者资格,但对方则反驳说,她是曾经有过,但已经 3 年时间没有参与到项目中了。(再说,维护者不是更应该严格遵守项目规范吗?)

这个事情随后在网络上传开,可以想见,大部分意见是批评 Claire 的。而她本人应该也受到了不小的压力,所以几天之后在 DNF 的公告板上发出了一则 道歉声明。然而在阅读这个所谓的“道歉”之后,我感觉她只是轻描淡写地把事件描述成一场“误会”,其实并未真正意识到自己的行为有任何不妥。有类似想法的显然不止我一个人:这个声明下面几乎被来自各方面批评的声浪淹没了。

虽然该声明和随后的跟帖比较长,但是其中不乏有真知灼见的观点,是相当值得一读的。当然,我自己也是花了小半天时间、并且借助了翻译软件才阅读完了所有内容。在看完之后我意识到,其实社区对于 DNF 以及其背后的微软在开源策略方面已经早有不少意见了,只是借这个机会爆发出来而已。

在这些回复中,对于 DNF 的不满主要集中在以下几点:

  • 这种提交 PR 的方式是粗鲁和命令式的,但她本人以及 DNF 并未表现出反省
  • DNF 基金会似乎在试图暗中掌控开源项目
  • 长期以来,DNF 基金会的活动并不透明,对开源社区缺乏沟通,也看不到实质性的贡献

对于后两点,后面还会有其他内容提供进一步的佐证。

有一篇回复我个人觉得非常精彩,因为他可能道出了事件背后的本质性问题。因此摘录如下:

NET 基金会之所以被视为自上而下的组织,唯一的原因是它不是由其成员运营,而是由微软运营,而微软是一家大型传统自上而下的公司。那为什么是个问题?很简单,因为 OSS 社区与微软这样的大型营利性(相当老式)组织保持一致的可能性非常小。如果.NET基金会由微软管理,那么它的价值观与微软一致,而不是与社区一致。这只是事实。除非双方都有完全相同的目标,否则根本不可能为了双方的最佳利益而努力。

这一点是显而易见的,因为事情是在成员不知情的情况下发生的。是微软员工创立了这个基金会。是微软员工挑选了人来管理基金会。是微软员工建立了该网站,在微软内部托管该网站,并支付了基础设施费用,他们设定了议程,他们拥有 GitHub 账户,管理着基金会的 YouTube 账户等等。决定会员必须支付多少费用、加入规则、会员如何选出董事会等等决定。一切重要的事情都是微软员工决定的。如果董事会发生变化,那么由微软员工接手以促进过渡。.NET 基金会并不像它声称的那样独立。

当然,也有很多人想起了从前那个仇视开源、疯狂使用 FUD 和“拥抱、扩展和破坏”的微软。但是我们暂且放下这些历史问题,再看看该事件发酵之后引起的其他一些“余震”。

Rodney 的辞职信

另外一位开源大佬,其身份与 Claire 有点类似:同样是 ReactiveUI 项目的维护者之一、也曾是 DNF 基金会成员,名为 Rodney Littles II。其实他早在 9 月份就已经从 DNF 离开,当时只是发出了一个简单的声明,并未对离开的具体情由详细说明。但在事件发生后,他或许觉得不应该继续回避问题,因此发表了一篇文章 IS THERE AN ECHO? 在该文中,Rodney 对 DNF 进行了直言不讳的批评,认为它本应起到支持和推动开源社区的作用,但实际上并没有,甚至可以说阻碍了开源社区的发展。

特别的,他在文中提到“微软杀死了一个开源项目,社区的朋友希望我能够说点什么,而我觉得无能为力”,这应该就是他离职的真实原因了。这个情况让人有点震惊。虽然作者在文中并未具体说出是哪个开源项目,但参考前面那个声明中其他网友的补充,该项目应该指的是 AppGet。该项目的作者曾公开指控微软抄袭,而在微软宣布官方的 WinGet 时,基本也就判了这个项目的死刑。

提到这个事情给我一种似曾相识的感觉————微软这么干可不是第一次了。这也是许多开源项目很难在微软的平台上长大的原因:如果微软觉得这个事情有前途,就会自己插手来做,凭借自己平台的集成优势,之前的开源项目缺乏关注,就只有慢慢死掉了。在十几年前这种事情就曾反复上演过,一些曾经对 .Net 产生过兴趣的开源作者就此愤而离开了该平台。没想到十几年后,在高调表示亲近开源之后,这样的历史又重现了。

如果你觉得这应该归咎于这些开源项目自己“不够强大”的话,那么接下来的事情,我觉得————怎么说呢,可以说是有点下作了吧。

Glenn Watson:DNF 的问题和解决办法

Glenn Watson,同样是 ReactiveUI 项目目前的维护者,也正是他拒绝了 Claire 提交的那个 PR。在看到 Claire 的声明以及来自 Rodney 的批评之后,他也发表了一篇文章:.NET Foundation problems and solutions,描述了围绕该争议幕后的一些技术上的细节问题。

通过他的描述,我们可以看到 DNF 承诺给与开源项目一定的便利,包括使用 Azure DevOps 和 Active Directory(这种技术绑定是好是坏取决于项目作者的看法)。但付出的代价,则包括:

  • Glenn 想要对项目启用 Github Sponsors(应该是希望获得一些资金上的支持),却意外发现在没有得到任何通知的情况下,该项目的法人被设定为“Dot Net Foundation Inc”
  • 项目签发过程使用的证书是由 DNF 旗下的 SignClient 控制的,其所有者被锁定到 DNF 且无法更改

虽然作者的语气是比较平和的,还试图替 DNF 的管理者说一些好话,但字里行间还是能看出一些不满的。我个人对此的看法则是:对开源项目搞这些小动作,有点过分了吧。

如果 Glenn 的文章还算比较温和的话,那么另一位开源作者的态度就更加激烈了。

Rob Mensching: DNF 的混乱如何成为一场骚动

WIX 是 Windows 平台上较为知名的一个安装系统制作工具,作者是 Rob Mensching 。在过去几天,他经历了与 ReactiveUI 项目类似的情况,但他发表的 How the .NET Foundation kerfuffle became a brouhaha 用更加明显和强烈的情绪表达了对 DNF 的不满。

从他的文章中,我们首先可以知道的是,在 2019 年的时候 DNF 曾经对开源项目搞过一个成熟度模型评估活动。但在 Rob 看来,这个所谓的活动只是徒然给开源作者增加了负担,却从未曾邀请他们参与其中,Rob 说直到活动结束为止,他甚至都不认识来自 DNF 的任何一个人,看起来基金会的人们也完全没有兴趣和开源作者对话。他们只是发出指令,检查结果,然后消失。好一群官僚。

Rob 说:他听到其他人的抱怨,DNF 并不是来帮助开源项目的。

不满的种子应该在那个时候就已经埋下了。

在 8 月份,DNF 突然向 Rob 发出邮件,要求 Rob 向名为 dnfadmin 的 Github 特殊账户授予管理员权限(其他接受 DNF 管理的项目应该都收到了类似要求)。对此 Rob 最初的反应是不解和拒绝。其实按照一般的理解,这些特殊账号执行的就是一些自动化的机器人操作,只要有权访问特定的数据就应该足够了,为什么要管理账号?权力也太大了吧?

虽然 Rob 开始并未答应来自 DNF 的要求,但是在 9 月份 DNF 再次发起了一个 PR,这时 Rob 很忙,没有仔细思考再加上他觉得 DNF 还是可以信任的,所以他选择了接受。在 ReactiveUI 事件发生后,他想起应该去检查一下,然后发现了类似的情况:在没有任何通知的前提下,他的项目被转到了 Github Enterprise。

Github Enterprise 是 Github 的付费企业平台。它本身应该不存在什么问题,但是在不通知作者的情况下就迁移了项目归属,显然是不合理的,如果这是 DNF 索要管理权限的真实目的,那就更过分了。

在文中,Rob 说他的感受是恶心,作为20多年在微软平台上努力付出的开源作者,他觉得自己被背叛了。

相信其他开源作者看到 Rob 的遭遇后,多半也会觉得寒心吧。

结语

关注我的朋友可能会知道,一直以来我对微软这家公司的观感是比较负面的。有些朋友可能会觉得不解,这几年它已经拥抱 Linux,主动开源了,为什么还要反感?

其实在我看来,开源并不是说把代码放出来就算万事大吉了,重点在于经营和培育,如何营造一个好的社区范围,协调开源爱好者和用户,大家共同发展,才是衡量是否真正开源的试金石。在这个方面,和其他真正的开源基金会比如 Apache、Eclipse 等相比,甚至和红帽这样有一定商业成分的公司相比,微软的表现都是比较乏善可陈的。说难听点就是一直处于自己吃独食的状态,根本不关心如何培育社区的问题。从本次事件来看,背后的问题可以说比我认为的还要严重。

我自己也曾在其他文章中表示过,微软过去几年做出的东西中还是有一些产品令人眼前一亮,特别是 VSCode,其背后的作者也令人钦佩。但在后续一些扩展,比如远程开发和 Python 支持组件却走向了闭源,这足以让人心生警惕,因为这表明微软的真实态度并不像表面上宣传的那样开放。

另外一个让人担心的点在于:当初微软买下 Github 的时候,就曾有很多人担心它是否会借此加强对开源项目的控制。但之后微软对于 Github 并未做出什么大的调整,这些担心也就慢慢消散了。然而从本次事件看来,表面上没有大刀阔斧的改变,背后的小动作已经开始了。如果你是开源项目的作者,你会信任微软吗?你放心让来自微软的机器人对你的项目拥有管理者权限吗?Github 会和 Sourceforge 一样被商业化搞到变味吗?

当然,最大的危险可能在于,经历此番事件后,来自开源社区的用户可能会对这个早有不良记录的雷蒙德巨头感到失望,也可能彻底离开这个平台。对于过去几年已经落后不少、急需收复失地的阵营来说,复兴之路或许会更为难走吧。