.NET項目被曝缺錢,微軟兩難!
譯文?編譯丨千山、布加迪
審校 | 云昭
日前,AWS軟件開發經理Saikat Banerjee在2022 re:Invent大會上稱:“我們發現.NET開源項目資金嚴重不足。”
在外界看來,這一說法多少令人吃驚。畢竟微軟成立了.NET基金會,聲稱這是“一個獨立的非營利性組織,旨在支持圍繞.NET平臺發展起來的一個創新、對商業友好的開源生態系統?!盇WS是僅有的10家企業贊助商之一。
不可否認,微軟的.NET團隊在這個平臺上投入了大量精力,在技術層面上也歡迎包括AWS在內的外部貢獻者付出的努力,但.NET項目的開源生態建設之路卻并不如預想中那么順遂。
盡管如此,AWS依舊表示將一如既往支持.NET,包括:為項目提供資金;對社區中出色的.NET項目給予積分獎勵;積極參與.NET跨平臺的代碼開發工作,努力致力于.NET去Windows/跨平臺化。
1、擺脫微軟,AWS正加速.NET的跨平臺開發
“在過去的兩年里,我們花了大量時間讓客戶從.NET Framework轉向.NET Core,那樣客戶可以擺脫Windows和SQL Server許可證,并使用Linux和云原生技術?!盇WS高級產品經理Mayur Dewaikar如是說。
.NET Core(現在正式稱為.NET)是開源跨平臺版本,于2016年首次發布,其前身是.NET Framework。AWS之所以如此專注于.NET跨平臺開發的實現,正是因為.NET Framework出自Windows平臺,導致調用COM或其他原生Windows API的應用程序將無法在Linux上運行。
另一方面,.NET Framework的一些部分(包括ASP.NET WebForms和Windows Communication Foundation即WCF的許多組件)不是.NET Core的一部分,這讓很多.NET應用程序更適合Windows或Azure云環境,移植到其他環境變得異常困難。
為解決這些問題,AWS進行了多項嘗試。
首先,改進WCF。據Banerjee聲稱,AWS在努力“改進WCF,不讓其墨守成規”。這項工作包括對HTTP綁定提供聯合身份支持,以及擴展WFC消息隊列支持,除了微軟消息隊列(MSMQ)外,還支持其他消息代理,比如RabbitMQ和Amazon SQS(簡單隊列服務)。
然后,開發實現從Linux容器連接Active Directory的代碼。在Windows AD中,組管理服務帳戶(gMSA)常常用作應用程序服務的帳戶。這是一種可以移植到Linux的出色架構。AWS開發了一個名為憑據獲取器(credentialsfetcher)的組件,這是位于Linux實例上的守護進程。這允許用戶在Linux容器中使用gMSA。
另外,Serverless NET(尤其是在Lambda上)是另一個棘手的問題。根據用戶反饋,用.NET啟動Lambda時經常出現冷啟動問題。問題不僅在于每次函數運行時都需要加載.NET運行時環境,而且JIT(及時)編譯器每次都要啟動,才能將.NET中間代碼編譯成原生代碼,這也需要很長時間。最近的.NET7版本中的解決方案是AOT(運行前)編譯。因此,AWS為.NET開發了Lambda工具,將原生AOT編譯添加到Lambda函數中。
據Dewaikar介紹,.NET在AWS是從事應用程序開發的人氣第三高平臺,僅次于Python和Java。即使微軟的Azure云更適合.NET應用程序,已統一采用AWS的企業也可能希望與部署的其他云系統一起運行其.NET代碼。
從這一點來看,AWS對.NET開源工作的支持與投入主要是為了讓.NET擺脫對Windows的依賴,更易于使用其Linux VM和云原生技術,從而獲取更多云服務客戶。
2、微軟的矛盾:.NET開源的曲折路程
回顧.NET本身的發展史,20年間一路走來有驚喜、也有質疑。
將時間回撥到2002年2月,微軟正式發布Visual Studio .NET,時任CEO的比爾·蓋茨將其描述為“第一個用于構建XML Web服務和下一代互聯網應用程序的完全集成的開發環境”。彼時,它被寄予厚望,以創新的技術體系阻擊當時如日中天的Java。
但事實上,在.NET初出襁褓的那幾年,微軟的決策層雖然曾在宣傳中打出“開放牌”,但行動上依舊堅持閉源,致力于捍衛自身的專利護城河,這讓.NET在很長一段時間里只能用于Windows平臺,跨平臺能力的缺失讓.NET在非Windows用戶群體中的推廣天然受阻。
直到2014年,微軟新CEO納德拉上任。在發布會上,他釋放出了明確的信號:Windows未來將不再具備從前的重要地位,云和移動才是微軟未來的核心。自此,微軟才開始真正從閉源時代的殘照中走出,真正開始“擁抱開源”。而官方支持.NET的跨平臺工作就是他們邁出的標志性一步。
.NET能發展至今,很大程度上歸功于微軟對于開源的態度轉變。不過.NET在開源社區中一直以來仍存在很多爭議。比如,和微軟、Windows的深度捆綁,讓社區遲遲難以壯大,生態也很難繁榮,也讓很多項目維護者對其中立性保持質疑。
網友評論@知乎
而且即使是發展至今,微軟內部對.NET的開源方面依舊持有矛盾心理,甚至可以說是存在資源的博弈。
2021年10月,微軟在即將發布的.NET6中悄悄刪除了熱重載功能,宣稱僅在Visual Studio中支持該功能,強制用戶改用昂貴的Visual Studio 2022,就曾引發了一眾批評。雖然微軟方面很快恢復了這一功能并公開道歉,但這一事件確實“違背了項目維護者的信任”,而這一裂縫的彌合又不知需要多少時間。
3、寫在最后
.NET作為開發平臺的熱門選手,其開源進程的每一個動作都會影響到開發者的工作日常。此次曝出開源資金不足的問題,難免會讓人質疑微軟對于.NET開源的決心和力度。
可以肯定的是,微軟不再視開源為洪水猛獸,甚至在逐步重視開源社區的發展和力量。不過作為一家商業公司,其真正關注的從來不是某個項目開源與否,而是這個項目是否有商業價值,是否能幫助微軟的平臺產品獲取更多的市場占有率。這才是這一巨頭的生存本能。
參考鏈接:
https://www.theregister.com/2022/12/01/net_open_source_heavily_underfunded/
https://blog.csdn.net/farway000/article/details/123143983
https://www.zhihu.com/question/547001632/answer/2613170001