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