.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新局面打開,千萬不要虎頭蛇尾,且行且珍惜,開發者是最聰明的。

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