刪除“熱重載”功能的意味著什么
據了解,所謂 Hot Reload(熱重載)功能,是一個可以允許開發者在應用程序運行時更改源代碼,并立即看到效果的關鍵功能。換句話說,就是在開發人員寫代碼過程中,獲得修改代碼的即時反饋,從而幫助軟件開發人員提高開發效率。
此前,微軟曾高調宣布將在 .NET 6 中加入“熱重載”功能,但是微軟又悄悄地從名為 dotnet watch 的工具中刪除 2500 行“熱重載”功能的源代碼。
10 月 20 日,微軟項目經理 Dmitry Lyalin 發布一篇博文表示:“我們決定從即將發布的 .NET 6 GA 開始,現在只通過 Visual Studio 2022 啟用熱重新加載功能。”
就是這個消息,瞬間引爆了整個 .NET 社區。對于不熟悉開源社區的朋友來說,微軟僅僅刪除一個“熱重載”功能,。NET 社區開發者為什么這么激動呢?
實際上,微軟刪除 .NET 6.0 的熱重載功能是將其限制在自家產品 Visual Studio 開發平臺上,拒絕開放給其它平臺使用,微軟此舉已經違背了開源社區的“發展初心”。
準確來說,微軟已經將開源 .NET SDK 故意削弱了,使得微軟自家免費的商業產品 Visual Studio 比競爭對手更具吸引力,包括微軟贊助的 Visual Studio Code。最重要的是,此次更改微軟是在沒有與 .NET 社區協商的情況下完成的。
為此,人們聯想到之前關于 .NET 基金會的“數次危機”。此前一位卸任的董事會成員就對 .NET 基金會的角色提出了質疑,詢問它是否僅代表微軟的意愿行事、還是致力于幫助培養和促進一個健康的社區?
據了解,微軟此次不僅將 .NET 6.0 的熱重載功能刪除,目前 macOS 和 Linux 開發人員那里也刪除了該選項,內部人士稱:“現在這個功能真的成為了 Windows 和 Visual Studio 開發平臺獨有的工具了”。
微軟道歉:恢復 .NET SDK 熱重載功能
由于 .NET 社區強烈譴責微軟從 .NET SDK 中刪除了熱重載(Hot Reload)功能,微軟不得不出來道歉,并宣布恢復 .NET 中的熱重載功能。
恢復熱重載功能GitHub截圖
10月23日,微軟官方發布博文道歉:“首先,也是最重要的,我們要道歉。我們在執行我們的決定時犯了一個錯誤,花了比預期更長的時間來回復社區。我們已經批準了重新啟用這一代碼路徑的拉取請求,它將在 .NET 6 SDK 的 GA 構建中出現。”
微軟方面解釋稱,因為于絕大多數 .NET 開發人員都在使用 Visual Studio,他們為了確保 VS 為 .NET 6 提供最佳體驗,所以他們選擇首先將 Hot Reload 引入 VS 2022。
同時微軟強調是無意中刪除了這段源代碼,而不是不調用該代碼路徑。在文章的最后,微軟再次進行了道歉,并表示:他們的愿望是為 .NET 創造一個開放和充滿活力的生態系統。和許多公司一樣,他們也正在學習如何平衡 OSS 社區的需求和作為 .NET 的企業贊助商之間的關系。
網友對此看法不一
即便微軟決定恢復 .NET SDK 中熱重載(Hot Reload)功能,還是引起了眾多網友的議論。
@Georg Dangl 網友認為:這是開源理念的一個很好的證明--問題得到了承認,反饋得到了迅速解決。
@Cory Crooks 網友并不認可微軟官方說法。他們認為“微軟無意中刪除了源代碼,而不是不調用該代碼路徑”。這是否意味著代碼將在那里,現在仍然無法從命令行使用?
@ Allan Lindqvist 網友認為這篇博文聽起來是個好消息,但并沒有說明如何恢復熱重載(Hot Reload)功能,也沒有解釋微軟是否試圖以犧牲其他平臺為代價,促進 Visual Studio 成為 .net 生態系統中的“一等公民”等問題。
對此,你怎么看?歡迎留言評論。