1. 程式人生 > >.NET開源核心執行時,且行且珍惜

.NET開源核心執行時,且行且珍惜

背景

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

關於此次事件的報道和評論,已經有了很多版本。不過,最近經常有朋友問我的看法,索性就梳理了下思路,把想到的可能影響和啟發都寫了出來,博大家一看。

不是終點

記得.NET宣佈開源的當天,編輯群裡就一陣騷動,看得出大家還是很激動的。筆者最初也是吃了一驚,不過後來靜心一想,這也是水到渠成的事情了。從時間軸看,近幾年,.NET家族已經先後開源了多個成員,包括ASP.NET、C#編譯器等,再加上這次的.NET核心執行時,至此,伺服器端框架已經全部開源(或者很快開源)。所以,這次事件只是把微軟的.NET開源戰略推上了高潮,但肯定不是結束。

宣佈開源是個新起點,如何把開源社群構建起來,生態系統培育起來,才是關鍵。開源需要精心的運營,每年的開源專案不斷湧現,而在不斷消失。.NET開源專案不需要考慮失敗的問題,開發者關注的是跨平臺支援何時落地、開源社群如何運轉起來。

大勢所趨

開源是大勢所趨,就在5年前,各大公司和廠商還在討論是否應該開源,但現在大家討論的則是如何更好地開源。隨著網際網路時代的發展和成熟,開源已經成為標配。從Github的.NET Core開源專案來看,目前已經有將近6000個star,考慮到開源一個多月的時間,這樣的成績已經說明開發社群對微軟開源的支援。

以前,開源是一種保障軟體專案生存的方式,而現在很多開源專案已經成為企業的一種商業和運營策略,生存已經不是問題,如何活的更好才是關鍵。就像某I做Linux開源是為了賣服務和硬體,Google做Android開源是為了獲取移動網際網路入口一樣,微軟做.NET開源也是為了其“移動優先、雲優先”戰略利益服務的。看到網上有人說開源是微軟的陰謀論,筆者不是很贊同。現在IT界玩的都是陽謀了,為了公司利益無可厚非,只要不損害社群的利益,更何況開源本身是件好事情。

曾經的兩強爭霸

在2005年以前,Java和.NET平分秋色,由於微軟的強大支援,在社群等很多方面.NET甚至比Java更出色,畢竟Java在曾經的Sun的領導下並沒有太多亮點,多虧了開源支援,才保持著鮮亮的生命力。當時,在企業級開發領域,Java EE和.NET都已經受到來自開發社群的詬病。但是隨後而來的移動網際網路浪潮給了Java另一次生命,谷歌開源安卓系統,藉此掌控移動網際網路入口,其開發語言Java也成為眾多移動開發者的首選,要麼iOS上的Object-C語言,要麼安卓的Java,而且大部分是兩者都要。微軟則選擇了一條相對封閉的策略,即使聯合諾基亞,Windows Phone的市場佔有率依然不高,這直接導致.NET的使用率也不高。

筆者還記得,在兩強爭霸的年代,國內少有的幾個技術論壇中,.NET和Java兩派吵得不可開交,立場鮮明,從工具支援吵到語言特性,又吵到函式庫支援。現在想想,多個競爭者並存的年代對開發者是好事,有比較有選擇,而且可以讓競爭者傾聽開發者的聲音。

跨平臺支援

此次.NET開源和對Linux、Mac OS的支援,為移動開發者提供了新的選擇,未來可以不再依賴於Java,.NET支援的C#、C++等可以成為移動開發語言。作為後來者的C#語言的優勢明顯,Java一直在追趕,現在有了跨平臺支援,開發者可以自由選擇。

從.NET開源實現專案Mono的部落格上可以看到,Mono計劃與.NET團隊合作,把.NET Core的程式碼融到Mono專案中,同時把Mono中的平臺依賴程式碼貢獻給.NET。

相比Java體系,目前.NET只開源了伺服器端框架,而Java開源的是全部系統,包括客戶端和開發工具。未來微軟開源的路是否更加寬廣,值得觀察。

培養生態系統

生態系統的培養需要一段比較長的時間,Java開源將近10年了,才形成如此成熟的生態圈,.NET需要有耐心和執行力才能走得更遠。既然是生態系統,那麼一定要制定並維持好生態系統中的遊戲規則。這個系統不單單是開發者,還需要包括他背後的就職公司、他開發的產品面向的客戶、開發者的合作伙伴等等,當然還有微軟。一個平臺想要凝聚力,不外乎從物質和精神兩個方面分析。物質方面,開發者能夠從這個平臺上獲取利益,比如這個平臺是支援開發者創業的、多語言跨平臺的、具備快速部署優勢的、適合迭代開發的,生態系統的成功案例多,具備這些特質,會讓這個平臺的開發者最終受益。從精神方面,要讓開發者有參與感,他在開發方面的經驗和知識能夠通過生態系統分享出去,影響其他人和公司,並且他的意見能夠得到及時的反饋,那麼這種參與感會吸引開發者。關鍵點包括創業孵化器、制定和維護生存法則、塑造合作共贏的業務模式、讓圈內的利益相關者受益。

最近幾年,微軟對於開源越來越支援,但是給開發社群的形象還沒有轉變過來。畢竟,微軟已經做行業老大很多年,其在閉源方面的印象給開發者影響太深刻了,很難在短時間內扭轉。需要持續的運營投入和影響。

其實微軟過去在社群運營方面很有經驗,包括各種線上線下的活動,還有MVP等獎勵機制,在開源方面,微軟可以繼續從前的動作。有兩點建議:一是重視本土化,關於微軟開源專案的介紹、進展、分析和案例要及時告知中國開發者;二是培養成功案例,榜樣的力量是無窮的,開源之後的贏家在哪裡?甜頭在哪裡?樹立這樣的榜樣,開發社群都會看到。

開源選擇

開源的歷史很久遠了,以Java為例,開源快10年了,它的伺服器端、客戶端、開發工具都是開源的,雖然歷經了Sun、Oracle等公司的發展,但一直保持旺盛的生命力。特別是在移動網際網路崛起之後,Java獲得了新生,發展迅猛。開發者在選擇開源平臺和專案中,最擔心的不是這個專案能不能滿足我的需求,是這個專案靠不靠譜,會不會一直做下去,這是最關鍵的。這就是為什麼絕大多數成功的開源專案背後都是有大公司的支援,有很多人全職做開源專案,人員穩定,路線圖清晰,開發者放心,敢用你的產品。其次才是滿足需求,贏得信任感。

開源的好處是,吸收整個技術社群的力量促進開源專案的發展和競爭力,第二個好處是,提高開發者的參與感和信任度,有利於吸引開發者,構建良好的生態系統。劣勢,對於一些沒有廠商支援的開源專案,路線圖不明確,有紛爭,存在分裂或者失敗的機會。對比.NET開源,開發者不必擔心這個專案會半途而廢,可以更關注專案本身的發展和特性。

雲優先戰略

今年,Azure成為首個在中國落地的全球公有云平臺,其支援Linux和很多其他開源軟體,這本身就說明微軟目前的態度非常開放,從Windows到Azure,戰略意圖很明顯。從全球來看,Azure佔全球PaaS市場份額的64%,排第一。微軟開源的態度,可以吸引更多開發者使用Azure平臺,畢竟Azure不是一個微軟專有技術的平臺。

未來,且行且珍惜

筆者對.NET開源抱有比較高的期待,在雲端計算、大資料、移動網際網路和物聯網的時代,Java一家獨大不利於社群的發展,微軟已經不再是過去封閉的巨頭,開始擁抱開源,翻看微軟過去的歷史,我從不懷疑微軟的強大的執行力,時間是一個關鍵的因素,開發者需要看到微軟在承諾開源之後的迅速行動,開源社群和生態快速搭建起來,跨平臺官方支援版本快速釋出出來,抓住移動網際網路的契機,把整個.NET新局面開啟,千萬不要虎頭蛇尾,且行且珍惜,開發者是最聰明的。