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