微軟在最後一刻砍掉.NET 6熱重載代碼 結果惹惱開源社區

在薩蒂亞·納德拉接管了微軟 CEO 的職務之後,這家軟件巨頭一直在過去 10 年裡積極擁抱開源,並且主動傳達了對 Linux 和開源社區的熱愛。五年前,該公司更是加入了 Linux 基金會,且官方對此表示了讚許。然而由於 .NET 社區正在醞釀的一場風暴,所有這些善意,都正處於一觸即潰的危險邊緣。

1.jpg

據悉,微軟內部的一項有爭議的商業決策,讓許多人都開始質疑該公司對開源的承諾。多個消息來源向 TheVerge 透露,此舉同樣激怒了微軟自家的許多開發者,但他們卻被壓着不許公開抱怨。

具體說來是,在本周即將發布的 .NET 6 中,這家雷德蒙德軟件巨頭悄然刪除了 Hot Reload 的一個關鍵部分。該功能基本上允許開發者在創建項目時獲得即時反饋、並更改代碼以立即查看結果。

與競爭對手 Google 家的 Dart 編程語言和 Flutter 開發工具包來說,這是微軟 .NET 框架的一個極大賣點,且該公司一直在積極將它引入 .NET 和 Visual Studio 集成開發環境。

微軟最初的計劃描述,是將 Hot Reload 帶給儘可能多的 .NET 開發者。然而最後一刻的更改,又將它局限在了 Windows 平台上的 Visual Studio 開發人員,而不是走向開放與跨多個平台使用。

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

候選發布通常意味着功能完好、做好了投入生產的準備、且儘可能修復了測試期間發現的各種錯誤。

2.png

然而本周早些時候宣布的最後一分鐘修改,又僅在 Visual Studio 2022 中啟用了熱重載功能。負責該功能的微軟項目經理 Dmitry Lyalin 給出的理由是,其旨在為大多數用戶提供最佳體驗。

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

在查看了源碼之後,我發現了一個更讓人感到失望的事實 —— Hot Reload 的支持代碼只有 1~2 千行左右,但它們還是在最後一刻被撕票了。

作為一項起初並不局限於 Visual Studio 的功能,這是一個明顯的倒退,我真不希望微軟就此走上回頭路。

The Verge 了解到,從 .NET 6 中刪除該功能的決定,是由微軟開發部門負責人 Julia Liuson 做出的。消息人士稱,此舉是一項以業務為主導的決定。

3.png

(傳送門:GitHub)

顯然,微軟本想着偷偷引入這項變化,且預計不會引發強烈的反對。

但是對於長期在開源社區從事 .NET 相關工作的微軟自家工程師看來,連他們都感到了深深的傷害與背叛,甚至擔心這一決定會對微軟後續的開源工作產生持久不利的影響。

最初在 GitHub 上曝光此事的獨立開發者 Reily Wood 寫道:

如果你想獲得良好的開發體驗,Visual Studio 無疑是最佳的選擇。但 .NET 團隊的所作所為,又與所有跨平台工作背道而馳。

回顧 2014 年,當時微軟宣布了要將 .NET 開源。之後其本應保持獨立自治,以期改善 .NET 開源軟件的開發與寫作。

然而近日,一位卸任的董事會成員對 .NET 基金會的角色提出了質疑,詢問它是否僅代表微軟的意願行事、還是致力於幫助培養和促進一個健康的社區?

更讓廣大開發者感到憤怒的是,微軟還鎖定並限制了一個查詢請求,以刪除 .NET 6 中用於 dotnet watch 的熱重載功能 —— 這嚴重阻礙了社區評論、以及拒絕最後一分鐘的更改。

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