...

在開(kāi)源社區的強烈抗議下 微軟逆轉了有争議的.NET變化

2021-10-24

在開(kāi)源社區的公開(kāi)抗議下,微軟正在改變從其即將(jiāng)發(fā)布的 .NET 6 中删除一個關鍵功能(néng)的決定。本周早些時(shí)候,微軟因爲商業利益原因在即將(jiāng)發(fā)布的 .NET 6 中删除了 Hot Reload(熱重載)的一個關鍵部分,從而激怒了 .NET 開(kāi)源社區,該功能(néng)允許開(kāi)發(fā)者在應用運行時(shí)修改源代碼,并立即看到結果。

hotreload.gif

這(zhè)是一個許多人一直期待在 Visual Studio Code 和多個平台上使用的功能(néng),直到微軟在最後(hòu)一刻做出了一個有争議的決定,將(jiāng)其鎖定在 Visual Studio 2022,這(zhè)是一個僅限于 Windows 的付費産品,據透露,最後(hòu)一刻的改變是由微軟開(kāi)發(fā)者部門的負責人 Julia Liuson 做出的,是一個以商業利益爲考量的舉措。

"微軟承認它犯了一個錯誤"

在引起(qǐ)反響後(hòu),微軟現在已經(jīng)推翻了這(zhè)一改變,微軟自己的許多員工在公司内部也很憤怒。"我們在執行我們的決定時(shí)犯了一個錯誤,花了比預期更長(cháng)的時(shí)間來回應社區,".NET 項目管理主任 Scott Hunter 解釋說(shuō)。微軟現在已經(jīng)批準了社區的拉動請求,重新啓用這(zhè)一功能(néng),它將(jiāng)在 .NET 6 SDK 的最終版本中提供。

媒體要求微軟對(duì)一位高管下令改變這(zhè)一事(shì)實進(jìn)行評論,但該公司不想讨論這(zhè)一有争議的決定。"我們已經(jīng)采取措施來解決我們的一些 OSS 社區成(chéng)員遇到的問題,"微軟發(fā)言人在一份聲明中說(shuō)。"熱重載功能(néng)將(jiāng)出現在 11 月 8 日提供的 .NET 6 SDK 的一般可用性構建中。"

不過(guò),微軟的博客文章并沒(méi)有談到這(zhè)個有争議的決定。相反,它表明删除代碼而不是簡單地禁用它隻是一個錯誤,而不是一個商業決定。亨特說(shuō):"在我們努力擴大範圍的過(guò)程中,我們無意中最終删除了源代碼,而不是僅僅不調用該代碼路徑,"。

雖然對(duì) .NET 社區來說(shuō),這(zhè)種(zhǒng)逆轉是值得歡迎的,但對(duì)那些重視這(zhè)種(zhǒng)決策透明度的人來說(shuō),圍繞這(zhè)一事(shì)件的解釋和情況不會(huì)讓他們感到輕松。

亨特說(shuō):"就(jiù)像許多公司一樣,我們正在學(xué)習平衡開(kāi)放源碼軟件社區的需求和作爲 .NET 的企業贊助商,有時(shí)我們不能(néng)正确地處理這(zhè)個問題。當我們沒(méi)有做到這(zhè)一點時(shí),我們能(néng)做的就(jiù)是從我們的錯誤中學(xué)習,并更好(hǎo)地向(xiàng)前邁進(jìn)。"

這(zhè)一事(shì)件發(fā)生在 .NET 社區因微軟參與 .NET 基金會(huì)而産生的數周動蕩之後(hòu)。該基金會(huì)是在 2014 年微軟將(jiāng) .NET 開(kāi)源時(shí)創建的,它應該是一個獨立的組織,其存在是爲了改善 .NET 的開(kāi)源軟件開(kāi)發(fā)和合作。一位辭職的董事(shì)會(huì)成(chéng)員最近對(duì) .NET 基金會(huì)的作用提出質疑,他問道(dào):"在這(zhè)裡(lǐ)是爲了執行微軟對(duì) .NET 開(kāi)源的意志,還(hái)是爲了幫助培養和促進(jìn)一個健康的社區?"

最近的一場争論也導緻了 .NET 基金會(huì)執行董事(shì) Claire Novotny 最近辭職,還(hái)有人質疑鑒于微軟在其中的特權以及 .NET 基金會(huì)的獨立性。微軟的這(zhè)一轉折無疑損害了它十年來所建立的一些開(kāi)源工作,該公司在改善與 .NET 社區的關系以及圍繞其對(duì) .NET 基金會(huì)的影響的問題上仍有許多工作要做。

1.jpg

相關閱讀

微軟在最後(hòu)一刻砍掉 .NET 6 熱重載代碼,結果惹惱開(kāi)源社區

在薩蒂亞·納德拉接管了微軟 CEO 的職務之後(hòu),這(zhè)家軟件巨頭一直在過(guò)去 10 年裡(lǐ)積極擁抱開(kāi)源,并且主動傳達了對(duì) Linux 和開(kāi)源社區的熱愛。五年前,該公司更是加入了 Linux 基金會(huì),且官方對(duì)此表示了贊許。然而由于 .NET 社區正在醞釀的一場風暴,所有這(zhè)些善意,都(dōu)正處于一觸即潰的危險邊緣。

據悉,微軟内部的一項有争議的商業決策,讓許多人都(dōu)開(kāi)始質疑該公司對(duì)開(kāi)源的承諾。多個消息來源向(xiàng) TheVerge 透露,此舉同樣激怒了微軟自家的許多開(kāi)發(fā)者,但他們卻被壓著(zhe)不許公開(kāi)抱怨。

具體說(shuō)來是,在本周即將(jiāng)發(fā)布的 .NET 6 中,這(zhè)家雷德蒙德軟件巨頭悄然删除了 Hot Reload 的一個關鍵部分。該功能(néng)基本上允許開(kāi)發(fā)者在創建項目時(shí)獲得即時(shí)反饋、并更改代碼以立即查看結果。

與競争對(duì)手 Google 家的 Dart 編程語言和 Flutter 開(kāi)發(fā)工具包來說(shuō),這(zhè)是微軟 .NET 框架的一個極大賣點,且該公司一直在積極將(jiāng)它引入 .NET 和 Visual Studio 集成(chéng)開(kāi)發(fā)環境。

微軟最初的計劃描述,是將(jiāng) Hot Reload 帶給盡可能(néng)多的 .NET 開(kāi)發(fā)者。然而最後(hòu)一刻的更改,又將(jiāng)它局限在了 Windows 平台上的 Visual Studio 開(kāi)發(fā)人員,而不是走向(xiàng)開(kāi)放與跨多個平台使用。

微軟一直在測試接近最終版本的 .NET 6 候選發(fā)布(RC)版本,其允許開(kāi)發(fā)者通過(guò) dotnet watch 在各種(zhǒng)環境和平台上使用熱重載,包括流行的 VS Code 開(kāi)發(fā)環境。

候選發(fā)布通常意味著(zhe)功能(néng)完好(hǎo)、做好(hǎo)了投入生産的準備、且盡可能(néng)修複了測試期間發(fā)現的各種(zhǒng)錯誤。

2.png

然而本周早些時(shí)候宣布的最後(hòu)一分鍾修改,又僅在 Visual Studio 2022 中啓用了熱重載功能(néng)。負責該功能(néng)的微軟項目經(jīng)理 Dmitry Lyalin 給出的理由是,其旨在爲大多數用戶提供最佳體驗。

但是在 GitHub 上,還(hái)是有大量開(kāi)發(fā)者對(duì)此表達了嚴重的挫敗感,Hacker News 和微軟官方播客文章下的評論也是一篇罵聲。曾在微軟 F# 團隊工作的 Phillip Carter 在評論中寫道(dào):

在查看了源碼之後(hòu),我發(fā)現了一個更讓人感到失望的事(shì)實 —— Hot Reload 的支持代碼隻有 1~2 千行左右,但它們還(hái)是在最後(hòu)一刻被撕票了。

作爲一項起(qǐ)初并不局限于 Visual Studio 的功能(néng),這(zhè)是一個明顯的倒退,我真不希望微軟就(jiù)此走上回頭路。

The Verge 了解到,從 .NET 6 中删除該功能(néng)的決定,是由微軟開(kāi)發(fā)部門負責人 Julia Liuson 做出的。消息人士稱,此舉是一項以業務爲主導的決定。

3.png

(傳送門:GitHub

顯然,微軟本想著(zhe)偷偷引入這(zhè)項變化,且預計不會(huì)引發(fā)強烈的反對(duì)。

但是對(duì)于長(cháng)期在開(kāi)源社區從事(shì) .NET 相關工作的微軟自家工程師看來,連他們都(dōu)感到了深深的傷害與背叛,甚至擔心這(zhè)一決定會(huì)對(duì)微軟後(hòu)續的開(kāi)源工作産生持久不利的影響。

最初在 GitHub 上曝光此事(shì)的獨立開(kāi)發(fā)者 Reily Wood 寫道(dào):

如果你想獲得良好(hǎo)的開(kāi)發(fā)體驗,Visual Studio 無疑是最佳的選擇。但 .NET 團隊的所作所爲,又與所有跨平台工作背道(dào)而馳。

回顧 2014 年,當時(shí)微軟宣布了要將(jiāng) .NET 開(kāi)源。之後(hòu)其本應保持獨立自治,以期改善 .NET 開(kāi)源軟件的開(kāi)發(fā)與寫作。

然而近日,一位卸任的董事(shì)會(huì)成(chéng)員對(duì) .NET 基金會(huì)的角色提出了質疑,詢問它是否僅代表微軟的意願行事(shì)、還(hái)是緻力于幫助培養和促進(jìn)一個健康的社區?

更讓廣大開(kāi)發(fā)者感到憤怒的是,微軟還(hái)鎖定并限制了一個查詢請求,以删除 .NET 6 中用于 dotnet watch 的熱重載功能(néng) —— 這(zhè)嚴重阻礙了社區評論、以及拒絕最後(hòu)一分鍾的更改。

即使目前社區已經(jīng)提交了自己的查詢請求,以撤銷微軟的這(zhè)項變動,但現在看來也是不大可能(néng)得到回應的。


來源:cnBeta