近些年來(lái),微軟對(duì)于開(kāi)源看似已開(kāi)始呈現(xiàn)一種擁抱的姿態(tài),其中值得一提的是 微軟在 2014 年成立與贊助的一個(gè)獨(dú)立自由軟件組織——.NET 基金會(huì)。
.NET 基金會(huì)成立的宗旨,在于推進(jìn)與維護(hù)微軟開(kāi)放源碼后的 .NET 框架,同時(shí)也希望成為連接軟件社群與商業(yè)開(kāi)發(fā)者之間的橋梁,以此擴(kuò)大 .NET 框架技術(shù)的軟件生態(tài)系統(tǒng)。
愿景是美好的,可現(xiàn)實(shí)卻頗為諷刺。近日,.NET 基金會(huì)前董事會(huì)成員及 ReactiveUI 核心維護(hù)者 Rodney Littles II 向 .NET 基金會(huì)質(zhì)問(wèn)道:“你是為了在 .NET 開(kāi)源上執(zhí)行微軟的意愿,還是來(lái)幫助培養(yǎng)和促進(jìn)一個(gè)健康社區(qū)的形成?”
上文提到,Rodney Littles II 是 .NET 基金會(huì)的前董事會(huì)成員,因此在他決定卸任后,按照基金會(huì)的章程規(guī)定,需要選出一位替補(bǔ)成員。而本次事件的起因,就是 9 月 22 日 .NET 基金會(huì)發(fā)布的 2021 年董事會(huì)選舉結(jié)果通知:
乍看之下,這則通知并沒(méi)有什么不妥之處:先說(shuō)明是由于 Rodney Littles II 的辭職才要選出新的董事會(huì)成員,然后公布名單,最后展望一下未來(lái)并感謝所有參與者。
但恰恰就是其中那一句看似客套的“Rodney Littles II 已重新專注于個(gè)人生活,我們祝他一切順利”引起了許多人的關(guān)心,他們向 Rodney Littles II 詢問(wèn)是否發(fā)生了什么事,因而惹惱了 Rodney Littles II:“我很好,我并不是因?yàn)閭€(gè)人生活有問(wèn)題才離開(kāi)董事會(huì)的。”
本來(lái) Rodney Littles II 什么都不打算說(shuō),但這則通知的整個(gè)第二段都在講他,看起來(lái)是在送他一個(gè)美好的祝愿,實(shí)際上卻是未經(jīng)他同意并核對(duì)的情況下,為 .NET 基金會(huì)營(yíng)造一種虛偽的“透明”機(jī)制,(在此之前,.NET 基金會(huì)從未對(duì)離開(kāi)的成員表示過(guò)這類“祝愿”,甚至都不會(huì)提及他們。)而 Rodney Littles II 會(huì)離開(kāi),也正因如此。
在 Rodney Littles II 剛當(dāng)上 .NET 基金會(huì)董事會(huì)成員時(shí),他躊躇滿志,天真地以為可以將 .NET 基金會(huì)引導(dǎo)到一個(gè)以社區(qū)為中心的組織。但現(xiàn)實(shí)情況是,一直以來(lái)他都沒(méi)有實(shí)現(xiàn)這個(gè)目標(biāo),甚至親眼目睹了一個(gè)他很喜歡的基金會(huì)項(xiàng)目逐漸衰落。
“基金會(huì)的一切都在幕后謹(jǐn)慎處理,即便身為董事會(huì)成員,我都不了解完整的故事。”Rodney Littles II無(wú)奈表示:“我看著微軟‘殺’了一個(gè)開(kāi)源項(xiàng)目,社區(qū)里的朋友要求基金會(huì)對(duì)此進(jìn)行解釋,而我卻感到無(wú)能為力。”
在他任職期間,.NET 基金會(huì)曾推出了一個(gè)名為 Project Maturity 的試點(diǎn)項(xiàng)目,其中包括旨在提高軟件質(zhì)量的“成熟度配置文件”,對(duì)此,Rodney Littles II 其實(shí)是抱有疑惑的:“成熟度模型存在一個(gè)問(wèn)題,那就是它看起來(lái)過(guò)于微軟官僚主義了。”隨后,由于該項(xiàng)目被眾多社區(qū)成員抱怨其影響范圍過(guò)大,不久后就被放棄了。
彼時(shí) Rodney Littles II 意識(shí)到了,這已完全與最初他進(jìn)入 .NET 基金會(huì)的初衷背道而馳。在基金會(huì)里,他想解決的開(kāi)源可持續(xù)性問(wèn)題根本無(wú)從下手,相比加倍努力去贏得少數(shù)人的青睞,安靜離開(kāi)顯然是更好的選擇,并且他也很清楚,.NET 基金會(huì)其實(shí)根本就不關(guān)心它的成員:“據(jù)我所知,.NET 基金會(huì)沒(méi)有為其任何成員培養(yǎng)任何東西,反而在不斷進(jìn)行破壞?!?/p>
因此他決定回到屬于他的地方,一個(gè)他真正可以發(fā)揮作用的地方:ReactiveUI。在這里,他只是一個(gè)社區(qū)成員,而不再是微軟開(kāi)源軟件(MOSS)的某個(gè)監(jiān)督者。
在辭職時(shí),Rodney Littles II 明確表達(dá)了他想要“一個(gè)有更多時(shí)間和動(dòng)力來(lái)推動(dòng) .NET 基金會(huì)的使命的人”來(lái)接替他,全程沒(méi)有提到有關(guān)他個(gè)人生活的事情,因此在他看來(lái),基金會(huì)這番說(shuō)辭不過(guò)是展現(xiàn)它主張的“透明”與虛偽的“善意”。
脫離基金會(huì)的 Rodney Littles II 在接受 The Register 的采訪時(shí)提到:“.NET 基金會(huì)與微軟之間的獨(dú)立性不夠,對(duì)其成員項(xiàng)目的幫助太少,缺乏強(qiáng)烈的使命感,因此基金會(huì)沒(méi)有一個(gè)統(tǒng)一的前進(jìn)方向。”
一石激起千層浪,在 Rodney Littles II 分享他的經(jīng)歷后,越來(lái)越多人也開(kāi)始揭露 .NET 基金會(huì)背后的問(wèn)題。
首先,兩周前 .NET 基金會(huì)執(zhí)行董事 Claire Novotny 在沒(méi)有與任何維護(hù)者討論的前提下,將一個(gè) PR 合并到她已多年沒(méi)有參與維護(hù)的一個(gè)項(xiàng)目中——ReactiveUI 的 Splat 項(xiàng)目,她給出的理由是“應(yīng).NET 基金會(huì)的項(xiàng)目要求”:
Claire Novotny 的這個(gè)舉動(dòng)令 ReactiveUI 項(xiàng)目的主要維護(hù)者 Glenn Watson 感到迷惑不已:“請(qǐng)解釋一下這是什么問(wèn)題,而且你沒(méi)有與任何維護(hù)者討論過(guò)。”
這件事引發(fā)的后果是,Glenn Watson 表示,在項(xiàng)目維護(hù)者均不知情的情況下,ReactiveUI 已轉(zhuǎn)移到 .NET 的 GitHub Enterprise 存儲(chǔ)庫(kù)而非公共存儲(chǔ)庫(kù),并且據(jù)他了解,許多其他的基金會(huì)成員項(xiàng)目也都從公共存儲(chǔ)庫(kù)中進(jìn)行了轉(zhuǎn)移,其中就包括 WiX 工具集。
WiX 工具集的開(kāi)發(fā)者 Rob Mensching 也寫(xiě)了一篇博文講述他的經(jīng)歷:
今年 8 月,.NET 基金會(huì)以“新政策”為由,開(kāi)始對(duì) Rob Mensching 進(jìn)行反復(fù)提(sao)醒(rao),要求獲得 WiX 工具集的管理員訪問(wèn)權(quán)限。原本 Rob Mensching 堅(jiān)持拒絕,但原先由基金會(huì)在 WiX 工具集中安裝的 CLA 機(jī)器人出現(xiàn)了一些問(wèn)題,因此為了修復(fù) CLA 機(jī)器人,Rob Mensching 最終還是對(duì) .NET 基金會(huì)開(kāi)放了管理員權(quán)限。
而在看到 Glenn Watson 說(shuō) ReactiveUI 莫名被轉(zhuǎn)移到 .NET的 GitHub Enterprise 存儲(chǔ)庫(kù)之后,Rob Mensching 突然感到渾身冰冷:“.NET 基金會(huì)能做到不與項(xiàng)目維護(hù)者討論就實(shí)現(xiàn)這一操作的唯一方法是——獲得項(xiàng)目的管理員訪問(wèn)權(quán)限。”
原本 Rob Mensching 還抱著“他們應(yīng)該不會(huì)背叛我”的僥幸心理,但查看之后的結(jié)果卻是:“他們真的這樣做了,WiX 工具集在沒(méi)有任何討論或提醒的情況下被轉(zhuǎn)移到了 .NET 基金會(huì)的 GitHub Enterprise。”
雖然最后 Rob Mensching 成功將 WiX 工具集轉(zhuǎn)移了回來(lái),但他依舊對(duì)此感到十分痛苦:“很久之前,我一直努力想成為一名優(yōu)秀的 OSS(開(kāi)源軟件)成員,但現(xiàn)在,.NET 基金會(huì)在玷污我在努力創(chuàng)建的項(xiàng)目?!?/p>
在以上事件持續(xù)發(fā)酵,質(zhì)疑的聲音越來(lái)越大后,.NET 基金會(huì)終于開(kāi)始進(jìn)行了回應(yīng)。
先是.NET 基金會(huì)執(zhí)行董事 Claire Novotny 在 10 月 7 號(hào)出來(lái)道歉:
“上周我犯了一個(gè)錯(cuò)誤。當(dāng)時(shí)我做了一個(gè) PR 并將它合并到一個(gè)項(xiàng)目中而沒(méi)有與維護(hù)者討論。雖然我作為創(chuàng)始人和維護(hù)者參與了這個(gè)項(xiàng)目很多年——早在基金會(huì)之前——但我近年來(lái)已經(jīng)很少活躍在這個(gè)項(xiàng)目中,因此我越界了,我沒(méi)有考慮到從我當(dāng)前的角色來(lái)看這個(gè)舉動(dòng)會(huì)造成怎樣的影響。”
但社區(qū)成員對(duì) Claire Novotny 這一看似道歉實(shí)則是在辯解與美化 .NET 基金會(huì)的長(zhǎng)文并不買賬,Akka.net 維護(hù)者 Aaron Stannard 更是直言道:“這完全不是道歉,只是滿足了我和其他人對(duì) .NET 基金會(huì)公開(kāi)聲明的最低期望?!?/p>
隨后,在 10 月 9 號(hào) .NET 基金會(huì)突然宣布 Claire Novotny 已向董事會(huì)發(fā)送了辭職信,董事會(huì)也接受了她的離開(kāi):“董事會(huì)今天早上開(kāi)會(huì)并決定接受它,因?yàn)檫@符合 .NET 社區(qū)、.NET 基金會(huì)和 Claire 的最大利益。”
對(duì)此,開(kāi)發(fā)者們依舊不接受。@ADefWebserver 評(píng)論道:“我覺(jué)得這是‘校園欺凌’?!盄FiniteReality 表示贊同:“PR 根本就不是最大的問(wèn)題,甚至在 .NET 基金會(huì)目前存在的問(wèn)題中,它連前十都排不上,這只是方便為替罪羊找個(gè)借口罷了?!?/p>
.NET 基金會(huì)的新董事會(huì)成員,也是微軟 MVP、曾領(lǐng)導(dǎo) NUnit 測(cè)試框架團(tuán)隊(duì)并為眾多開(kāi)源項(xiàng)目做出貢獻(xiàn)的 Rob Prouse,代表基金會(huì)為曾把項(xiàng)目代碼強(qiáng)行移至 GitHub Enterprise 帳戶的行為道歉:“這個(gè)舉動(dòng)是錯(cuò)誤的,董事會(huì)對(duì)發(fā)生這種情況深感遺憾?!?/p>
Rob Prouse 指出,原本將代碼轉(zhuǎn)移至基金會(huì)的 GitHub Enterprise 賬戶主要有兩個(gè)目的:
一、集中計(jì)費(fèi),讓成員項(xiàng)目可以訪問(wèn)其他 GitHub 服務(wù);
二、通過(guò)使用可獲得的管理員訪問(wèn)權(quán)限,確保成員項(xiàng)目的連續(xù)性。
他表示,基金會(huì)已從此次事件中吸取到了教訓(xùn):“我們應(yīng)該向項(xiàng)目維護(hù)者詢問(wèn)是否要加入 GitHub Enterprise 帳戶,并說(shuō)清楚其中的好處?!?/p>
作為彌補(bǔ)措施,Rob Prouse 表示目前所有項(xiàng)目都可以申請(qǐng)從 GitHub Enterprise 帳戶中刪除,.NET 基金會(huì)項(xiàng)目委員會(huì)將聯(lián)系所有受影響的維護(hù)者,若有遺漏,開(kāi)發(fā)者也可以郵件告知。
Rob Prouse 在這封聲明的最后強(qiáng)調(diào)了一句:“.NET 基金會(huì)只會(huì)在獲得維護(hù)者同意并根據(jù)文件政策對(duì)其運(yùn)營(yíng)的基礎(chǔ)設(shè)施進(jìn)行更改。”
對(duì)于這番決定,開(kāi)發(fā)者們終于稍微平復(fù)了:
@ghuntley:“這才是方法?!?/p>
@SeanKilleen:“我很欣賞這種立場(chǎng)以及開(kāi)始糾正事情的努力?!?/p>
雖然 .NET 基金會(huì)對(duì)于 PR 和 GitHub Enterprise 的問(wèn)題提供了回應(yīng)與解決方案,但針對(duì)最初 Rodney Littles II 質(zhì)問(wèn)的那句“你是為了在 .NET 開(kāi)源上執(zhí)行微軟的意愿,還是來(lái)幫助培養(yǎng)和促進(jìn)一個(gè)健康社區(qū)的形成”,.NET 基金會(huì)至今都沒(méi)有正面回答,或許未來(lái)也不會(huì)有答案。
那么,你對(duì)這一事件有何看法?你認(rèn)為當(dāng)前問(wèn)題重重的 .NET 基金會(huì)還能挽回開(kāi)源開(kāi)發(fā)者的信任嗎?
https://rodneylittlesii.com/posts/topic/foundation-echo-chamber
https://robmensching.com/blog/posts/2021/10/6/how-the-.net-foundation-kerfuffle-became-a-brouhaha/
https://www.theregister.com/2021/10/13/net_foundation_admits_it_violated/
https://github.com/dotnet-foundation/Home/discussions/59
https://github.com/dotnet-foundation/Home/discussions/39
本文來(lái)自微信公眾號(hào) “CSDN”(ID:CSDNnews),整理:鄭麗媛,36氪經(jīng)授權(quán)發(fā)布。