微軟認真聆聽了開源 .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 的企業贊助商。有時候微軟做對了。當微軟做錯了,微軟能做的最好的事情就是從錯誤中吸取教訓,更好地向前邁進。

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

image

最近備受爭議的有兩個關鍵部分,一是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已經宣佈恢復這項功能。

image

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[開源軟件項目]的公關活動。”

image

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

爲什麼這麼重要?雖然熱重載是一項工具性質的功能,但這一變更的含義在於,開源.NET SDK被故意削弱功能,似乎只是爲了使Visual Studio(這款商業產品附有功能縮減的免費版)比競爭對手更具吸引力,競爭對手包括微軟贊助的Visual Studio Code,據說做出決策的是研發最高負責人Julia Liuson。這次變更還是在未與開發社區通氣的情況下進行的。前陣子出現了一場危機:微軟成立和贊助的獨立自由軟件組織.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的功能,還好微軟聽取了社區的聲音,及時改正錯誤。

參考資料:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章