Categories
程式開發

我們分析了GitHub上5.46 億條日誌,發現中國開源雖然貢獻大但還有這些不足…


全球最大代碼託管平台 GitHub 在 2019年發布的年度報告中顯示, GitHub上目前已有超過4000 萬開發人員、將近 300 萬個組織帳戶。其中來自中國的貢獻者數目僅次於美國,排名第二,中國的開發者 fork 並 clone 的項目比往年增加48%。

在開源日益重要的今天,我們也需要一份建立在全域大數據基礎上得出的相對完整、可以反復進行推演的數據報告(報告、數據、算法均需開源)。因此,近日InfoQ聯合X-lab 開放實驗室發布“GitHub 2019 數字年報”,通過對2019年GitHub上 5.46 億條日誌進行分析,展現目前開源世界全貌,以及中國的開發者和企業組織在整個開源產業中的表現

宏觀統計結果

X-lab 開放實驗室在本次報告中使用 2019 年全年 GitHub 日誌進行統計,總日誌條數約 5.46 億條,相較 2018 年的 4.21 億條增長約 29.7%。

在對開發者活躍度與項目活躍度統一定義下,統計得到 2019 年總活躍項目數量約 512萬 個,相較 2018 年的約 313萬 增長約 63.6%。值得關注的是,這其中僅有 1399 個項目的活躍度超過了 1000,佔總項目數量不足萬分之三。

2019 年總活躍開發者數量約 360萬,相較 2018 年的約 303萬 增長約 18.8%。而參與開發者數量超過 1000 人的項目僅有 333 個,可謂萬里挑一。

這一數據結果說明大多數項目還是處於低活躍、少參與的狀態。

對於這 512萬 個項目的活躍度分佈,如下圖:

我們分析了GitHub上5.46 億條日誌,發現中國開源雖然貢獻大但還有這些不足... 1

對於這 512萬個項目的活躍開發者人數分佈,如下圖:

我們分析了GitHub上5.46 億條日誌,發現中國開源雖然貢獻大但還有這些不足... 2

世界 Top 10 開發者賬號

我們對 2019 年全年活躍開發者進行了活躍度統計與排名,這裡給出世界活躍度 Top 10 的開發者賬號列表:

#Global name activity count issue comment
1 dependabot[bot] 3641110 1430942 272213
2 direwolf-github 589065 340091 0
3 github-learning-lab[bot] 262617 86142 372192
4 imgbot[bot] 105982 54184 0
5 autotester-one 88989 47856 0
6 dependabot-preview[bot] 503923 42846 808143
7 pull[bot] 281141 26699 0
8 renovate[bot] 200693 26442 37663
9 snyk-bot 88096 26179 1
10 greenkeeper[bot] 147530 21873 825189

從數據統計來看,世界活躍度 Top 10 的開發者賬號均為機器人賬號,其中 7 個賬號為 GitHub App。這也可以看出開發者最常使用的自動化倉庫管理、協作功能有哪些,主要集中在依賴更新、自動同步上游、GitHub 學習、漏洞檢測等方面。

世界 Top 10 項目

根據項目活躍度定義,我們對 2019 年全年活躍項目進行了活躍度統計與排名,這裡給出世界活躍度 Top 10 項目的列表:

#Global name activity count issue comment
1 microsoft/vscode 34371 19622 83592
2 996icu/996.ICU 34201 19958 26279
3 MicrosoftDocs/azure-docs 33600 14286 96327
4 flutter/flutter 30437 14997 85735
5 firstcontributions/first-contributions 25695 9678 9471
6 kubernetes/kubernetes 22311 6890 238946
7 tensorflow/tensorflow 21984 10236 53492
8 DefinitelyTyped/DefinitelyTyped 19824 6352 44571
9 ansible/ansible 18330 6522 77312
10 jlippold/tweakCompatible 18104 5128 54975

其中996.ICU 作為一個現象級開源項目,大家並不陌生。 2019 年 3 月 到 4 月,中國程序員為抗議 996 工作制,在GitHub發布了一個名為 996.ICU 的項目,該項目短時間內獲得超過 20 萬顆星星,成為太陽系最受歡迎的項目。

而活躍度最高的項目則是來自微軟的跨平台代碼編輯器Microsoft/vscode;此外微軟使用開源的方式來建設其Azure 雲平台的項目MicrosoftDocs/azure-docs排名第三,顯然微軟在開源上的努力獲得了程序員的認可。

在這個TOP10排名中,涉及了三個來自谷歌的項目,分別是:前端跨平台開發框架Flutter、容器編排系統Kubernetes以及深度學習框架TensorFlow,這也進一步說明谷歌在開源上的努力和影響力獲得業內的認可。

中國 Top 20 項目分析

針對所有排名項目,我們也篩選出了中國 Top 20 的開發者項目,列表如下:

# #Global name activity count issue comment
1 2 996icu/996.ICU 34201 19958 26279
2 28 ant-design/ant-design 9070 4466 21504
3 37 ElemeFE/element 7487 4319 10643
4 83 selfteaching/selfteaching-python-camp 5350 715 3676
5 90 NervJS/taro 5027 2260 14720
6 103 PaddlePaddle/Paddle 4750 922 10247
7 107 vuejs/vue-cli 4536 2830 6252
8 128 pingcap/tidb 4221 608 26105
9 137 OpenAPITools/openapi-generator 4066 1416 8770
10 141 ant-design/ant-design-pro 4040 1902 8671
11 169 apache/incubator-echarts 3632 2031 6576
12 193 vuejs/vue 3403 2067 4537
13 207 Advanced-Frontend/Daily-Interview-Question 3258 2125 5742
14 209 youzan/vant 3215 1656 5810
15 237 nestjs/nest 2947 1535 8488
16 270 apache/dubbo 2779 1039 5560
17 297 ApolloAuto/apollo 2592 666 3289
18 362 alibaba/nacos 2318 1131 3863
19 383 PaddlePaddle/models 2228 571 2968
20 385 tikv/tikv 2219 269 13025

從Top 20列表信息中我們可以看出,996icu/996.ICU的綜合活躍度數值遠遠高於其他項目,數值上超過其他項目一個數量級。

列表中另外兩個比較有趣的項目分別是 selfteaching/selfteaching-python-camp 和 Advanced-Frontend/Daily-Interview-Question,這兩個項目的活躍排名是第4 和第13,分別對應了教育和麵試求職兩個領域。這側面反映出開發者對這兩個領域的需求和關注度非常高。

從這個列表中我們還發現,在中國開源成績比較突出的兩家公司是百度和阿里。百度的深度學習平台PaddlePaddle佔據了兩個項目,分別是核心框架Paddle和模型庫Models;此外開放自動駕駛平台Apollo也榜上有名。另外,由百度貢獻的數據可視化項目ECharts在2018年進入Apache孵化器,此次榜單中ECharts排名11。

咱們再來看看阿里,阿里“服務於企業級產品設計體系” 的Ant-Design,是螞蟻金服採用 React 封裝的一套組件庫,在中國范圍內屬最活躍的開源項目,排名第二。上榜的基於Java的RPC框架Dubbo,也在今年成為Apache 頂級項目。另外上榜的阿里項目還包含動態服務發現Nacos。

在中國的Top 20列表中,我們發現前端項目幾乎佔據了一半,包括阿里的Ant-Design組件庫,由餓了麼(已被阿里收購)前端團隊開源的 Vue UI 組件庫Element,由有贊基於Vue構建的移動UI組件庫Vant等等。這說明在國內,前端群體在社區更為活躍;另外前端代碼一般也不太涉密,因此公司在心態上更開放一些。不過這其中也有一點需要引起注意,上榜的前端項目組件庫居多,但是缺少核心項目。

repo協作關係圖

針對排名前 20 的中國開源項目,我們對倉庫的歷史 commits 記錄進行挖掘,並做了可視化展示(藍色節點代表倉庫文件,紅色節點代表用戶)。 Git 倉庫中的每一個commit 記錄由貢獻者產生,對倉庫的一個或者多個文件產生影響,因此對特定時段內的所有貢獻者的提交記錄分析能反映出貢獻者的活躍程度、協作模式以及項目社區本身的類型屬性。

從可視化的關係圖來看,996.ICU項目從 3 月份開始出現提交記錄,且 3、4 兩個月份最為活躍,之後熱度開始消減。該項目圖中存在一個主要貢獻者n_996Icu,和另一個相對較大的用戶節點機器人賬戶 ImgbotApp 。

image

996 .ICU全年貢獻圖

從 TiDB 項目的內容貢獻圖來看,整個社區存在多個核心維護者,他們各自維護著不同的模塊,周邊也有大量的開發者在做出貢獻。其背後的企業PingCAP ,是業界非常典型的開源企業,他們的協作模式是所有開發人員通過 GitHub 進行協作。

image

TiDB 2019全年貢獻圖

以 Vuejs 下的兩個項目vue-cli 和 vue為例,在 vuejs/vue-cli 項目中,從每月貢獻圖可以看出該項目的大部分貢獻由Haoqun Jiang做出,單月的主要貢獻者不超過兩名。

Vuejs/Vue 大部分貢獻都是由一個賬號Evan You 尤雨溪做出的,該項目4 月份之後內容貢獻圖呈現出許多協作孤島的形態,反映出貢獻者對少量文件的修改,項目變動不大。

image

image

Vue 3月和4月內容貢獻圖

開發語言分析

我們分別對全球項目活躍度 Top 1000 的項目、全球項目參與人數 Top 1000 的項目和中國開源項目進行了開發語言方面的統計,可以發現 JavaScript 使用最多

我們分析了GitHub上5.46 億條日誌,發現中國開源雖然貢獻大但還有這些不足... 3

我們分析了GitHub上5.46 億條日誌,發現中國開源雖然貢獻大但還有這些不足... 4

原因我們分析如下:

  • JavaScript 是一門直接被嵌入到 HTML 中的腳本語言,是一門可以被 Web 瀏覽器理解的語言。它無需編譯、在瀏覽器環境可以直接運行的特性,讓 JavaScript 項目在活躍度的提升上佔據了優勢。
  • 谷歌開發的 Angular 和 Facebook 開發的 React,另外還有 Vue,這些主流前端框架都是  JavaScript 生態圈中的一部分。
  • 這幾年隨著行業的發展,JavaScript 變得幾乎”無所不能“,現在基本所有的主流互聯網應用,其前端都有大量的 JavaScript 代碼。比如我們日常使用的郵件、社交工具等等。

此外,全球項目活躍度 Top1000 和全球項目參與人數 Top 1000 的項目中,Python的使用居於第二位,可能是因為:

  • Python 相較於其他主流編程語言具有更好的可讀性,簡單易學、易於維護。
  • Python 應用範圍廣,它自帶的各種模塊加上豐富的第三方模塊,免去了很多“重複造輪子”的工作,可以更快地實現多種功能。
  • 人工智能的浪潮進一步推動了 Python 的發展,很多人工智能任務以及大數據分析都會優先使用 Python 實現。

在中國開發者社區中,我們發現除了JavaScript外,Java和Go的活躍度也很高,分別排在第二、第三。

我們分析了GitHub上5.46 億條日誌,發現中國開源雖然貢獻大但還有這些不足... 5

我們認為:在服務器和移動端開發上,Java 還沒有真正意義上的對手,可以預見Java 依舊是企業軟件、大數據、電商…最核心的技術棧。 Go 是谷歌開發的新一代編程語言,在過去的幾年裡取得了很大的成功。現代的雲端、網絡和 DevOps 軟件的很大一部分都是用 Go 編寫的,例如 Docker、Kubernetes、Terraform、etcd、Istio 等項目。許多公司也將它用於通用場景下的開發工作,Go語言中國社區也極具活力。

對比全球的開發語言排行榜,我們發現中國開源項目中Python的使用與Java、Go、C++相比較少。另外還值得關注的是,Ruby和PowerShell在中國社區也並不受重視。

國內技術公司開源項目一覽

其實各大開源項目的背後,基本都有科技公司的支持,我們給出了一個科技公司維護的GitHub 組織和項目列表,並根據該列表,計算出了科技公司所維護的開源項目在2019 年的活躍情況與開發者參與情況,結果如圖:

# name activity count issue comment top 500 top 10000
1 Alibaba 11049 846 137871 6 65
2 Baidu 3795 337 35064 4 15
3 PingCAP 3331 102 62224 2 16
4 Tencent 2601 205 20466 0 18
5 Huawei 1043 90 12677 1 4
6 Deepin 1012 91 7192 0 2
7 WeBank 728 36 1158 0 0
8 360 690 109 2875 0 2
9 JD 670 41 23140 2 4
10 Xiaomi 526 44 2815 0 2
11 Youzan 480 35 8442 1 2
12 DiDi 476 29 4572 0 5
13 Meituan 405 39 3534 0 2
14 Netease 340 45 4349 0 3
15 Qunar 281 33 497 0 0
17 Bilibili 255 25 2422 0 3
19 CTrip 192 14 4300 0 1
20 Bytedance 170 23 1187 0 0
21 Vipshop 104 9 228 0 0
22 Douban 98 17 98 0 0

在國內企業的開源數據中,我們可以看到阿里的數據幾乎在所有類別裡都名列第一,有時甚至是其它公司之和,並且在社區化 / 開放等方面也做得不錯。但放到全球角度,出自阿里的知名度相對較高的項目,還是Apache Dubbo,以及在2019年收購而來的大數據流處理框架Flink。 2019年9月在杭州的雲棲大會上,阿里宣布賈揚清正式擔任阿里巴巴開源技術委員會負責人,開源將明確升級為阿里技術戰略之一。

AI 是百度開源最鮮明的競爭力,比如PaddlePaddle和自動駕駛平台 Apollo。 PaddlePaddle也是當前國內唯一開源開放的深度學習平台。

華為在2019年也做了不少開源的工作,推出了原生數據庫 GaussDB 以及鴻蒙OS等,一改保守作風。

而騰訊2019年也對外宣布”已在 Github 上開源了86 個項目,超過 1000 個貢獻者參與了開源貢獻,擁有超過 25 萬個 Star 數,騰訊在 Github 全球公司貢獻榜上排名前十“。 2019年6月份騰訊發布了開源戰略路線圖,另外Angel開源項目也已畢業,成為Linux AI基金會第一個來自中國的頂級項目,相信未來幾年會有更多驚喜。

可以看出,各大企業近年來均在不斷加大開源社區生態建設。

展望

2019年的Github曾一度被推到風口浪尖。 2019年5月,ASF 和 GitHub 官網先後更新了兩則消息,表明其旗下的項目、產品將受到美國出口法律的約束。

2019年7月,GitHub封禁部分國家、地區的開發者賬號,導致這些賬戶無法創建私有庫,並且關閉了已經創建的私有庫。這些開發者並未得到提前通知,沒有任何緩衝備份時間。當時還有消息稱GitHub將採取實名制,以便於執行美國貿易制裁。

2019年12月,據《金融時報》消息稱,GitHub 正計劃採取“分階段的方式”,考慮在中國設立一家外商獨資子公司,以便探索在中國建立合資企業和託管 GitHub 內容的可能性。

這些事件也給我們敲響了警鐘,我們不僅需要擁有自己的核心技術,同樣,我們也需要有自己的代碼託管平台。這些也是中國企業和開源社區正不斷努力的方向。

附錄:

原文地址:https://github.com/X-lab2017/github-analysis-report-2019/blob/master/REPORT.md

分析程序: https://github.com/X-lab2017/github-analysis-report-2019

參考文獻:

  1. GitHub 官方 2019 年度報, https://octoverse.github.com/
  2. 中國開源年度報告, https://kaiyuanshe.cn/project/china-open-source-report/
  3. 中國開源項目 Grank 分析報告(2019), https://linux.cn/article-11755-1.html
  4. 徐川,覃雲,中國互聯網公司開源項目調研報告, https://www.infoq.cn/article/G4O6JUhJF*Tsv9eWM0L6
  5. 雲計算開源產業聯盟,開源產業白皮書(2019),2019 雲計算開源產業大會,北京.
  6. Gitee 2019 年度數據報告, https://blog.gitee.com/2020/01/08/gitee-2019-annual/

關於作者

GitHub 2019 數字年報”由InfoQ聯合X-lab開放實驗室共同發布。X-lab開放實驗室是一群由來自華東師範大學、同濟大學的師生所構成的開放創新共同體,專業背景包括計算機科學、數據科學及其相關跨學科,長期思考並實踐教育與開源兩大主題。本次數字年報的主要貢獻者包括:趙生宇、王偉、週添一、范家寬、王皓月、夏小雅、楊尚輝等。