微軟在最後一刻砍掉. NET 6熱重載代碼 結果惹惱開源社區
在薩蒂亞·納德拉接管了微軟CEO的職務之後,這家軟體巨頭一直在過去10年裡積極擁抱開源,並且主動傳達了對Linux和開源社區的熱愛。 五年前,該公司更是加入了Linux基金會,且官方對此表示了贊許。 然而由於 .NET 社區正在醞釀的一場風暴,所有這些善意,都正處於一觸即潰的危險邊緣。
據悉,微軟內部的一項有爭議的商業決策,讓許多人都開始質疑該公司對開源的承諾。 多個消息來源向 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 開發環境。
候選發佈通常意味著功能完好、做好了投入生產的準備、且盡可能修復了測試期間發現的各種錯誤。
然而本周早些時候宣布的最後一分鐘修改,又僅在Visual Studio 2022 中啟用了熱重載功能。 負責該功能的微軟項目經理 Dmitry Lyalin 給出的理由是,其旨在為大多數使用者提供最佳體驗。
但是在 GitHub 上,還是有大量開發者對此表達了嚴重的挫敗感,Hacker News 和微軟官方播客文章下的評論也是一篇罵聲。 曾在微軟 F# 團隊工作的 Phillip Carter 在評論中寫道:
在查看了源碼之後,我發現了一個更讓人感到失望的事實 —— Hot Reload 的支持代碼只有 1~2 千行左右,但它們還是在最後一刻被撕票了。
作為一項起初並不局限於 Visual Studio 的功能,這是一個明顯的倒退,我真不希望微軟就此走上回頭路。
The Verge瞭解到,從 .NET 6 中刪除該功能的決定,是由微軟開發部門負責人 Julia Liuson 做出的。 消息人士稱,此舉是一項以業務為主導的決定。
(傳送門:GitHub)
顯然,微軟本想著偷偷引入這項變化,且預計不會引發強烈的反對。
但是對於長期在開源社區從事 .NET 相關工作的微軟自家工程師看來,連他們都感到了深深的傷害與背叛,甚至擔心這一決定會對微軟後續的開源工作產生持久不利的影響。
最初在 GitHub 上曝光此事的獨立開發者 Reily Wood 寫道:
如果你想獲得良好的開發體驗,Visual Studio 無疑是最佳的選擇。 但 .NET 團隊的所作所為,又與所有跨平臺工作背道而馳。
回顧 2014 年,當時微軟宣佈了要將 .NET 開源。 之後其本應保持獨立自治,以期改善 .NET 開源軟體的開發與寫作。
然而近日,一位卸任的董事會成員對 .NET 基金會的角色提出了質疑,詢問它是否僅代表微軟的意願行事、還是致力於説明培養和促進一個健康的社區?
更讓廣大開發者感到憤怒的是,微軟還鎖定並限制了一個查詢請求,以刪除 .NET 6 中用於 dotnet watch 的熱重載功能 —— 這嚴重阻礙了社區評論、以及拒絕最後一分鐘的更改。
即使目前社區已經提交了自己的查詢請求,以撤銷微軟的這項變動,但現在看來也是不大可能得到回應的。