02.02 我們分析了GitHub上5.46 億條日誌

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

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

1

宏觀統計結果

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 億條日誌


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

我們分析了GitHub上5.46 億條日誌


2

世界 Top 10 開發者賬號

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

我們分析了GitHub上5.46 億條日誌


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

3

世界 Top 10 項目

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

我們分析了GitHub上5.46 億條日誌


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

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

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

4

中國 Top 20 項目分析

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

我們分析了GitHub上5.46 億條日誌


從 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 等等。這說明在國內,前端群體在社區更為活躍;另外前端代碼一般也不太涉密,因此公司在心態上更開放一些。不過這其中也有一點需要引起注意,上榜的前端項目組件庫居多,但是缺少核心項目。

5

repo 協作關係圖

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

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

我們分析了GitHub上5.46 億條日誌


996 .ICU 全年貢獻圖

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

我們分析了GitHub上5.46 億條日誌


TiDB 2019 全年貢獻圖

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

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

我們分析了GitHub上5.46 億條日誌


我們分析了GitHub上5.46 億條日誌


Vue 3 月和 4 月內容貢獻圖

6

開發語言分析

我們分別對世界項目活躍度 Top 1000 的項目、世界項目參與人數 Top 1000 的項目和中國開源項目統計了不同開發語言的項目數量以及使用不同開發語言進行 PushEvent 操作的開發者的數量,二者相乘估計使用不同開發語言的開發者的數量,可以發現 JavaScript 使用最多。

我們分析了GitHub上5.46 億條日誌


我們分析了GitHub上5.46 億條日誌


原因我們分析如下:

  • 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 億條日誌


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

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

7

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

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

我們分析了GitHub上5.46 億條日誌


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

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

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

而騰訊 2019 年也對外宣佈”已在 Github 上開源了 86 個項目,超過 1000 個貢獻者參與了開源貢獻,擁有超過 25 萬個 Star 數,騰訊在 Github 全球公司貢獻榜上排名前十“。

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

8

展望

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

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

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

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


分享到:


相關文章: