逃離被微軟支配的恐懼,.NET 開發者們 Fork 了一個開源分支
InfoQ · 科技 ·

逃離被微軟支配的恐懼,.NET 開發者們 Fork 了一個開源分支

這件事情引發了廣大開發者的強烈抗議。雖然微軟最後迫於形勢更改了決策,並給

「不用擔心微軟討厭誰,或者本周有什麼語言或框架被宣布死亡。相反,要擁抱進步,積極自我提高。」


一個月前,微軟從.NET 6 中悄悄刪除 Hot Reload 功能,從商業策略出發只為 Visual Studio 付費用戶提供,這件事情引發了廣大開發者的強烈抗議。雖然微軟最後迫於形勢更改了決策,並給予了道歉,但顯然還無法平息大家的憤怒。


昨天,HackerNews 熱榜上又一條關於.NET 的消息爬了上來:「The Microsoft .NET platform has been forked: Introducing Open.NET」。


在 Open.NET 項目的 GitHub 頁面中,創建者們表示希望能有一個不受微軟控制的「Open.NET」社區,能讓 .NET 完成向開放程式語言的過渡。他們強調說,其它開源程式語言都是在開放環境中開發的,而不是像.NET 這樣隔離大量開發人員進行黑箱操作。


d功能,從商業策略出發只為VisualStudio付費用戶提供,


微軟上個月做出的這個商業決策,無疑深深傷害了開發者的感情。對於那些仍然討厭微軟的人來說,它將成為又一個說明「微軟讓人無法信任」的例子。


事件回顧:無視開發者,微軟不斷加強對.NET 的控制


10 月 20 日,社區發現微軟在即將發布的.NET 6 中悄悄刪除了 Hot Reload 中的一個關鍵組件。Hot Reload 功能希望幫助開發者在創建項目時隨時獲取即時反饋,並在更改代碼後可以立即查看結果。相較於谷歌推出的競爭性 Dart 程式語言與 Flutter 工具包, Hot Reload 無疑頗具賣點,微軟也一直希望能把這項功能推向.NET 與 Visual Studio。


微軟在最初的計劃聲明中將其描述為「一個雄心勃勃的項目,希望將 Hot Reload 帶給更多.NET 開發人員。」但就在成果即將發布的最後一刻,微軟突然決定把受眾範圍縮小至 Windows 與 Visual Studio 開發人員、不再開放跨平台版本。


荒謬的是,微軟之前一直在測試、而且已經非常接近最終版本的.NET 6 候選版允許開發者通過 donet watch 在各類環境及平台上靈活使用 Hot Reload 功能,其中也包括頗具人氣的 Visual Studio Code 開發環境。所謂候選版,就是功能完備、已經通過廠商生產就緒測試的版本,只需要在正式發布之前再檢查一下 bug 即可。


微軟在發布的最後一刻突然變卦,表示「Hot Reload 功能將僅通過 Visual Studio 2022 發布,旨在保證為大多數用戶提供最佳體驗。」微軟公司 Hot Reload 功能項目負責人 Dmitry Lyalin 則把話說得更明白,微軟結合「優先考量」,所以才放棄了將 Hot Reload 直接納入 dotnet watch 工具的計劃。社區對此明顯大為惱火,GitHub 上已經有帖子對此提出質疑。Hacker News 網站及微軟自己的相關博文下方也出現不少抗議性評論。


一個月前,微軟從NET6中悄悄刪除HotReloa


「請不要誤會,這裡我們做出澄清。面對需要應對的龐大場景數量,我們必須做出優先考量。因此,Hot Reload 不會作為 dotnet watch 工具中的功能發布。我們正在 VS 2022 上著力完美這項功能,稍後還將推出 VS4Mac 支持。」


微軟公司前 F# 團隊雇員 Phillip Carter 坦言,「在查看原始碼後,情況更加令人失望。相關支持代碼共有 1000 到 2000 行,但卻在發布前最後一刻被撤掉了。這顯然是在開歷史的倒車,Hot Reload 功能在設計之初也壓根不屬於 Visual Studio 獨占。恐怕未來還會有更多類似的情況出現。


根據媒體掌握的情況,從.NET 6 中刪除 Hot Reload 功能的決定來自微軟開發部門負責人 Julia Liuson。據消息人士稱,這項決定的深層考量在於保障業務收益。微軟明顯覺得這不是什麼大事,卻沒想到激起了社區的憤怒回應。在.NET 項目上與開源社區合作多年的微軟工程師們感到被公司背叛,同時擔心這樣的決定會對微軟後續的開源參與工作造成深遠影響。


最早在 GitHub 上抗議此次功能刪除的獨立開發者 Reilly Wood 表示,「微軟的行為其實傳達出這樣的信息:想要良好的開發者體驗,就得使用 Visual Studio。這似乎與.NET 團隊之前的一切跨平台努力背道而馳。」


.NET 基金會董事被迫辭職


而就在此事之前,微軟加入.NET 基金會的消息在.NET 社區中已經引發動盪。.NET 基金會成立於 2014 年,當時微軟決定將.NET 項目開源,因此基金會本身應該以獨立組織的身份持續推動.NET 開源軟體的發展與協作。而一位辭職的董事會成員 Rodney Littles 近期公開質疑.NET 基金會的角色定位,詢問「基金會到底是在幫助培養和推進社區健康穩定,還是幫助微軟保持對開源.NET 的管控能力?」


微軟還鎖定並限制了一項 pull 請求,藉以從.NET 6 dotnet watch 工具中刪除 Hot Reload 功能。如此一來,社區就無法抓住最後時機評論或拒絕這項臨時更改。雖然現在社區再次提交 pull 請求希望恢復 Hot Reload,但被批准的可能性明顯不大。


面對.NET 基金會獨立性遭受質疑、微軟加入很可能建立掌控特權等呼聲,另一位董事也選擇了辭職。


或框架被宣布死亡。相反,要擁抱進步,積極自我提高。」


為了推動 @dotnetfdn 繼續向前發展,我已辭去執行董事職務。我仍會留在 @dotnet 團隊,也期待能繼續為我最喜愛的平台貢獻力量。


對微軟的「不信任」是不斷累積出來的


這項有爭議的商業決策,讓很多人再次懷疑起軟體巨頭做出的開源承諾。根據多位公司內部消息人士證實,此舉也激怒了微軟公司大批開發人員,而後續上峰下達的「禁止抱怨」命令不僅無助於緩解事態、反而將群眾情緒推向高點。


在微軟之外,其他程式設計師罵的更加直接:「這是一個極其短視的決定,讓我對 .NET 的未來感到害怕。我非常尊重 .NET 團隊,我非常肯定他們不是這背後的人。」


雖然最後微軟更改了決策,並給予了道歉,但對於那些仍然討厭微軟的人來說,這將成為又一個無法信任微軟的例子。


不顧及開發者利益、側重從商業角度考慮問題,這樣的事情在微軟的產品發展歷史上已經屢見不鮮。很多產品甚至還在享受甚至仍然擁有強大的開發者支持,包括 Visual Basic、Microsoft Liquid Motion、Microsoft Blend、Microsoft WebMatrix、Microsoft LightSwitch for Visual Studio 和 Microsoft Expression Web(或許還包括 UWP)。


尤其傷害開發者的還有 2011 年微軟突然宣布放棄「Silverlight」的事件。Silverlight 是微軟花費巨資開發的 Web 應用程式開發框架。當時,很多開發人員也都覺得自己應該投資 Silverlight,但微軟直接宣布了 Silverlight 的死亡,轉而採用 HTML5 等新興標準。


我說服了公司在一項重要產品上使用 Silverlight。大量的投資包括人力和學習過程。在我們的實施過程中,微軟給 Silverlight 的未來扔下了一顆炸彈。我無法描述那種被背叛、沮喪的感覺,更不用說來自上層管理團隊的壓力。作為一個開發者,我的問題非常簡單。為什麼微軟要做這樣一件奇怪的事情來失去開發者的信任?為什麼微軟不能簡單地繼續支持 / 倡導 Silverlight,同時將 HTML5 視為一種新的趨勢和發展路徑呢?身為開發者,我認為微軟的策略是兩敗俱傷……我已經不再鼓吹微軟的任何新技術了。


之後,開發者對微軟的不信任感逐漸深入到骨髓,一直非常擔心會再次遭受 Silverlight 這樣突然被淘汰的事情。


十年前,對要採用.NET 的開發者,有人勸阻道:「難道你沒有聽到 .NET 開發者對微軟將應用開發重點從 .NET 轉移到 HTML/JS/CSS 的強烈抗議嗎?難道你沒有聽到 Silverlight 開發者憤怒的聲音嗎?」


十年後,因為.NET 這個 Hot Reload 事件,有開發者再次提及微軟 Silverlight,表示大家對微軟的憤怒情緒一直都十分強烈。


「不用擔心微軟討厭誰,或者本周有什麼語言


毫無疑問,所有的開發工具公司都會推出新的產品和技術,然後由於商業決策的需要,許多產品和技術會被淘汰或投入會收縮。對於被 Silverlight「照耀」的恐懼,最合理的想法可能來自於 Ed Charbeneau,當時他是 Telerik 的開發者倡導者,在幾年前的一篇題為《微軟討厭企業開發者》的博文中。


Charbeneau 在談到「.NET Core 5」的變化時(事實證明這並不是一回事,因為 .NET Core 變成了 .NET),並不認為微軟憎恨企業開發者,他基本上建議這些開發者接受這些改變:


「少花點時間擔心微軟討厭誰,或者本周有什麼語言或框架被宣布死亡。相反,要擁抱進步,積極參與自我提高和教育。要做一個摒棄舊思維方式的人,要擁有更高的生產力,要跨平台,要開源。若能做到這一點,你會發現自己被一套獨特的技能所武裝,可以用來解決明天的問題,而不是無所事事地應付過去的問題。」

聲明:文章觀點僅代表作者本人,PTTZH僅提供信息發布平台存儲空間服務。
喔!快樂的時光竟然這麼快就過⋯
繼續其他精彩內容吧!
more