最新資訊|人紅是非多!Rust 社區(qū)沖突不斷,創(chuàng)始人:別 Call 我了,我也救不了!
發(fā)布時(shí)間:2023-09-13 15:28:13
Rust 為什么會(huì)有這么多管理上的問題?如果 Rust 采用由創(chuàng)始人治理的方式,會(huì)不會(huì)更好?實(shí)際上,Rust 的創(chuàng)造者 Graydon Hoare 曾回應(yīng)過這個(gè)問題,他認(rèn)為如果是由他來治理的話,事情肯定會(huì)很不一樣,但是 Rust 就不太可能像現(xiàn)在這樣“出圈”。
Rust 團(tuán)隊(duì)沖突不斷
前幾天,作為 Rust 發(fā)布團(tuán)隊(duì)(Release team)的一員,Jonas Schievink 要求 Rust 團(tuán)隊(duì)從項(xiàng)目中刪除掉和他有關(guān)的所有文件。
“請(qǐng)求將我從‘校友’中刪除,并刪除和我的用戶名綁定在一起的文件”,“我還想請(qǐng)求 Rust 團(tuán)隊(duì)從項(xiàng)目的 commits 中刪除我所有作者信息?!?/span>
“我不想再以任何身份參與 Rust 項(xiàng)目?!?/span>
Jonas Schievink 還吐槽了 Rust 領(lǐng)導(dǎo)團(tuán)隊(duì),認(rèn)為這些人“破壞了社區(qū)項(xiàng)目,并壓制了公眾討論”。
Rust 團(tuán)隊(duì)一直風(fēng)波不斷。此前,還發(fā)生過為了抗議 Rust 核心團(tuán)隊(duì)(Core team),審核團(tuán)隊(duì)集體辭職的事情。他們認(rèn)為 Rust 核心團(tuán)隊(duì)在執(zhí)行社區(qū)行為準(zhǔn)則和標(biāo)準(zhǔn)上讓自己不受制約。Rust 核心團(tuán)隊(duì)并沒有和其他成員遵循同樣的行為準(zhǔn)則 (CoC),Coc 似乎變成了核心團(tuán)隊(duì) “嚴(yán)于律人” 的工具。
今年 5 月,Rust 領(lǐng)導(dǎo)小組粗暴撤換 RustConf 主題演講人,事態(tài)升級(jí)后引發(fā)多人出走。
今年 6 月,在經(jīng)歷了多次治理風(fēng)波后,Rust 項(xiàng)目宣布成立新的頂級(jí)治理機(jī)構(gòu):領(lǐng)導(dǎo)委員會(huì)(Rust Leadership Council)。由 Rust 各團(tuán)隊(duì)成員合力創(chuàng)建一份新的、名為 “ Rust 領(lǐng)導(dǎo)理事會(huì)” 的 RFC 草案,并確立了以下內(nèi)容:移除 Rust 核心團(tuán)隊(duì),由各團(tuán)隊(duì)出一個(gè)代表,成立一個(gè)頂級(jí)的治理團(tuán)隊(duì)“領(lǐng)導(dǎo)委員會(huì)”。
“領(lǐng)導(dǎo)委員會(huì)” 負(fù)責(zé)一些職責(zé)不清的工作安排及其優(yōu)先次序,然后對(duì)這些工作進(jìn)行精確到子團(tuán)隊(duì)或成員的委托。另外,“領(lǐng)導(dǎo)委員會(huì)” 還要以跨團(tuán)隊(duì)工作、規(guī)劃和項(xiàng)目的長期成功等為目標(biāo),成為團(tuán)隊(duì)之間的協(xié)調(diào)、組織和問責(zé)機(jī)構(gòu)。領(lǐng)導(dǎo)委員會(huì)還需要協(xié)調(diào)因項(xiàng)目而導(dǎo)致的團(tuán)隊(duì)、結(jié)構(gòu)或流程的變化,確保頂層團(tuán)隊(duì)負(fù)起責(zé)任,并負(fù)責(zé)展示 Rust 項(xiàng)目的官方態(tài)度。
可能“ Rust 領(lǐng)導(dǎo)理事會(huì)”還是沒有解決好當(dāng)前的各種亂象,所以 Jonas Schievink 又站了出來:“對(duì)最近 RustConf 主題演講的怯懦處理只是最近的一個(gè)例子,而且它也不太可能是最后一個(gè)。即使領(lǐng)導(dǎo)結(jié)構(gòu)發(fā)生了變化。永久解決這些問題的唯一方法是從 Rust 項(xiàng)目中完全驅(qū)逐那些對(duì)這些問題負(fù)責(zé)的人,或者為這些問題辯護(hù)的人?!?/span>
Rust 為什么會(huì)有這么多管理上的問題?如果 Rust 采用由創(chuàng)始人治理方式,是不是更好?實(shí)際上,Rust 的創(chuàng)造者 Graydon Hoare 曾從側(cè)面回應(yīng)過這個(gè)問題,他認(rèn)為如果是由他來治理的話,方向肯定會(huì)很不一樣,但是 Rust 就不太可能像現(xiàn)在這樣“出圈”。
Rust 最早誕生于 2006 年,剛開始只是 Hoare 的個(gè)人開發(fā)項(xiàng)目。但在發(fā)展過程中,Rust 吸引到更多貢獻(xiàn)者,并于 2009 年正式獲得 Mozilla 的官方贊助。
Hoare 表示自己也無法處理好各種沖突
Hoare 在他的個(gè)人博客可以說是無所不聊。2023 年他撰寫了四篇文章,第一篇談的是業(yè)余無線電技術(shù),第二篇?jiǎng)t是企業(yè)雇用的維護(hù)人員往往對(duì)于開源貢獻(xiàn)沒什么熱情(他認(rèn)為雇主應(yīng)該引導(dǎo)這些「維護(hù)人員成為真正的維護(hù)者」)。
然后,Hoare 連發(fā)兩篇博文,對(duì) Rust 語言的演變進(jìn)行了快速梳理。
今年 5 月底,Graydon Hoare 在自己的博客上回顧了 Rust 誕生歷程。Hoare 首先提醒讀者,“我已經(jīng)有十年沒參與這個(gè)項(xiàng)目了”,所以“大家對(duì)我的一切言論都請(qǐng)保持謹(jǐn)慎態(tài)度,單純把我看作一位曾經(jīng)在重要階段參與過 Rust 發(fā)展的當(dāng)事人就好……”
有趣的是,6 月份發(fā)布的第二篇文章題為《我理想中的 Rust 不會(huì)有未來》(The Rust I Wanted Had No Future,https://graydon2.dreamwidth.org/307291.html)。
首先,Hoare 提起最近人們執(zhí)的問題,“你有沒有想過在 Rust 項(xiàng)目中 BDFL(終身扮演仁慈的獨(dú)裁者?)”而如果他真的這樣做了,Rust 項(xiàng)目的發(fā)展會(huì)不會(huì)更加順?biāo)??BDFL 是授予少數(shù)開源軟件開發(fā)領(lǐng)導(dǎo)者的頭銜,通常是在社區(qū)內(nèi)的爭(zhēng)議或爭(zhēng)論中保留最終決定權(quán)的項(xiàng)目創(chuàng)始人。
Hoare 首先給出了明確的回復(fù),“不會(huì)?!彼M(jìn)一步補(bǔ)充道,“我不喜歡受到關(guān)注、也不喜歡公眾壓力。在 2009 年到 2013 年擔(dān)任項(xiàng)目的技術(shù)主管時(shí),我就已經(jīng)快到極限了……另外,我覺得自己沒辦法建立起強(qiáng)大或者健康的團(tuán)隊(duì)制度,處理不好決策、沖突、授權(quán)和擴(kuò)展之類的具體工作?!?/span>
后來這篇文章被發(fā)到了 Reddit 上的 Rust 子論壇中,Hoare 也經(jīng)常在這里轉(zhuǎn)悠。有位用戶詢問 Rust 最近的項(xiàng)目開發(fā)是否有所放緩,Hoare 回應(yīng)稱“就主要功能來說,開發(fā)速度的適當(dāng)放緩是有好處的。”
而在他那篇文章的評(píng)論區(qū)中,Hoare 本人表示“千萬別讓我聊類型參數(shù)里的尖括號(hào)和生命周期里的單引號(hào)!”
有位 Reddit 用戶倒是堅(jiān)持跟進(jìn),而 Hoare 澄清說“我們?cè)?jīng)就這些語法問題展開過爭(zhēng)論,但最后我失敗了。”他甚至公開了一個(gè)指向“Rust prehistory”GitHub repo 的鏈接,其中存放著 13 年前的 Rust 代碼。可以看到,Hore 當(dāng)初是想在類型參數(shù)中使用方括號(hào)的,他補(bǔ)充說“我個(gè)人一直覺得,類型參數(shù)就應(yīng)該使用方括號(hào),根本不需要爭(zhēng)論?!?/span>
Hoare 還反對(duì)在引用中顯式使用生命周期,在他看來“生命周期幾乎肯定可以推斷出來,所以無論具體使用哪種語法,都沒必要讓開發(fā)者單獨(dú)編寫。但很明顯,Rust 最后沒有順著這個(gè)路子走?!盚oare 后來在 Reddit 評(píng)論中感嘆道,“終有一天,我可能會(huì)寫篇〈我心目中的真正 Rust〉的博文,告訴大家我當(dāng)初想象中的 Rust 和如今真實(shí)的 Rust 間其實(shí)有著巨大差異。但請(qǐng)別誤會(huì),盡管大有不同,但我對(duì) Rust 語言獲得的成功仍然抱有巨大的成就感和滿足感!”
希望 Rust 變更好
Hoare 認(rèn)為偏好差異的確真實(shí)存在,“我自己的偏好就比較特殊,可能跟大多數(shù)朋友有所不同。”
他強(qiáng)調(diào)他心目中的 Rust“可能會(huì)讓所有參與者都不滿意,也沒辦法像現(xiàn)在這樣真正破圈……”
“請(qǐng)別誤會(huì)我的意思:我對(duì)現(xiàn)在的結(jié)果非常滿意。我很高興行業(yè)中有了一種可行的 C++替代方案,它給人們提供一種新的范式、一種可供日常使用的合理選項(xiàng)。我也在用 Rust,也很高興能有它來替代 C++。但是……”
在文中,Hoare 也列出了“Rust 中那些我特別不認(rèn)可且/或目前不太喜歡的地方?!北确秸f,在文中“復(fù)雜的語法”這部分,Hoare 就抱怨說 Rust 仍然難于解析?!八m然比 C++更易用,但跟 C++比較本身就說明它的易用性不足。當(dāng)初我也努力過,但從類型參數(shù)里的尖括號(hào)到模式綁定的歧義、再到分號(hào)和大括號(hào)的使用規(guī)則,我?guī)缀踉诿總€(gè)具體問題上都失敗了……我現(xiàn)在甚至不想再談這個(gè)話題,總之現(xiàn)在的語法跟我的設(shè)想相去甚遠(yuǎn)。抱歉了各位?!?/span>
另一個(gè)例子,則是 Rust 處理類型的方式。Hoare 本人更偏向“結(jié)構(gòu)”類型(即只要各對(duì)象的結(jié)構(gòu)相同,則其類型就相互兼容——不受聲明時(shí)所使用的類型名稱的影響)。Hoare 還透露,“Rust 語言最初帶有(我也希望它能再次擁有)編譯器發(fā)出的「類型描述符」,用戶可以在其上調(diào)用反射算符?!?/span>
Hoare 對(duì)于 Rust 如何處理十進(jìn)制浮點(diǎn)數(shù)也有不少想法?!盎旧希糠N語言都意識(shí)到金融數(shù)學(xué)有其特殊性,并最終添加了小數(shù)類型。我希望 Rust 能提前完成這項(xiàng)工作,但最終還是被放進(jìn)了庫里。雖然選項(xiàng)不少,但我覺得能內(nèi)置的話也許更好……”
還有更多例子,但 Hoare 倒是沒有列舉他的構(gòu)想跟現(xiàn)在真實(shí) Rust 之間的差異。相反,“重要的是表達(dá)當(dāng)時(shí)在各個(gè)設(shè)計(jì)主題上的分歧?!?/span>
Hoare 寫道,“我在研究這門語言時(shí)考慮的各種優(yōu)先事項(xiàng),基本上跟圍繞該語言發(fā)展出來的社區(qū)所認(rèn)定的優(yōu)先事項(xiàng)出現(xiàn)了巨大偏差。甚至經(jīng)過多年發(fā)展,我關(guān)注的那些問題還是沒有得到重視?!?/span>
“我會(huì)為了簡單性而犧牲性能和表達(dá)力——也就是更強(qiáng)調(diào)幫助最終用戶減輕認(rèn)知負(fù)荷、在編譯器中降低實(shí)現(xiàn)難度。我覺得這才是 Rust 的正確發(fā)展方向,但事實(shí)證明這似乎跟大多數(shù)人對(duì)于 Rust 的預(yù)期截然相反?!?/span>
Hoare 甚至給出了不少細(xì)節(jié):
“Rust 社區(qū)中的很多人認(rèn)為「零成本抽象」是 Rust 語言的核心承諾。我永遠(yuǎn)不會(huì)這么講,而且我個(gè)人覺得這種機(jī)制本身就有問題。這是種典型的 C++思路,對(duì)設(shè)計(jì)空間造成了不必要的限制……換作是我,會(huì)更傾向用大量相對(duì)較小的恒定性能成本,來替代包含大量抽象的所謂更簡單/更強(qiáng)大的版本,哪怕語言的實(shí)際性能會(huì)變得更慢?!?/span>
“同樣的,我也會(huì)犧牲掉一部分表達(dá)力。但這可能會(huì)讓很多現(xiàn)代 Rust 程序員感覺不爽,認(rèn)為 Rust 項(xiàng)目既笨拙又充滿官僚氣息、像是一種保姆式語言,根本不允許用戶在庫代碼中編寫各類功能,甚至不信任程序員用變量隱藏、環(huán)境捕捉或內(nèi)聯(lián)函數(shù)等簡單結(jié)構(gòu)?!?/span>
大家可以想見,這篇博文在登陸 Reddit 之后,很快引起了各種各樣的討論。一位用戶明確表示:“我真希望能擁有 Hoare 設(shè)想中的 Rust,那聽起來很美?!?/span>
但另一位評(píng)論者似乎更加務(wù)實(shí)更改,認(rèn)為“他的 Rust 不會(huì)更好,只是跟現(xiàn)狀不同……”
“我倒是更喜歡如今的 Rust……我喜歡性能更高而且腳踏實(shí)地的代碼,而真實(shí)的 Rust 恰好給了我這些。”