1. 程式人生 > >.NET開源進行時:消除誤解、努力前行(本文首發於《程式設計師》2015第10A期的原始版本)

.NET開源進行時:消除誤解、努力前行(本文首發於《程式設計師》2015第10A期的原始版本)

2014年11月12日,ASP.NET之父、微軟雲端計算與企業級產品工程部執行副總裁Scott Guthrie,在Connect全球開發者線上會議上宣佈,微軟將開源全部.NET核心執行時,並將.NET 擴充套件為可在 Linux 和 Mac OS 平臺上執行。.NET核心執行時將基於MIT開源許可協議釋出,其中將包括執行.NET程式碼所需的一切專案——CLR、JIT編譯器、垃圾收集器(GC)和核心.NET基礎類庫。

自從11月公佈這一計劃以來微軟已將自己的關鍵技術都進行了開源,包括.NET Core、Roslyn、ASP.NET 5、MSbuild、WCF、OData等。按照微軟ASP.NET 5 的路線圖(詳見

ASP.NET 5 Schedule and Roadmap),2015年9月2日已經發布了里程碑的跨平臺版本,完成.NET Core 的跨平臺開發,為 Mac 與 Linux 平臺提供基於 .NET Core 的 dnx,實現完整的 .NET 跨平臺開發工作流,並基於跨平臺 .NET 開發一些應用案例,等到下個月初發布Beta 8的的時候就進入特性凍結階段了。

微軟實際上一共推出了三個以MIT方式授權的原始碼集:

  • ReferenceSource
  • CoreFX
  • CoreCLR

上圖中.NET Core 5 可以完整跨平臺,.NET Framework 4.6 執行在Windows平臺,對應Mono 4.2 版本執行在Linux,Mac平臺。要理清楚.NET Core和 .NET 、Mono之間的關係, 這個在.NET Core的

https://github.com/dotnet/core 有詳細的說明。簡單的說就是.NET Core是.NET Framework的子集,包含了.NET 執行時庫的核心功能,在跨平臺和資源受限環境中使用,.NET Framework還以MIT協議開源了ReferenceSource , ReferenceSource 是和Windows平臺的有較深的耦合關係,Mono團隊將ReferenceSource專案中的程式碼整合進入Mono,將Mono專案中一些有bug或未完成的元件替換為.NET的對應程式碼,你可以在Trello網站上跟蹤該專案的進展情況,Mono最新的4.2 版本已經基本上完成了程式碼整合工作。通過Mono和微軟的.NET團隊的合作,把.NET Core的程式碼融到Mono專案中,同時把Mono中的平臺依賴程式碼貢獻給.NET,現在可以實現完整的.NET堆疊的跨平臺。也就說在.NET Core推出之後,.NET Framework與Mono將基於.NET Core重新構建。.NET Framework將成為.NET Core在Windows上的一個發行版,Mono將成為.NET Core的一個跨平臺發行版。

開源是大勢所趨,就在6年前,各大公司和廠商還在討論是否應該開源,但現在大家討論的則是如何更好地開源。隨著網際網路時代的發展和成熟,開源已經成為標配。從Github的.NET Core開源專案來看,目前已經有將近8273個star,老牌的Mono專案也才3769個Star,已經說明開發社群對微軟開源的支援。

相比Java體系成熟的生態圈,目前.NET在社群生態系統建設上還需要一段比較長的時間來完善。生態系統不單單是開發者,還需要包括他背後的就職公司、他開發的產品面向的客戶、開發者的合作伙伴等等,當然還有微軟。開發者能夠從.NET這個平臺上更容易創業、具有多語言跨平臺的、具備快速部署優勢、適合迭代開發的,涵蓋從服務端到客戶端、移動端,物聯網IOT,具有超級高效率的Visual Studio Community 2015。除此之外要讓開發者有參與感,他在開發方面的經驗和知識能夠通過生態系統分享出去,影響其他人和公司,並且他的意見能夠得到及時的反饋,那麼這種參與感會吸引開發者。

最近幾年,微軟對於開源越來越支援,但是給開發社群的形象還沒有轉變過來。有篇文章《對微軟技術的典型誤解和偏見》寫的非常貼切,對微軟技術的誤解與偏見在社群裡是很微妙的,不少人對微軟的開發技術棧有一些由來已久的偏見。微軟已經做行業老大很多年,其在閉源方面的印象給開發者影響太深刻了,很難在短時間內扭轉。需要持續的運營投入和影響。

其實微軟過去在社群運營方面很有經驗,包括各種線上線下的活動,還有MVP等獎勵機制,在開源方面,微軟可以繼續從前的動作,我本人是微軟連任10年的ASP.NET方向的MVP,運營一個微信公眾號-dotNET跨平臺,主要就是本土化將微軟開源專案的介紹、進展、分析和案例要及時告知中國開發者。建議微軟官方培養成功案例,榜樣的力量是無窮的,開源之後的贏家在哪裡?甜頭在哪裡?樹立這樣的榜樣,開發社群都會看到。

開源的好處是,吸收整個技術社群的力量促進開源專案的發展和競爭力,提高開發者的參與感和信任度,有利於吸引開發者,構建良好的生態系統。.NET開源,開發者不必擔心這個專案會半途而廢,可以更關注專案本身的發展和特性,背後有.NET基金會,微軟和Xamarin公司,他們都有明確的開發路線圖,強大的技術團隊支援。

在雲端計算、大資料、移動網際網路和物聯網的時代,開發者需要看到微軟在承諾開源之後的迅速行動,開源社群和生態快速搭建起來,跨平臺官方支援版本快速釋出出來,抓住移動網際網路的契機,把整個.NET新局面開啟。