近年來,開源技術得到越來越多的重視,微軟收購 GitHub、IBM 收購紅帽,都表明了開源的價值。國內公司也越來越多的參與開源,加入開源基金會 / 貢獻開源專案。但是,它們到底做得如何呢?為此 InfoQ 統計了國內在 GitHub 上較活躍的 7 家一線網際網路公司的 50 多個賬號的 2800 多個專案,為大家呈現一部分答案。
本次參與統計的公司包括百度、阿里、騰訊、華為、美團、360、小米,一共 7 家公司,在最開始的時候,我們選定的是 10 家公司,它們都是國內網際網路的代表型企業,但由於其他 3 家公司或沒有統一管理自己的開源專案,又或是開源專案太少,沒有分析的價值,所以我們就刪去了。
在蒐集這 7 家公司的開源賬號的過程中,我們儘量收集了網路上的資訊以避免遺漏,不過由於統計口徑不一,有些公司只承認在 GitHub 公司主體賬號旗下的專案,導致團隊賬號可能難以收集全面。但是我們又認為有必要收集以團隊身份出現的公司賬號,它們的行為也代表公司的一部分,公司也應該將這些賬號視為公司開源戰略的一部分,進行統一治理。
具體如下:
注:餓了麼和優酷已經被阿里收購,故歸入阿里旗下,下文分析的資料都是基於非 fork 的專案。
Star 數越多,表示該專案越受歡迎,在 Star 數 TOP 10 的開源專案中,阿里有 6 個專案,百度有 1 個專案,騰訊有 2 個專案,美團有 1 個。
螞蟻金服的 ant-design 以 4.3 萬 star 數領跑,即使放在整個中國範圍內,它也是最受歡迎的開源專案之一。而計算公司的專案數方面,阿里以 6 個遙遙領先,說明阿里在開源方面受到開發者的廣泛認可。
在領域方面,star 數最多的專案裡前端相關的專案有 7 個,包攬前三,一方面說明國內公司在前端開源方面做的最好,另一方面也是因為前端專案在 GitHub 上普遍更受歡迎。
注:這裡面的貢獻者只包含擁有 GitHub 賬號的人,郵箱未註冊 GitHub 的開發者未顯示在內
Contributor 數越多,表示專案越開放,在貢獻者數排名前十的專案中,阿里令人吃驚的佔據了 8 個席位,幾乎全部包攬,百度則佔據剩下兩個。阿里的 ant-design 專案再次名列榜首,包括衍生專案 ant-design-pro 也榜上有名。
貢獻者數量是體現一個專案是否開放的重要指標之一。專案越開放,它就會接納更多來自社群的貢獻。而由公司推出的開源專案尤其需要關注這一指標,因為有些公司開源專案只是將原始碼開放出來,但具體開發和路線演進並不允許它人染指。
我們可以看到,阿里已經意識到這個問題並努力做出了一些改進,我們也期待有更多國內公司的開源專案能夠擁抱社群。
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 數做了一個分佈圖,我們發現,騰訊開源專案雖然少,僅有 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 日,其後資料未計入。