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