作者简介
王 伟
华东师范大学研究员,博士生导师,计算机科学教育教学部主任,中国计算机学会高级会员,开源社理事会成员、执行长,研究方向为计算教育学、开源数字化创新、复杂数据网络。
周添一
华东师范大学数据科学与工程学院xlab实验室硕士研究生。
赵生宇
同济大学电子与信息工程学院xlab实验室博士研究生。
范家宽
华东师范大学数据科学与工程学院xlab实验室硕士研究生。
论文引用格式:
王伟,周添一,赵生宇,等. 全球开源生态发展现状研究[J]. 信息通信技术与政策, 2020(5):38-44.
全球开源生态发展现状研究
王伟1 周添一1 赵生宇2 范家宽1
(1. 华东师范大学,上海 200062;2. 同济大学,上海 201800)
摘要:在开源日益重要的今天,建立在全域开源大数据基础上的相对完整、可以反复进行推演的数据分析尤为重要。使用2019年全年GitHub的日志进行统计,总日志条数约 5.46亿,通过分析GitHub全网的开发者行为日志,从数据的视角,来观察全球范围内的开源现状、进展趋势、演化特征以及未来挑战等问题,除了展现目前开源世界全貌之外,还特别关注中国的开发者和企业组织在整个开源产业中的表现。
关键词:开源;行为数据;开发者行为;GitHub
1 引言
随着开源软件的日趋风靡,开源已经成为一项世界性的流行运动,它是人类在互联网发展进程中探索出的一种面向全球的大规模协作生产方式,它以开放共享、合作共赢为宗旨,有效地推进了全球化进程。开源经过形成时期、古典时代、移动时代到云开源时代的不断发展,产业链条已经逐渐形成[1]。越来越多的中国IT企业,无论是大厂还是小厂,都越来越积极地投入人力物力参与开源、贡献开源。
开源代码代表着IT技术发展最先进的方向,开源社区代表着开放的协作精神与创新的摇篮。近期陆续发布的《中国开源年度报告》[2]和《中国开源项目Grank分析报告(2019)》[3],则从另一方面说明了开源在中国受关注的程度。这些报告要么通过问卷调查的形式进行数据采集,要么通过GitHub API定向采集的局部数据进行分析,且在报告中利用的指标也较为单一,因此难以准确地体现开源世界的全貌[3-4]。然而,一份有价值的数据分析必定是基于全域大数据的基础上,结合专家进行关键数据的人工标注,通过构建合理的分析模型,才能得出一套相对完整的、可以反复进行推演的数据报告。
为此,X-lab开放实验室团队在已有研究的基础上,试图进一步更加全面地对GitHub[5]上开发者的行为数据进行分析,尽量客观准确地展现目前开源世界所发生的事请,特别是中国的开发者和企业组织在整个开源产业中的表现和发展趋势。
2 开源开发者与项目活跃度评估
本文使用2019年全年GitHub的日志数据,总日志条数约5.46亿,相较于2018年的4.21亿增长约29.7%。在开发者活跃度与项目活跃度的定义下,统计得到2019年总活跃项目数量约为512万个,相较于2018年的约313万个增长约63.6%;2019年总活跃开发者数量约360万个,相较于2018年的约303万增长约18.8%。
开发者活跃度,其定义为某特定GitHub账号在一段时间内在某特定GitHub项目中的活跃评价指标。其活跃度由该账号在该项目中的行为数据决定,本文关心的行为主要包含以下几种。
(1)Issue Comment:在Issue中参与讨论是最基本的行为,每个评论计入1次。
(2)Open Issue:在项目中发起一个Issue,无论是讨论、Bug报告或提问,对项目都是带来活跃的,每个发起的Issue计入1 次。
(3)Open Pull Request:为项目提交一个PR,表示已对该项目进行源码贡献,则每次发起一个PR计入1次。
(4)Pull Request Review Comment:对项目中的PR进行Review和讨论,需要对项目有相当的了解,并且对项目源码的质量有极大帮助,每个评论计入1次。
(5)Pull Request Merged:若有PR被项目合入,即便是很小的改动,也需要对项目有较为深入的理解,是帮助项目进步的真切贡献,则每次有一个PR被合入计入1次。
可使用Au = ΣwiCi和Ar = ΣAu作为评估公式。其中,Ci是本次研究模型所关注的特征,即上述5个行为的统计指标,Wi为赋予特征的对应权值,Au和Ar分别表示开发者和开源软件仓库的活跃度。基于评测指标和评测模型,本文通过对GitHub 2019年全年的日志数据进行计算得到的评测值如表1~表4所示,其中表1展示了全球Top 10活跃开发者账户,从数据统计来看,最活跃的开发者账号均为机器人账号,其中7个账号为GitHub APP。表明开发者最常使用的自动化仓库管理、协作功能主要集中在依赖更新、自动同步上游、GitHub学习、漏洞检测等方面。在对2019年全年活跃项目进行统计与排名后,可以得到如表2和表3所示世界Top 10和中国Top 20活跃的开源软件项目。从全球来看,世界排名前10的开源项目中只有1个来自于中国,即996.ICU;活跃度最高的项目则是来自微软的跨平台代码编辑器Microsoft/vscode。此外,微软使用开源的方式来建设其Azure云平台的项目MicrosoftDocs/Azure-Docs排名第3,显然微软在开源上的努力获得了人们的认可。表2中涉及了3个来自Google的项目,分别是前端跨平台开发框架Flutter、容器编排系统Kubernetes以及深度学习框架Tensorflow,这也进一步说明Google在开源上的努力和影响力获得了业内的认可。
表1 全球Top 10开发者账户
表2 全球Top 10开源软件项目
表3 中国Top 20开源软件项目
表4 中国Top 20开源企业
从表3中可以看出,996icu/996.ICU的综合活跃度数值远远高于其他项目超过一个数量级。该项目中数值最高的指标为Open Issue,同样超出其他项目一个数量级,达到22080,最低的指标为Review Comment只有144;其他两个比较有趣的项目是Selfteaching/Selfteaching-Python-Camp和Advanced-Frontend/Daily-Interview-Question,其活跃度排名分别是第4和第13,分别对应了教育和面试求职两个领域,这从侧面反映出大众对这两个领域的需求和关注度非常高;还有一个非常引人注目的项目是Pingcap/Tidb,该项目的Review Comment数值是所有项目中最高的,达到14913,相对比之下,该项属性下排名第2的PaddlePaddle/Paddle只有它的不到60%,而Issue Comment仅次于996icu/996.ICU,Open PR仅次于PaddlePaddle/Paddle和Selfteaching/Selfteaching-Python-Camp,分别排名对应属性的第2与第3位。而其608的开发者参与数量,与其他前端项目相较甚远,但凭借如此高的活跃度,足可看出其在社区的繁荣程度。
从表3中还可以看出,在中国开源成绩比较突出的两家公司是百度和阿里巴巴。百度的深度学习平台PaddlePaddle占据了两个项目,分别是核心框架Paddle和模型库Models。此外,开放自动驾驶平台Apollo也榜上有名。另外,由百度贡献的数据可视化项目ECharts在2018年进入Apache孵化器,此次榜单中ECharts排名第11;阿里巴巴“服务于企业级产品设计体系” 的Ant-Design是蚂蚁金服采用 React封装的一套组件库,在中国范围内是属于最活跃的开源项目之一,排名第2;而基于Java的RPC框架Dubbo,也在2020年成为Apache顶级项目。
从表3中还可以发现,前端项目几乎占据了总项目的一半,包括Ant-Design组件库、Vue UI组件库Element以及基于Vue构建的移动UI组件库Vant等,这说明在国内前端群体在社区中显得更为活跃。另外,由于前端代码一般不太涉密,因此其所属公司在心态上更开放。不过这其中也有一点需要引起注意,即虽然活跃的前端项目组件库居多,但是缺少核心项目。
各大开源项目的背后,基本都有科技公司的支持,本文给出了一个科技公司维护的GitHub组织和项目列表,根据该列表,计算出了科技公司所维护的开源项目在2019年的活跃度情况与开发者参与情况,结果如表4所示。在国内企业的开源数据中,可以看到阿里巴巴的数据几乎在所有类别里都名列第1,有时甚至是其他公司的数据之和,并且其在社区化、开放等方面也做得不错。从全球来看,出自阿里巴巴的知名度相对较高的项目为Apache Dubbo,以及2019年从收购得来的大数据流处理框架Flink。2019年9月,在杭州的云栖大会上,阿里巴巴宣布开源将被明确升级为其技术战略之一。
AI是百度开源最鲜明的竞争力,比如PaddlePaddle和自动驾驶平台Apollo。PaddlePaddle也是当前国内唯一开源开放的深度学习平台。华为在2019年也做了不少开源的工作,推出了原生数据库GaussDB以及鸿蒙OS等,一改保守作风。而腾讯2019年也对外宣布已在GitHub上开源了近100个项目,超过1000个贡献者参与了开源贡献,拥有超过25万个Star数。另外,由腾讯贡献的Angel项目顺利毕业,成为Linux AI基金会第1个来自中国的顶级项目。2019年全年,腾讯在GitHub全球公司贡献榜上排名前10,并且在2019年6 月作为业内首家公司,发布了开源战略路线图。可以看出,各大企业近年来均在不断加大开源社区的生态建设。
3 开源协作关系可视化
针对上文分析方法得出的排名前20的中国开源项目,可进一步对其仓库的历史提交记录进行挖掘。Git仓库中的每一个提交记录由贡献者产生,对仓库的一个或者多个文件产生影响,因此对特定时段内的所有贡献者的提交记录进行分析能反映出贡献者的活跃程度、协作模式以及项目社区本身的类型属性。
图数据文件的可视化图中偏深灰色节点代表仓库文件,偏浅灰色节点代表用户,节点越大,表明该账号对应的用户修改的文件内容越多,节点间的边的粗细则反映了贡献次数。图1给出了两个例子,分别为Tidb和Vue社区的开源协作贡献网络,从图1(a)的Tidb项目的内容协作贡献网络来看,整个社区中存在多个核心维护者,他们各自维护着不同的模块,周边也有大量的开发者在做出贡献,且该社区的提交修改非常频繁,相较于其他项目,Tidb以比较快的速度进行演化和更新。相对的,图1(b)的Vuejs/Vue项目大部分贡献都是由一个账号(Evan You 尤雨溪)做出,且该项目在2019年4月以后,内容贡献图呈现出许多协作孤岛的形态,反映出贡献者对少量文件的修改,项目变动不大。
图1 开源社区协作贡献网络
4 开发语言分析
本文分别统计全球开源项目活跃度Top 1000的项目、全球开源项目参与人数Top 1000的项目和中国的开源项目,分析其使用不同开发语言的数量、使用不同开发语言进行提交操作的开发者的数量,以此作为参照来估计使用不同开发语言的开发者的数量。
从图2(a)和图2(b)中可以发现,JavaScript被使用的数量最多,原因为JavaScript是一门直接被嵌入到HTML中的脚本语言,可以被Web浏览器理解。JavaScript无需编译、在浏览器环境中可以被直接运行的特性,使其项目在活跃度的提升上占据优势。
图2 开源社区开发语言分布
Google开发的Angular、Facebook开发的React、纽约Google Creative Lab尤雨溪开发的Vue,这些主流前端框架都是JavaScript生态圈中的一部分。近几年随着行业的发展,JavaScript变得几乎“无所不能”,现在基本所有的主流互联网应用其前端都有大量的JavaScript代码。比如,人们日常使用的邮件、社交工具等。
此外,在全球开源项目活跃度Top 1000和全球开源项目参与人数Top 1000的项目中,Python的使用量居于第2位,原因为Python相较于其他主流编程语言具有更好的可读性,简单易学、易于维护。Python的应用范围广,其自带的各种模块加上丰富的第三方模块免去了很多“重复造轮子”的工作,可以更快地实现多种功能。人工智能的浪潮进一步推动了Python的发展,很多人工智能任务以及大数据分析都会优先使用Python实现。
如图2(c)所示,在中国开发者社区中,除了JavaScript之外,Java和Go的活跃度也很高,分别排在第2、第3的位置。可以认为,在服务器和移动端的开发上,Java还没有真正意义上的对手,甚至可以预见其依旧是企业软件、大数据、电商等最核心的技术栈;Go是Google开发的新一代编程语言,在过去的几年里取得了很大的成功。现代的云端、网络和DevOps软件的很大一部分都是用Go编写的,例如Docker、Kubernetes、Terraform、Etcd、Istio等项目。许多公司也将Go用于通用场景下的开发工作,Go语言中国社区极具活力。对比全球的开发语言排行榜,可以发现,在中国的开源项目中Python的使用与Java、Go、C++相比较少。另外,还值得关注的是,Ruby和PowerShell在中国社区受重视的程度还不够。
5 结束语
开源作为人类在互联网发展进程中探索出的一种面向全球的大规模协作生产方式,不仅有效地推进了全球化进程,还在慢慢改变整个社会和生产关系,其中开源社区的繁荣和开源软件的可持续性在其发展进程中显得愈发重要。基于真实的开源数据挖掘其背后的价值,对开源软件健康评估、协作网络分析、社区管理、项目变迁等任务起到关键的指导作用。
参考文献
[1] 云计算开源产业联盟. 开源产业白皮书(2019)[R], 2019.
[2] 开源社. 2019年中国开源年度报告[R/OL]. (2020-01-08) [2020-04-09]. https://kaiyuanshe.cn/project/china-open-source-report/.
[3] Linux中国. 中国开源项目Grank分析报告(2019)[R/OL]. ( 2020-01-06) [2020-04-09]. https://linux.cn/article-11755-1.html.
[4] 徐川, 覃云. 中国互联网公司开源项目调研报告[R/OL]. (2019-04-01)[2020-04-09].https://www.infoq.cn/article/G4O6JUhJF∗Tsv9eWM0L6.
[5] GitHub. The state of the octoverse [R/OL]. (2019-09-30)[2020-04-09]. https://octoverse.github.com/.
[6] Gitee. Gitee 2019年度数据报告[R/OL]. (2020-01-08)[2020-04-09]. https://blog.gitee.com/2020/01/08/gitee-2019-annual/.
[7] C.Gote,I.Scholtes, F.Schweitzer.git2net:Mining timestamped co-editing networks from large git repositories[R]. 2019 IEEE/ACM 16th International Conference on Mining Software Repositories, 2019.
Research on the development of global open source ecology
WANG Wei1, ZHOU Tianyi1, ZHAO Shengyu2, FAN Jiakuan1
(1. East China Normal University, Shanghai 200062, China; 2. Tongji University, Shanghai 201800, China)
Abstract: As open source is becoming more and more important, data analysis that is relatively complete and can be deduced repeatedly based on global open source big data is particularly important. In this work, we use the GitHub trace data of 2019 with the total number of 546 million logs for analysis. It aims to observe the current status, progress,and trends of open source worldwide from the perspective of data by analyzing the developer behavior logs of the entire GitHub. In addition to showing the full picture of the current open source world, evolutionary characteristics and future challenges, we pay special attention to the performance of Chinese developers and enterprise organizations in the entire open source industry.
Key words: open source; behavioral data; developer behavior; GitHub
本文刊于《信息通信技术与政策》2020年第5期
主办:中国信息通信研究院
《信息通信技术与政策》是工业和信息化部主管、中国信息通信研究院主办的专业学术期刊。本刊定位于“信息通信技术前沿的风向标,信息社会政策探究的思想库”,聚焦信息通信领域技术趋势、公共政策、 国家/产业/企业战略,发布前沿研究成果、焦点问题分析、热点政策解读等,推动5G、工业互联网、数字经济、人工智能、区块链、大数据、云计算等技术产业的创新与发展,引导国家技术战略选择与产业政策制定,搭建产、学、研、用的高端学术交流平台。
点亮“在看”

