近年來,開源技術得到越來越多的重視,微軟收購GitHub、IBM收購紅帽,都表明了開源的價值。國内公司也越來越多的參與開源,加入開源基金會/貢獻開源項目。但是,它們到底做得如何呢?為此InfoQ統計了國内在GitHub上較活躍的7家一線網際網路公司的50多個賬号的2800多個項目,為大家呈現一部分答案。
一、公司及賬号
本次參與統計的公司包括百度、阿裡、騰訊、華為、美團、360、小米,一共7家公司,在最開始的時候,我們標明的是10家公司,它們都是國内網際網路的代表型企業,但由于其他3家公司或沒有統一管理自己的開源項目,又或是開源項目太少,沒有分析的價值,是以我們就删去了。
在搜集這7家公司的開源賬号的過程中,我們盡量收集了網絡上的資訊以避免遺漏,不過由于統計口徑不一,有些公司隻承認在GitHub公司主體賬号旗下的項目,導緻團隊賬号可能難以收集全面。但是我們又認為有必要收集以團隊身份出現的公司賬号,它們的行為也代表公司的一部分,公司也應該将這些賬号視為公司開源戰略的一部分,進行統一治理。
具體如下:
注:餓了麼和優酷已經被阿裡收購,故歸入阿裡旗下,下文分析的資料都是基于非fork的項目。
二、TOP10 開源項目
Star數最多的項目 TOP10
Star數越多,表示該項目越受歡迎,在Star數TOP 10的開源項目中,阿裡有6個項目,百度有1個項目,騰訊有2個項目,美團有1個。
螞蟻金服的ant-design以4.3萬star數領跑,即使放在整個中國範圍内,它也是最受歡迎的開源項目之一。而計算公司的項目數方面,阿裡以6個遙遙領先,說明阿裡在開源方面受到開發者的廣泛認可。
在領域方面,star數最多的項目裡前端相關的項目有7個,包攬前三,一方面說明國内公司在前端開源方面做的最好,另一方面也是因為前端項目在GitHub上普遍更受歡迎。
貢獻者最多的項目TOP10
注:這裡面的貢獻者隻包含擁有GitHub賬号的人,郵箱未注冊GitHub的開發者未顯示在内
Contributor數越多,表示項目越開放,在貢獻者數排名前十的項目中,阿裡令人吃驚的占據了8個席位,幾乎全部包攬,百度則占據剩下兩個。阿裡的ant-design項目再次名列榜首,包括衍生項目ant-design-pro也榜上有名。
貢獻者數量是展現一個項目是否開放的重要名額之一。項目越開放,它就會接納更多來自社群的貢獻。而由公司推出的開源項目尤其需要關注這一名額,因為有些公司開源項目隻是将源碼開放出來,但具體開發和路線演進并不允許它人染指。
我們可以看到,阿裡已經意識到這個問題并努力做出了一些改進,我們也期待有更多國内公司的開源項目能夠擁抱社群。
Commits數最多的項目TOP10
commits送出數越多,表明項目越複雜,開發周期較長,協作者數量更多。在commits數前十中,阿裡占了5個,百度占了3個,騰訊和美團各有一個。
這裡筆者發現一個現象:部分大公司會fork一些知名的第三方項目并建立分支,但并未展現在github的fork關系裡,其中以阿裡居多,如AliOS-nodejs項目。筆者認為,這種行為并不值得鼓勵。
在Top10項目中,百度的Paddle和Apollo項目名列前茅,說明百度聲稱的在AI方面基于開源理念來打造項目和産品,兌現了它自己的承諾,值得尊重。
另外我們發現,這10個項目有4個都是Apache基金會項目(Flink由阿裡收購而來),說明Apache基金會在開源方面名不虛傳,也說明國内公司的确是把最好的項目捐獻給了Apache基金會。
三、公司開源情況
哪些賬号開源最厲害
在開源賬号方面,各大公司的官方賬号并不是擁有開源項目最多的賬号,這一桂冠被阿裡的Kissy gallery團隊摘取,其原因是這個賬号是Kissy前端架構的元件庫賬号。遺憾的是,Kissy項目事實上已經死亡,其活躍期在2015年之前,在那個時代,Kissy團隊可以說是國内最早利用GitHub的先驅之一,它們固然值得尊重,但阿裡是不是應該對這些賬号做一些清理呢?
項目整體star數知多少
我們将所有公司的項目Star數做了一個分布圖,我們發現,騰訊開源項目雖然少,僅有130個,但是品質高,Star數100以上的項目有97個,占總數的三分之二以上;而阿裡的項目雖多,Star數100以上的項目也隻有237個。這說明騰訊在對待開源時更為謹慎,推出的項目都是對開發者有幫助的高品質項目。
這裡面最極端的公司當屬華為,它雖然擁有218個非fork的項目數,但Star數100以上的項目僅有14個。其中的原因,一方面是華為多以貢獻者的身份參與第三方的底層項目,如Linux、Kubernetes等,這些在統計中未能展現;另一方面,也說明華為在自有開源項目做得還不夠,其表現與華為IT巨頭的身份并不比對。
各個公司強在哪些領域
我們統計了各個公司Star數TOP10的項目,并對其按領域分類。我們發現:
- 大前端(前端和移動開發)項目最多,在阿裡、百度、360、美團中前10個幾乎都占了一半。騰訊是最誇張的,前10個項目裡竟然有9個是大前端領域的。
- 百度有4個是AI領域項目,在衆多公司中别樹一幟,包括Paddle、Apollo等都比較受歡迎。
- 華為雖然項目少,但基本全是基礎設施領域的項目,如ServiceComb、CarbonData、LiteOS等。
- 小米有幾個作業系統相關的項目較受歡迎。
哪家公司開源最活躍
最近更新時間可以表明項目的活躍程度,如果項目在過去一年都沒有更新,說明很可能已經不再維護。
這裡,我們統計了最近更新時間在三個月内的所有項目,發現這些項目中阿裡的項目數是最多的,一共有269個,占了48%,其次是百度,有98個,占了18%。
GitHub的issue區為開發者求助和協作交流提供了非常好的平台,而公司對項目的維護程度可以從公司解決掉的issue裡窺知一二。
這裡我們按公司分别統計了它們曆史上解決的issue數(即close掉的issue數),其中阿裡解決了超過6萬個issue,比之後的公司解決的加起來還要多,說明阿裡對開源項目還是挺上心的,并不是傳聞中的“開源後不管”。
排名靠後的公司在這一方面還有待努力。
總結:中國公司開源現狀
上面的資料給我們提供了一些有趣的視角來研究國内開源的現狀,其中,一些資料驗證了我們之前的看法,比如大部分公司的優秀開源項目都以前端居多,因為前端群體在社群更活躍,前端代碼一般也不太涉密,是以公司在心态上更開放一些。
而另一方面,有些資料出乎我們的意料之外,比如阿裡的資料幾乎在所有類别裡都名列第一,有時甚至是其它公司之和,并且在社群化/開放等方面也做的不錯。
騰訊在自有開源項目上數量偏少,這也與公司過去并不重視開源有關,近年來,騰訊積極地靠近各個開源基金會,也開源了一些高品質項目,收獲了開發者的口碑。
華為在自有開源方面顯得有些保守,它的發力點更多在參與社群開源上,自家開源的很多項目多為作業系統和基礎架構相關。
而我們還可以看到,個别人和團隊對整個公司的開源能産生重大影響,比如阿裡的玉伯不僅是Kissy的創始人,也帶領團隊開發和維護ant-design,撐起了阿裡開源的大旗;百度有echarts團隊;騰訊有Alloyteam;360有奇舞團等。
不好的方面則是,這些最優秀的中國網際網路公司,在底層關鍵項目上和國外還是存在較大差距,如ant-design/element等,隻是React、Vue等前端架構的元件庫,是其生态系統的一部分,而自己作為生态核心的項目在國内極少,是以,國内開源隻是看着熱鬧,在實際作用方面,和國外差距極大。
另外,國内公司對于GitHub還沒有做到物盡其用,在開源治理上還有所欠缺,我們看到有大量的fork項目,有大量的空項目,這些項目應該第一時間清理。對于不再維護的項目,GitHub也提供了歸檔功能,國内公司應該善加利用。
注:
- 這裡選取的賬号為公司賬号/項目賬号,或部門/團隊賬号,非個人賬号。
- 部分項目因捐獻給Apache基金會有重合已剔除,并隻保留Apache裡的資料。
- 資料統計截至日期為2019年3月22日,其後資料未計入。