写点什么

我们分析了 GitHub 上 5.46 亿条日志,发现中国开源虽然贡献大但还有这些不足...

  • 2020-02-03
  • 本文字数:5498 字

    阅读完需:约 18 分钟

我们分析了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 万 个项目的活跃度分布,如下图:



对于这 512 万个项目的活跃开发者人数分布,如下图:


世界 Top 10 开发者账号

我们对 2019 年全年活跃开发者进行了活跃度统计与排名,这里给出世界活跃度 Top 10 的开发者账号列表:


#Globalnameactivitycountissue comment
1dependabot[bot]36411101430942272213
2direwolf-github5890653400910
3github-learning-lab[bot]26261786142372192
4imgbot[bot]105982541840
5autotester-one88989478560
6dependabot-preview[bot]50392342846808143
7pull[bot]281141266990
8renovate[bot]2006932644237663
9snyk-bot88096261791
10greenkeeper[bot]14753021873825189


从数据统计来看,世界活跃度 Top 10 的开发者账号均为机器人账号,其中 7 个账号为 GitHub App。这也可以看出开发者最常使用的自动化仓库管理、协作功能有哪些,主要集中在依赖更新、自动同步上游、GitHub 学习、漏洞检测等方面。

世界 Top 10 项目

根据项目活跃度定义,我们对 2019 年全年活跃项目进行了活跃度统计与排名,这里给出世界活跃度 Top 10 项目的列表:


#Globalnameactivitycountissue comment
1microsoft/vscode343711962283592
2996icu/996.ICU342011995826279
3MicrosoftDocs/azure-docs336001428696327
4flutter/flutter304371499785735
5firstcontributions/first-contributions2569596789471
6kubernetes/kubernetes223116890238946
7tensorflow/tensorflow219841023653492
8DefinitelyTyped/DefinitelyTyped19824635244571
9ansible/ansible18330652277312
10jlippold/tweakCompatible18104512854975


其中 996.ICU 作为一个现象级开源项目,大家并不陌生。2019 年 3 月 到 4 月,中国程序员为抗议 996 工作制,在 GitHub 发布了一个名为 996.ICU 的项目,该项目短时间内获得超过 20 万颗星星,成为太阳系最受欢迎的项目。


而活跃度最高的项目则是来自微软的跨平台代码编辑器 Microsoft/vscode;此外微软使用开源的方式来建设其 Azure 云平台的项目 MicrosoftDocs/azure-docs 排名第三,显然微软在开源上的努力获得了程序员的认可。


在这个 TOP10 排名中,涉及了三个来自谷歌的项目,分别是:前端跨平台开发框架 Flutter、容器编排系统 Kubernetes 以及深度学习框架 TensorFlow,这也进一步说明谷歌在开源上的努力和影响力获得业内的认可。

中国 Top 20 项目分析

针对所有排名项目,我们也筛选出了中国 Top 20 的开发者项目,列表如下:


##Globalnameactivitycountissue comment
12996icu/996.ICU342011995826279
228ant-design/ant-design9070446621504
337ElemeFE/element7487431910643
483selfteaching/selfteaching-python-camp53507153676
590NervJS/taro5027226014720
6103PaddlePaddle/Paddle475092210247
7107vuejs/vue-cli453628306252
8128pingcap/tidb422160826105
9137OpenAPITools/openapi-generator406614168770
10141ant-design/ant-design-pro404019028671
11169apache/incubator-echarts363220316576
12193vuejs/vue340320674537
13207Advanced-Frontend/Daily-Interview-Question325821255742
14209youzan/vant321516565810
15237nestjs/nest294715358488
16270apache/dubbo277910395560
17297ApolloAuto/apollo25926663289
18362alibaba/nacos231811313863
19383PaddlePaddle/models22285712968
20385tikv/tikv221926913025


从 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 。



996 .ICU 全年贡献图


从 TiDB 项目的内容贡献图来看,整个社区存在多个核心维护者,他们各自维护着不同的模块,周边也有大量的开发者在做出贡献。其背后的企业 PingCAP ,是业界非常典型的开源企业,他们的协作模式是所有开发人员通过 GitHub 进行协作。



TiDB 2019 全年贡献图


以 Vuejs 下的两个项目 vue-cli 和 vue 为例,在 vuejs/vue-cli 项目中,从每月贡献图可以看出该项目的大部分贡献由 Haoqun Jiang 做出,单月的主要贡献者不超过两名。


Vuejs/Vue 大部分贡献都是由一个账号 Evan You 尤雨溪做出的,该项目 4 月份之后内容贡献图呈现出许多协作孤岛的形态,反映出贡献者对少量文件的修改,项目变动不大。




Vue 3 月和 4 月内容贡献图

开发语言分析

我们分别对全球项目活跃度 Top 1000 的项目、全球项目参与人数 Top 1000 的项目和中国开源项目进行了开发语言方面的统计,可以发现 JavaScript 使用最多




原因我们分析如下:


  • JavaScript 是一门直接被嵌入到 HTML 中的脚本语言,是一门可以被 Web 浏览器理解的语言。它无需编译、在浏览器环境可以直接运行的特性,让 JavaScript 项目在活跃度的提升上占据了优势。

  • 谷歌开发的 Angular 和 Facebook 开发的 React,另外还有 Vue,这些主流前端框架都是  JavaScript 生态圈中的一部分。

  • 这几年随着行业的发展,JavaScript 变得几乎”无所不能“,现在基本所有的主流互联网应用,其前端都有大量的 JavaScript 代码。比如我们日常使用的邮件、社交工具等等。


此外,全球项目活跃度 Top1000 和全球项目参与人数 Top 1000 的项目中,Python 的使用居于第二位,可能是因为:


  • Python 相较于其他主流编程语言具有更好的可读性,简单易学、易于维护。

  • Python 应用范围广,它自带的各种模块加上丰富的第三方模块,免去了很多“重复造轮子”的工作,可以更快地实现多种功能。

  • 人工智能的浪潮进一步推动了 Python 的发展,很多人工智能任务以及大数据分析都会优先使用 Python 实现。


在中国开发者社区中,我们发现除了 JavaScript 外,Java 和 Go 的活跃度也很高,分别排在第二、第三。



我们认为:在服务器和移动端开发上,Java 还没有真正意义上的对手,可以预见 Java 依旧是企业软件、大数据、电商…最核心的技术栈。Go 是谷歌开发的新一代编程语言,在过去的几年里取得了很大的成功。现代的云端、网络和 DevOps 软件的很大一部分都是用 Go 编写的,例如 Docker、Kubernetes、Terraform、etcd、Istio 等项目。许多公司也将它用于通用场景下的开发工作,Go 语言中国社区也极具活力。


对比全球的开发语言排行榜,我们发现中国开源项目中 Python 的使用与 Java、Go、C++相比较少。另外还值得关注的是,Ruby 和 PowerShell 在中国社区也并不受重视。

国内技术公司开源项目一览

其实各大开源项目的背后,基本都有科技公司的支持,我们给出了一个科技公司维护的 GitHub 组织和项目列表,并根据该列表,计算出了科技公司所维护的开源项目在 2019 年的活跃情况与开发者参与情况,结果如图:


#nameactivitycountissue commenttop 500top 10000
1Alibaba11049846137871665
2Baidu379533735064415
3PingCAP333110262224216
4Tencent260120520466018
5Huawei1043901267714
6Deepin101291719202
7WeBank72836115800
8360690109287502
9JD670412314024
10Xiaomi52644281502
11Youzan48035844212
12DiDi47629457205
13Meituan40539353402
14Netease34045434903
15Qunar2813349700
17Bilibili25525242203
19CTrip19214430001
20Bytedance17023118700
21Vipshop104922800
22Douban98179800


在国内企业的开源数据中,我们可以看到阿里的数据几乎在所有类别里都名列第一,有时甚至是其它公司之和,并且在社区化 / 开放等方面也做得不错。但放到全球角度,出自阿里的知名度相对较高的项目,还是 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 开放实验室是一群由来自华东师范大学、同济大学的师生所构成的开放创新共同体,专业背景包括计算机科学、数据科学及其相关跨学科,长期思考并实践教育与开源两大主题。本次数字年报的主要贡献者包括:赵生宇、王伟、周添一、范家宽、王皓月、夏小雅、杨尚辉等。


2020-02-03 16:2118246

评论

发布
暂无评论
发现更多内容

equals方法通用约定

李子捌

Java 28天写作 12月日更

18《重学JAVA》--JAVA异常(二)

杨鹏Geek

Java25周年 28天写作 12月日更

Dubbo框架学习笔记六

风翱

dubbo 12月日更

读《思辨与立场》-06 思维的要素 -02

wood

28天写作 批判性思维 思辨与立场

Java程序中如何正确的释放资源

李子捌

Java 28天写作 12月日更

架构实战训练营 - 模块 3- 作业

温安适

「架构实战营」

语音信号处理 4:语音的声学特征

轻口味

AI 28天写作 12月日更

「架构实战营」模块二《如何抓住架构设计的关键点》作业

DaiChen

作业 模块二 「架构实战营」

在线JSON转BigQuery工具

入门小站

工具

CSS之选择器(十一):focus-within

Augus

CSS 12月日更

大神级插件ScriptRunner案例分享

跟YY哥学Jira

Jira automation ScriptRunner

SRE在安全方面可以做点啥

勇往直前的胖子

homework02

王欣欣

「架构实战营」

A 5G Odyssey :2021北京漫游

脑极体

设计模式:责任链模式学习笔记

Changing Lin

12月日更

原型模式

卢卡多多

28天写作 12月日更 原型模式

大系统中的线下团队

张老蔫

28天写作

如何配置 Nessus 漏洞扫描策略?

Ethereal

网络安全 漏洞扫描 网络技术联盟站 Nessus

架构实战营模块二作业

Poplar

架构实战营

微信朋友圈高性能复杂度

阿门阿前一颗葡萄树๑

架构实战营 #架构实战营 「架构实战营」

模块二作业——微信朋友圈高性能复杂度分析

木几丶

「架构实战营」

【架构实战营】模块二:命题作业

wgl

「架构实战营」

49 K8S之Envoy代理程序

穿过生命散发芬芳

k8s 28天写作 12月日更

架构实战模块2作业

holdzhu

「架构实战营」

第二模块学习总结

Anlumina

#架构实战营

分析下微信朋友圈的高性能复杂度

Anlumina

#架构实战营

模块2

Geek_59dec2

架构实战营

架构复杂度分析

tony

「架构实战营」

Volatile 初探和 Java 内存模型

悟空聊架构

SpringCloud 28天写作 passjava 悟空聊架构 12月日更

模块九作业

bob

「架构实战营」

PoE、PoE+、PoE++ 三款交换机如何选择?一文带你了解!

Ethereal

交换机 运维技术 PoE 弱电工程

我们分析了GitHub上5.46 亿条日志,发现中国开源虽然贡献大但还有这些不足..._文化 & 方法_InfoQ 中文站_InfoQ精选文章