...

在(zài)開源社區的(de)強烈抗議下 微軟逆轉了(le/liǎo)有争議的(de).NET變化

2021-10-24

在(zài)開源社區的(de)公開抗議下,微軟正在(zài)改變從其即将發布的(de) .NET 6 中删除一(yī / yì /yí)個(gè)關鍵功能的(de)決定。本周早些時(shí)候,微軟因爲(wéi / wèi)商業利益原因在(zài)即将發布的(de) .NET 6 中删除了(le/liǎo) Hot Reload(熱重載)的(de)一(yī / yì /yí)個(gè)關鍵部分,從而(ér)激怒了(le/liǎo) .NET 開源社區,該功能允許開發者在(zài)應用運行時(shí)修改源代碼,并立即看到(dào)結果。

hotreload.gif

這(zhè)是(shì)一(yī / yì /yí)個(gè)許多人(rén)一(yī / yì /yí)直期待在(zài) Visual Studio Code 和(hé / huò)多個(gè)平台上(shàng)使用的(de)功能,直到(dào)微軟在(zài)最後一(yī / yì /yí)刻做出(chū)了(le/liǎo)一(yī / yì /yí)個(gè)有争議的(de)決定,将其鎖定在(zài) Visual Studio 2022,這(zhè)是(shì)一(yī / yì /yí)個(gè)僅限于(yú) Windows 的(de)付費産品,據透露,最後一(yī / yì /yí)刻的(de)改變是(shì)由微軟開發者部門的(de)負責人(rén) Julia Liuson 做出(chū)的(de),是(shì)一(yī / yì /yí)個(gè)以(yǐ)商業利益爲(wéi / wèi)考量的(de)舉措。

"微軟承認它犯了(le/liǎo)一(yī / yì /yí)個(gè)錯誤"

在(zài)引起反響後,微軟現在(zài)已經推翻了(le/liǎo)這(zhè)一(yī / yì /yí)改變,微軟自己的(de)許多員工在(zài)公司内部也(yě)很憤怒。"我們在(zài)執行我們的(de)決定時(shí)犯了(le/liǎo)一(yī / yì /yí)個(gè)錯誤,花了(le/liǎo)比預期更長的(de)時(shí)間來(lái)回應社區,".NET 項目管理主任 Scott Hunter 解釋說(shuō)。微軟現在(zài)已經批準了(le/liǎo)社區的(de)拉動請求,重新啓用這(zhè)一(yī / yì /yí)功能,它将在(zài) .NET 6 SDK 的(de)最終版本中提供。

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

不(bù)過,微軟的(de)博客文章并沒有談到(dào)這(zhè)個(gè)有争議的(de)決定。相反,它表明删除代碼而(ér)不(bù)是(shì)簡單地(dì / de)禁用它隻是(shì)一(yī / yì /yí)個(gè)錯誤,而(ér)不(bù)是(shì)一(yī / yì /yí)個(gè)商業決定。亨特說(shuō):"在(zài)我們努力擴大(dà)範圍的(de)過程中,我們無意中最終删除了(le/liǎo)源代碼,而(ér)不(bù)是(shì)僅僅不(bù)調用該代碼路徑,"。

雖然對 .NET 社區來(lái)說(shuō),這(zhè)種逆轉是(shì)值得歡迎的(de),但對那些重視這(zhè)種決策透明度的(de)人(rén)來(lái)說(shuō),圍繞這(zhè)一(yī / yì /yí)事件的(de)解釋和(hé / huò)情況不(bù)會讓他(tā)們感到(dào)輕松。

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

這(zhè)一(yī / yì /yí)事件發生在(zài) .NET 社區因微軟參與 .NET 基金會而(ér)産生的(de)數周動蕩之(zhī)後。該基金會是(shì)在(zài) 2014 年微軟将 .NET 開源時(shí)創建的(de),它應該是(shì)一(yī / yì /yí)個(gè)獨立的(de)組織,其存在(zài)是(shì)爲(wéi / wèi)了(le/liǎo)改善 .NET 的(de)開源軟件開發和(hé / huò)合作。一(yī / yì /yí)位辭職的(de)董事會成員最近對 .NET 基金會的(de)作用提出(chū)質疑,他(tā)問道(dào):"在(zài)這(zhè)裏是(shì)爲(wéi / wèi)了(le/liǎo)執行微軟對 .NET 開源的(de)意志,還是(shì)爲(wéi / wèi)了(le/liǎo)幫助培養和(hé / huò)促進一(yī / yì /yí)個(gè)健康的(de)社區?"

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

1.jpg

相關閱讀

微軟在(zài)最後一(yī / yì /yí)刻砍掉 .NET 6 熱重載代碼,結果惹惱開源社區

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

據悉,微軟内部的(de)一(yī / yì /yí)項有争議的(de)商業決策,讓許多人(rén)都開始質疑該公司對開源的(de)承諾。多個(gè)消息來(lái)源向 TheVerge 透露,此舉同樣激怒了(le/liǎo)微軟自家的(de)許多開發者,但他(tā)們卻被壓着不(bù)許公開抱怨。

具體說(shuō)來(lái)是(shì),在(zài)本周即将發布的(de) .NET 6 中,這(zhè)家雷德蒙德軟件巨頭悄然删除了(le/liǎo) Hot Reload 的(de)一(yī / yì /yí)個(gè)關鍵部分。該功能基本上(shàng)允許開發者在(zài)創建項目時(shí)獲得即時(shí)反饋、并更改代碼以(yǐ)立即查看結果。

與競争對手 Google 家的(de) Dart 編程語言和(hé / huò) Flutter 開發工具包來(lái)說(shuō),這(zhè)是(shì)微軟 .NET 框架的(de)一(yī / yì /yí)個(gè)極大(dà)賣點,且該公司一(yī / yì /yí)直在(zài)積極将它引入 .NET 和(hé / huò) Visual Studio 集成開發環境。

微軟最初的(de)計劃描述,是(shì)将 Hot Reload 帶給盡可能多的(de) .NET 開發者。然而(ér)最後一(yī / yì /yí)刻的(de)更改,又将它局限在(zài)了(le/liǎo) Windows 平台上(shàng)的(de) Visual Studio 開發人(rén)員,而(ér)不(bù)是(shì)走向開放與跨多個(gè)平台使用。

微軟一(yī / yì /yí)直在(zài)測試接近最終版本的(de) .NET 6 候選發布(RC)版本,其允許開發者通過 dotnet watch 在(zài)各種環境和(hé / huò)平台上(shàng)使用熱重載,包括流行的(de) VS Code 開發環境。

候選發布通常意味着功能完好、做好了(le/liǎo)投入生産的(de)準備、且盡可能修複了(le/liǎo)測試期間發現的(de)各種錯誤。

2.png

然而(ér)本周早些時(shí)候宣布的(de)最後一(yī / yì /yí)分鍾修改,又僅在(zài) Visual Studio 2022 中啓用了(le/liǎo)熱重載功能。負責該功能的(de)微軟項目經理 Dmitry Lyalin 給出(chū)的(de)理由是(shì),其旨在(zài)爲(wéi / wèi)大(dà)多數用戶提供最佳體驗。

但是(shì)在(zài) GitHub 上(shàng),還是(shì)有大(dà)量開發者對此表達了(le/liǎo)嚴重的(de)挫敗感,Hacker News 和(hé / huò)微軟官方播客文章下的(de)評論也(yě)是(shì)一(yī / yì /yí)篇罵聲。曾在(zài)微軟 F# 團隊工作的(de) Phillip Carter 在(zài)評論中寫道(dào):

在(zài)查看了(le/liǎo)源碼之(zhī)後,我發現了(le/liǎo)一(yī / yì /yí)個(gè)更讓人(rén)感到(dào)失望的(de)事實 —— Hot Reload 的(de)支持代碼隻有 1~2 千行左右,但它們還是(shì)在(zài)最後一(yī / yì /yí)刻被撕票了(le/liǎo)。

作爲(wéi / wèi)一(yī / yì /yí)項起初并不(bù)局限于(yú) Visual Studio 的(de)功能,這(zhè)是(shì)一(yī / yì /yí)個(gè)明顯的(de)倒退,我真不(bù)希望微軟就(jiù)此走上(shàng)回頭路。

The Verge 了(le/liǎo)解到(dào),從 .NET 6 中删除該功能的(de)決定,是(shì)由微軟開發部門負責人(rén) Julia Liuson 做出(chū)的(de)。消息人(rén)士稱,此舉是(shì)一(yī / yì /yí)項以(yǐ)業務爲(wéi / wèi)主導的(de)決定。

3.png

(傳送門:GitHub

顯然,微軟本想着偷偷引入這(zhè)項變化,且預計不(bù)會引發強烈的(de)反對。

但是(shì)對于(yú)長期在(zài)開源社區從事 .NET 相關工作的(de)微軟自家工程師看來(lái),連他(tā)們都感到(dào)了(le/liǎo)深深的(de)傷害與背叛,甚至擔心這(zhè)一(yī / yì /yí)決定會對微軟後續的(de)開源工作産生持久不(bù)利的(de)影響。

最初在(zài) GitHub 上(shàng)曝光此事的(de)獨立開發者 Reily Wood 寫道(dào):

如果你想獲得良好的(de)開發體驗,Visual Studio 無疑是(shì)最佳的(de)選擇。但 .NET 團隊的(de)所作所爲(wéi / wèi),又與所有跨平台工作背道(dào)而(ér)馳。

回顧 2014 年,當時(shí)微軟宣布了(le/liǎo)要(yào / yāo)将 .NET 開源。之(zhī)後其本應保持獨立自治,以(yǐ)期改善 .NET 開源軟件的(de)開發與寫作。

然而(ér)近日,一(yī / yì /yí)位卸任的(de)董事會成員對 .NET 基金會的(de)角色提出(chū)了(le/liǎo)質疑,詢問它是(shì)否僅代表微軟的(de)意願行事、還是(shì)緻力于(yú)幫助培養和(hé / huò)促進一(yī / yì /yí)個(gè)健康的(de)社區?

更讓廣大(dà)開發者感到(dào)憤怒的(de)是(shì),微軟還鎖定并限制了(le/liǎo)一(yī / yì /yí)個(gè)查詢請求,以(yǐ)删除 .NET 6 中用于(yú) dotnet watch 的(de)熱重載功能 —— 這(zhè)嚴重阻礙了(le/liǎo)社區評論、以(yǐ)及拒絕最後一(yī / yì /yí)分鍾的(de)更改。

即使目前社區已經提交了(le/liǎo)自己的(de)查詢請求,以(yǐ)撤銷微軟的(de)這(zhè)項變動,但現在(zài)看來(lái)也(yě)是(shì)不(bù)大(dà)可能得到(dào)回應的(de)。


來(lái)源:cnBeta