天天看點

微軟認真聆聽了開源 .NET 開發社群的炮轟: 通過CLI 支援 Hot Reload 功能

微軟近日激怒了開源.NET社群,起因是它删除了開源.NET的一項旗艦功能,以提升Visual Studio 的吸引力,尤其是針對與Visual Studio頗有淵源的跨平台源代碼編輯器Visual Studio Code。 好消息是微軟聽取了社群的聲音,恢複了通過CLI支援HotReload功能。

今天早上.NET團隊負責人Scott Hunter在.NET官方部落格上釋出了一篇文章,具體參見 https://devblogs.microsoft.com/dotnet/net-hot-reload-support-via-cli/,文章提到了的願景是為.NET建立一個開放和充滿活力的生态系統。與許多公司一樣,微軟正在學習平衡 OSS 社群的需求,并成為.NET 的企業贊助商。有時候微軟做對了。當微軟做錯了,微軟能做的最好的事情就是從錯誤中吸取教訓,更好地向前邁進。

同時也透露了一個問題,微軟還沒有學會,如何跟一個強大的開源社群相處,這非常像美國還沒有學會,如何跟一個強大的中國相處一樣。 開源路上的挫折可能更快加速微軟同開源社群相處,我相信微軟是真的愛開源。

微軟認真聆聽了開源 .NET 開發社群的炮轟: 通過CLI 支援 Hot Reload 功能

最近備受争議的有兩個關鍵部分,一是GitHub上開源.NET SDK代碼存儲庫中的這個合并請(https://github.com/dotnet/sdk/pull/22217),即從一款名為dotnet watch的工具中删除了用于實作Hot Reload(熱重載)這項功能的2500行代碼,今天早上已經通過這個合并恢複了(https://github.com/dotnet/sdk/pull/22262);二是這篇博文,微軟首席項目經理Dmitry Lyalin在博文中透露:“我們已決定,從即将釋出的.NET 6正式版開始,我們将僅通過Visual Studio 2022啟用熱重載功能。”,早上Scott Hunter已經宣布恢複這項功能。

微軟認真聆聽了開源 .NET 開發社群的炮轟: 通過CLI 支援 Hot Reload 功能

(https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/)

熱重載是一項功能,開發人員可以利用該功能在應用程式運作時修改源代碼、實施更改,并在運作中的應用程式中檢視結果。該功能之是以可以加快開發過程,是由于它比重新建構代碼、停止應用程式、實施更改後再次啟動應用程式要快。

Lyalin當初在介紹重加載功能時表示,開發人員可以通過“Visual Studio 2019版本16.11(預覽版1)中的.NET熱重載體驗和.NET 6(預覽版4)中的dotnet watch指令行工具來使用它”。該功能出現在.NET 6 RC2中,該版本擁有上線(go-live)許可證,已于10月12日釋出,趕在計劃于11月9日召開的.NET Conf 2021線上大會上釋出.NET 6之前釋出。

删除熱重載在這個後期階段令人驚訝,令廣大.NET開發人員頗為驚愕和失望,以至于送出了阻止這一變更的合并請求,并迅速獲得了支援。一名開發人員說:“這是一場真正決定.NET是不是真是一個OSS[開源軟體項目]的公關活動。”

微軟認真聆聽了開源 .NET 開發社群的炮轟: 通過CLI 支援 Hot Reload 功能

為什麼這對我們所有人都很重要?

為什麼這麼重要?雖然熱重載是一項工具性質的功能,但這一變更的含義在于,開源.NET SDK被故意削弱功能,似乎隻是為了使Visual Studio(這款商業産品附有功能縮減的免費版)比競争對手更具吸引力,競争對手包括微軟贊助的Visual Studio Code。這次變更還是在未與開發社群通氣的情況下進行的。前陣子出現了一場危機:微軟成立和贊助的獨立自由軟體組織.NET基金會面臨同一個問題:微軟對.NET作為開源平台是否真的很上心?這場危機後,開發社群對此似乎見慣不怪。決定遏制熱重載的可用性也似乎讓外界頗感好奇。開發工具對于像微軟這樣的平台公司而言具有重要的戰略意義:簡而言之,它吸引廣大程式員支援平台。誰能忘記微軟前首席執行官Steve Ballmer及其在2000年微軟25周年慶祝活動上呐喊的“開發人員、開發人員、開發人員”?我們盡可一笑了之;然而,知名軟體行業分析公司Redmonk以“開發者是新的掌權者這一觀點”作為謀生之道。

一款關鍵業務應用程式可以促進使用者在Azure上大筆投入,而微軟雲是NET的自然目的地,正如谷歌雲得益于這家廣告公司作為Kubernetes的發明者這個地位一樣。Visual Studio Code是免費的,但也是微軟迄今在開發人員社群最成功的産品,VS Code中強有力地支援.NET對微軟可能帶來的好處遠遠超過對Visual Studio銷售帶來的任何輕微影響。

另一名開發人員說:“我是不是可以了解為這意味着在.NET 6預覽版中已經與dotnet watch配合使用的熱重載功能現在被取消了?現在我可以建立一個.NET控制台應用程式,使用dotnet watch運作它,更改檔案,并在不重新開機應用程式的情況下自動重載檔案。如果這項功能取消......無非是為了錢。”另一條評論問道:“如果你肆意遏制開發人員在Windows之外的平台上的體驗,又怎能指望.NET會成為一種用于跨平台開發的有效解決方案?”

讓一項關鍵的工具功能成為Visual Studio的獨享功能存在另一個問題,那就是它剝奪了 macOS和Linux開發人員的這個選項,因為Visual Studio僅面向Windows。微軟表示還計劃為 Visual Studio Mac推出這項功能,但與VS Code相比,其用途小得多。從社群的炮轟來看,實際情況并不是微軟想象的那樣,有大量的開發人員工作流依賴于.NET CLI的功能,還好微軟聽取了社群的聲音,及時改正錯誤。

參考資料:

https://www.theregister.com/2021/10/22/microsoft_net_hot_reload_visual_studio/

https://github.com/dotnet-foundation/Home/discussions/63

https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/

https://devblogs.microsoft.com/dotnet/net-hot-reload-support-via-cli/

歡迎大家掃描下面二維碼成為我的客戶,為你服務和上雲

微軟認真聆聽了開源 .NET 開發社群的炮轟: 通過CLI 支援 Hot Reload 功能
上一篇: mysql2