近年來,開源技術得到越來越多的重視,微軟收購 GitHub、IBM 收購紅帽,都表明了開源的價值。國內公司也越來越多的參與開源,加入開源基金會/貢獻開源項目。但是,它們到底做得如何呢?為此 InfoQ 統計了國內在 GitHub 上較活躍的 7 家一線互聯網公司的 50 多個賬號的 2800 多個項目,為大家呈現一部分答案。
一、公司及賬號
本次參與統計的公司包括百度、阿里、騰訊、華為、美團、360、小米,一共 7 家公司,在最開始的時候,我們選定的是 10 家公司,它們都是國內互聯網的代表型企業,但由于其他 3 家公司或沒有統一管理自己的開源項目,又或是開源項目太少,沒有分析的價值,所以我們就刪去了。
在搜集這 7 家公司的開源賬號的過程中,我們盡量收集了網絡上的信息以避免遺漏,不過由于統計口徑不一,有些公司只承認在 GitHub 公司主體賬號旗下的項目,導致團隊賬號可能難以收集全面。但是我們又認為有必要收集以團隊身份出現的公司賬號,它們的行為也代表公司的一部分,公司也應該將這些賬號視為公司開源戰略的一部分,進行統一治理。
具體如下:
二、TOP10 開源項目
Star 數最多的項目 TOP10
Star 數越多,表示該項目越受歡迎,在 Star 數 TOP 10 的開源項目中,阿里有 6 個項目,百度有 1 個項目,騰訊有 2 個項目,美團有 1 個。
螞蟻金服的 ant-design 以 4.3 萬 star 數領跑,即使放在整個中國范圍內,它也是最受歡迎的開源項目之一。而計算公司的項目數方面,阿里以 6 個遙遙領先,說明阿里在開源方面受到開發者的廣泛認可。
在領域方面,star 數最多的項目里前端相關的項目有 7 個,包攬前三,一方面說明國內公司在前端開源方面做的最好,另一方面也是因為前端項目在 GitHub 上普遍更受歡迎。
貢獻者最多的項目 TOP10
Contributor 數越多,表示項目越開放,在貢獻者數排名前十的項目中,阿里令人吃驚的占據了 8 個席位,幾乎全部包攬,百度則占據剩下兩個。阿里的 ant-design 項目再次名列榜首,包括衍生項目 ant-design-pro 也榜上有名。
貢獻者數量是體現一個項目是否開放的重要指標之一。項目越開放,它就會接納更多來自社區的貢獻。而由公司推出的開源項目尤其需要關注這一指標,因為有些公司開源項目只是將源碼開放出來,但具體開發和路線演進并不允許它人染指。
我們可以看到,阿里已經意識到這個問題并努力做出了一些改進,我們也期待有更多國內公司的開源項目能夠擁抱社區。
Commits 數最多的項目 TOP10
這里筆者發現一個現象:部分大公司會 fork 一些知名的第三方項目并創建分支,但并未體現在 github 的 fork 關系里,其中以阿里居多,如 AliOS-nodejs 項目。筆者認為,這種行為并不值得鼓勵。
在 Top10 項目中,百度的 Paddle 和 Apollo 項目名列前茅,說明百度聲稱的在 AI 方面基于開源理念來打造項目和產品,兌現了它自己的承諾,值得尊重。
另外我們發現,這 10 個項目有 4 個都是 Apache 基金會項目,說明 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 數,其中阿里解決了超過 6 萬個 issue,比之后的公司解決的加起來還要多,說明阿里對開源項目還是挺上心的,并不是傳聞中的“開源后不管”。
排名靠后的公司在這一方面還有待努力。
總結:中國公司開源現狀
上面的數據給我們提供了一些有趣的視角來研究國內開源的現狀,其中,一些數據驗證了我們之前的看法,比如大部分公司的優秀開源項目都以前端居多,因為前端群體在社區更活躍,前端代碼一般也不太涉密,因此公司在心態上更開放一些。
而另一方面,有些數據出乎我們的意料之外,比如阿里的數據幾乎在所有類別里都名列第一,有時甚至是其它公司之和,并且在社區化/開放等方面也做的不錯。
騰訊在自有開源項目上數量偏少,這也與公司過去并不重視開源有關,近年來,騰訊積極地靠近各個開源基金會,也開源了一些高質量項目,收獲了開發者的口碑。
華為在自有開源方面顯得有些保守,它的發力點更多在參與社區開源上,自家開源的很多項目多為操作系統相關。
而我們還可以看到,個別人和團隊對整個公司的開源能產生重大影響,比如阿里的玉伯不僅是 Kissy 的創始人,也帶領團隊開發和維護 ant-design,撐起了阿里開源的大旗;百度有 echarts 團隊;騰訊有 Alloyteam;360 有奇舞團等。
不好的方面則是,這些最優秀的中國互聯網公司,在底層關鍵項目上和國外還是存在較大差距,如 ant-design/element 等,只是 React、Vue 等前端框架的組件庫,是其生態系統的一部分,而自己作為生態核心的項目在國內極少,因此,國內開源只是看著熱鬧,在實際作用方面,和國外差距極大。
另外,國內公司對于 GitHub 還沒有做到物盡其用,在開源治理上還有所欠缺,我們看到有大量的 fork 項目,有大量的空項目,這些項目應該第一時間清理。對于不再維護的項目,GitHub 也提供了歸檔功能,國內公司應該善加利用。