摘要:开源软件已经成为人类数字社会的基石,是全人类共同努力的结晶,开源协作对人类数字文明的发展起到了巨大的推动作用。GitHub 作为全球范围内最主要的开源协作平台,无数个开源社区在其上孕育而生,其背后海量的开发者行为数据蕴含了大量的个体贡献规律、群体协作模式、社区健康状况、生态发展趋势、以及商业战略价值。
《GitHub 2020 数字洞察报告》是由 X-lab 开放实验室发起,联合多家科研机构与开源社区所共同完成的一个反映全球开源现状与趋势的开源项目。报告涵盖了当今全球开源的总体情况分析、开发者分析、项目分析、领域案例、每月之星等众多内容,希望以此绘制人类的"开源数字生态地图",推动开源社会创新,繁荣开源数字文明。
2020 注定是个不平凡的数字,开源的 2020 也是如此。即便是在新冠疫情肆虐的今天,开源依旧大发展,甚至发展的更加迅速。从各项数据指标都能发现:GitHub 的日志数 2020 年达到了 8.6 亿条,相较 2019 年增长了 42.6%;活跃代码仓库达到了 5,421 万个,相较 2019 年增长了 36.4%;活跃开发者数达到了 1,454 万人,相较 2019 年增长了 21.8%。管理学大师彼得·德鲁克曾经说过:“你如果无法度量它,就无法管理它”(If you can not measure it, you can not manage it),进而也无法提高它,而软件行业至今也还没有找到一个可以有效度量软件开发生产效率(Productivity)的方法。整个开源生态系统更是如此,个体如何度量、社区如何度量、管理者如何利用这些数字做更好的决策,这些都是问题。但在我们看来,这些既是挑战,也是机遇。要想有效的开展开源治理的工作,就难以绕开度量的问题,GitHub 全域数据给予了我们这样一个极佳的机会。度量也是一把双刃剑。度量具有极强的引导性,它会激励你重视并改善能够度量的元素,但也可能使你忽视无法度量的元素并使之恶化。在全球大规模的开源社区与生态构建的过程当中,如何找到合理的度量,并合理的利用这些度量呢?希望本报告能够给大家带来一些启示,这也是本报告的重要目的之一。今年的《GitHub 2020 数字洞察报告》主要的变化包括:整个报告的迭代以开源项目的形式协作完成,涉及数据、代码以及文字内容;
提出更加全面的度量指标,以及更加科学的计算方法;
用更加专业化、丰富的手段进行数据可视化与洞察;
在活跃度的基础上,更加关注时间维度、多样性维度、协作网络维度上的信息;
首次提出开源星系(OpenGalaxy)与开源象限(OpenQuadrant)的概念,并进行了落地实现;
增加了单个项目开发者协作网络的深度分析案例;
增加了短期内受到大量关注的开源每月之星内容。
本次报告的主要开源洞察概述如下:
全球开源事业大发展,社区活跃行为、开发者数量、开源仓库数量均大幅提升;
开源软件生产流水线自动化程度大幅提升,多样化的数字协作机器人成为主流;
基于海量数据的活跃度模型能够有效地持续反映开发者与社区的整体状况;
主流开发者的工作时间具有较强规律,并和工作时间开始重合,公司化开源成为绝对主流,996 开源项目开始出现;
美洲开发者分布最多,欧洲拥有最高的单时区开发者比例,亚洲开发者数量依然较少,中国相较其他亚洲国家具有较高的开源活跃度;
JavaScript 和 Python 依旧是语言排行榜上的冠亚军,HTML 和 CSS 在全域开发者语境下更受欢迎,而 TypeScript 和 Rust 语言则上升明显;
谷歌、微软等老牌企业依旧为活跃的开源贡献大户,国内的企业阿里活跃度排名第一,PingCAP 的表现则非常亮眼;
第一次通过开源星系认识 GitHub 开源项目的全貌,主流技术领域的开源生态已经形成,新的开源社群则不断涌现,极少量项目还是协作孤岛;
CNCF、LF、Apache 等基金会在技术领域上各有侧重,通过开源象限能够进一步区分同类项目的发展阶段与成熟水平;
开发者时区分布图和协作网络成为开源社区多样性与健壮性的有效分析手段,能够更好地指引社区经理的开源治理工作。
以下是《GitHub 2020 数字洞察报告》正文。
从总体数据来看,2020 年全年,GitHub 全域事件日志数量总计约 8.6 亿条,较 2019 年 6.1 亿条增长约 42.6%,是近五年来增长最快的一年。本次报告通过项目与开发者行为数据,统计得到 2020 年 GitHub 全域活跃项目数量约 5,421 万个,活跃开发者账号约 1,454 万个,分别较 2019 年增长了 36.4% 与 21.8%。GitHub 2015 - 2020 年事件日志量、活跃仓库数量、活跃账号数量总体情况
开源世界的核心是贡献开源的开发者们,如同 Apache Way 所推崇的 Community Over Code,由开发者组成的社区才是开源生命力的源泉。本报告将从全域开发者活跃情况、GitHub Apps 使用情况、开源开发者典型工作时间画像、全球开发者时区分布、开发者使用语言分布等多个角度对 GitHub 2020 年全域开发者进行全面分析。
通过对全域开发者进行活跃度与活跃仓库数量的统计,我们得到 GitHub 全域开发者的活跃度分布情况和单个开发者活跃仓库数量分布情况如下:
经统计,活跃度超过 2,000 的开发者数量为 5,445 个,占全域开发者数量不足万分之六。而大部分开发者活跃度都在 [0, 500] 区间内,占全域开发者数量的 99.45%,说明大多数开发者还是处于低活跃度的一个状态。观察曲线尾部,我们发现开发者活跃仓库数量在最后有一个回升,其实是由于部分未被过滤掉的自动化协作类账号的活跃仓库数量巨大,远超正常人类开发者,因此尾部形成 V 形曲线。另外,我们通过活跃度统计了全域活跃排名最高的 10 个开发者,其中 8 个账号为 GitHub Apps,另外两个账号为自动化协作的开发者账号。GitHub 2020 年全域开发者账号活跃度统计 Top 10自动化协作机器人由于运行在服务端,可以同时服务于众多项目,从而具有极高的活跃度和协作仓库数量。本文所涉及到的诸如活跃度的详细计算方法请参阅完整的报告内容。
在全球最活跃开发者账号中,大部分为 GitHub Apps,故本报告对 GitHub Apps 数据做出相关统计,GitHub Apps 年活跃账号数量(活跃数量)与所产生日志总量占全年日志占比(日志占比)的变化如图所示。通过图可以看到,GitHub Apps 自 2016 年推出以来,在近年得到了迅猛发展。从日志占比来看,2019 年相较于 2018 年提升了 288%,2020 年相较 2019 年增长 141%,达到了 12% 以上。未来,基于 GitHub Apps 的自动化协作机器人会被更加广泛的用于项目的自动化协作,更好的帮助开源项目进行大规模协作的管理。
由于 GitHub 事件日志具有详细的时间戳信息,故可以通过对时间维度的统计分析进行洞察,例如在 UTC 标准时间下,全球的工作时间分布如图所示。若我们认为主流开发者正常的工作时间为每日 9 时至 21 时,则在全球视角下,通过日志量来看,可以看到 GitHub 平台上的开发者由欧美主导。而且周末的活跃明显低于工作日,也与 GitHub Octoverse 2020 报告中更多开发者使用 GitHub 工作而不仅仅是基于兴趣开发相吻合。
开发者的地理分布情况一直是开源项目全球化指标的一个重要方面。通过对 GitHub 全域开发者活跃度前 5 万名开发者的统计,我们得到全球开发者在各时区分布估计如图所示。GitHub 2020 年全球开发者时区人数分布图可以看到,在高活跃开发者中,美洲(美国、加拿大、南美)开发者分布最多,虽然单时区的开发者比例不是最高,但总体开发者占比高达 33% 左右。而欧洲拥有最高的单时区开发者比例。亚洲的开发者数量依然较少,但中国、俄罗斯开发者相较其他国家还是有较高的开源活跃。而太平洋地区则由于人口分布原因,开发者比例最低。基于开发者活跃度定义,我们也给出开源项目活跃度的计算方法。在给定的活跃度计算方法下,过滤了 GitHub Apps 相关账号的协作行为,共统计得到 2020 年有效的总活跃项目数量约 1167 万个。这些项目的活跃度分布情况与项目中的参与开发者数量分布情况如下图所示。GitHub 2020 项目活跃度及参与开发者数量分布情况经统计,2020 年全年项目的活跃度值最高为 971.1,但高活跃度的项目数量占比极低,超过 99.95% 的项目活跃度值都低于 10,即绝大部分项目处于低活跃状态。另外,项目中的参与开发者数量最高达 85546 ,即在 2020 年内最多有 85546 个开发者参与了同一个项目。但有 71.21% 的项目参与开发者数量都低于 10,即 2020 年全年 GitHub 上大部分项目的参与人数都在 10 人以内。
根据项目活跃度定义,我们对 2020 年全年活跃项目进行了活跃度统计与排名,这里给出世界活跃度 Top 20 项目的列表。
GitHub 2020 年全域项目活跃度 Top 20同时,我们也通过各种渠道采集了中国的开源项目列表,并同样给出了中国项目的活跃度排名情况,如下表所示。GitHub 2020 年中国项目活跃度 Top 20从这个列表中,我们发现,PingCAP 在开源领域的表现非常地亮眼。Top 20 项目中上榜的项目有6个。阿里在开源领域中的成绩也是非常不错。Top 10项目中上榜的项目有2个。百度在人工智能领域的表现非常不错,其深度学习平台 PaddlePaddle 占据了2个项目。中国的 Top 20 项目列表中,包括阿里的 Ant-Design 组件库,京东基于 React 前端框架的开发框架 taro,由饿了么(已被阿里收购)前端团队开源的 Vue UI 组件库Element等等,这说明了在国内,前端群体在社区更为活跃;另外前端代码一般也不太涉密,因此公司在心态上更开放一些。不过这其中也有一点需要引起注意,上榜的前端项目组件库居多,但是缺少核心项目。而在各大开源项目的背后,基本都有科技公司的支持,我们计算出了科技公司所维护的开源项目在 2020 年的活跃情况,结果如下表所示。GitHub 2020 中国企业开源项目活跃度一览在国内企业的开源数据中,我们可以看到阿里巴巴的数据在很多指标上的表现里都非常不错,有的指标值甚至是其它公司之和,并且在社区化/开放等方面也做得不错。
通过活跃度的数据统计得到的结果会受到自动化协作行为的影响,并且不同生命周期阶段的项目的活跃度可能不具备可比性,故在本次报告中我们引入了全域项目协作关系网络,开源星系 —— OpenGalaxy。GitHub 2020 全域项目协作关系网络——OpenGalaxy 2020GitHub 2020 最活跃的 22.1 万个开源项目组成的协作网络图。该图中节点的大小表示项目的影响力大小,节点的着色表示节点所属的协作聚类结果。在协作网络的影响力评估下,得到 GitHub 2020 全域影响力最高的项目 Top 20 如下表所示。OpenGalaxy 2020 全域项目影响力 Top 20 可以看到,VSCode 的影响力从活跃度的第 5 跃升为第 1,且高于排名第 2 的 flutter 约 64.7%,以巨大的优势成为全球最具影响力的项目。事实上这是由于 VSCode 在成为全球最流行的 IDE 的同时,也与其他各领域的顶级项目产生了大量的协作关联。OpenGalaxy
具有优秀项目会因优秀开发者而关联在一起的特性,从而不会因自动化行为导致影响力指标虚高,具有较好的算法稳定性,影响力指标的变化背后一定意味着开发者群体的活跃行为迁移,从而可以较好的反映出
GitHub 全域的项目影响力状况。其它详细内容请参见完整的报告正文。
本报告提出一种开源象限(OpenQuadrant)的方法来分析一个开源项目在影响力、全球化、社区规模三个核心特性方面的表现。基于该开源象限分析,使用散点图来表示,横纵两个维度为项目影响力指标和项目全球化指标,为了方便可视化,我们采用取对数的形式呈现上述两个指标,而使用散点图上的点的大小来刻画项目参与的活跃人数,用来反映一个项目的社区规模。基于以上,开源象限将整个平面分成了四块区域,分别是前瞻(Foresighted):落在该区域的项目影响力强,同时项目全球化程度高;
引领(Leading):落在该区域的项目影响力强,但项目全球化程度较低;
行动(Acting):落在该区域的项目影响力较弱,但项目全球化程度高;
进入(Incubating):落在该区域的项目影响力较弱、同时项目全球化程度也较低。
CNCF 的英文全称是 Cloud Native Computing Foundation,即“云原生计算基金会”。下图为 CNCF 下云原生领域开发者时区分布图,可以看到该领域的开发者时区分布与全域项目的开发者时区分布较为接近,说明 CNCF 云原生领域的项目全球化程度较高。
CNCF 下云原生领域的开源象限分析可视化结果如下图所示。Kubernetes项目无论是在影响力、全球化、还是社区开发者体量上面,当之无愧的处于第一的位置。LF AI&Data 是 Linux Foundation下的一个综合型基金会,支持人工智能、机器学习、深度学习和数据方面的开源创新。
LF AI & Data 下数据与人工智能领域的开源象限分析可视化结果如下图所示。可以看到该领域有不少全球化做得比较好的项目,非常符合人工智能全球走热的趋势。
LF AI & Data 下数据与人工智能领域的开源象限
Apache 软件基金会(ASF)成⽴于 1999 年, 是⼀个依据 501(c)在美国成⽴的非营利性公共慈善组织,基金会的使命是为公共利益而提供软件。
Apache 下大数据领域的的开源象限分析可视化结果如下图所示。可以看到该领域的项目整体分布具有较好的分散性,Spark、Flink、Hadoop 等明星项目占据着头牌位置。
Apache 下大数据领域的开源象限
Apache 软件基金会下来自中国的项目的开源象限分析可视化结果如下图所示。可以看到该领域的 Echarts、Skywalking、Dubbo 和 Shardingsphere 四个项目处于第一方阵,体现了较强的实力。
Apache 软件基金会下中国项目的开源象限
VSCode 项目作为开源生态中的一颗北极星,在 2020 年依旧保持着旺盛的生命力,这一年,共有 206645 条记录由 VSCode 产生,相比 2019 年的 121490 条,增长了接近一倍;这一年,VSCode 的项目年平均活跃度分值为 385,在全域项目中排名第 7 位;这一年,有 46639 位开发者(包含协作机器人账号)在项目中活跃过,在这艘开源航母上发出有力的协作信号。同时我们通过开发者在项目中的协作关系构建了 VSCode 在 2020 全年的开发者协作网络,如图所示。在这个由
2
万多个开发者组成的协作网络中,节点为开发者账号,边为协作关系,节点的大小为对应开发者账号的活跃度。在这个协作网络中,处在网络核心位置的较大的节点是
VSCode 的核心团队成员,他们不仅有很高的活跃度,而且与其他开发者均具有较高的协作关系,这个群体的数量在百人左右。紧接着外侧是
VSCode 的重度使用者或贡献者,他们可能随时提交 Issue 或 PR
进行讨论或贡献,这个群体的数量在千人级别。最外侧,也是最大量的开发者是 VSCode
的一般用户和偶发贡献者,大部分仅在自己关心的问题上提问或讨论。除了顶级项目之外,GitHub 上还有一些短期内受到广大开发者大量关注的项目。这些项目可能是现象级项目,也有可能在未来成为顶级项目。这些项目可能与社会热点有关,例如,与新冠疫情相关的项目,与学生毕业求职相关的项目等等。发现这些项目以及解释这些项目在短期内受到大量关注的原因是很有意义的。因此,本部分“每月之星”列举了在 2020 年每个月里受到开发者大量关注的项目。以下是我们挑选出来的项目,具体介绍可以参见报告全文内容:3月:CSSEGISandData/COVID-194月:labuladong/fucking-algorithm5月:design-resources-for-developers6月:CnC_Remastered_Collection8月:geekxh/hello-algorithm《GitHub
2020
数字洞察报告》作为一个数据驱动的可视化工具,主要为大家提供一个新的视角来观察今天的开源世界,进而结合各自的行业经验获得洞见。从本次年报开始,我们将这个作品也作为一个开源项目进行运营,逐渐缩短发布的周期,甚至按需提供个性化的按需服务。如若发现数据错误或遗漏,欢迎提交 Issue 或 PR 到项目的 GitHub 仓库,本报告文本部分采用 CC-BY-4.0 许可协议。具体请参见完整报告内容。《GitHub 2020 数字洞察报告》是由 X-lab 开放实验室发起,由“源光闪烁”开源科技媒体策划,联合了华东师范大学数据科学与工程学院、开源社、上海开源信息技术协会、开源社会工程研究院(筹)等多家科研机构与开源社区所共同完成。在春节期间从零开始,完全通过线上远程协作的方式,在十天内协作完成了报告的全部内容,并由来自美国和欧洲的顾问专家提出意见与建议。
本次数字洞察报告的主要贡献者包括:赵生宇、王伟、周添一、翁振杰、王皓月、夏小雅、朱香宁、杨鸣、宁泽欣、林海铭、王福政、史经犇、娄泽华、顾业鸣、李思颖等,特别感谢吴雪(雪哥)和 Kate(杨佳)作为项目顾问,为数字洞察报告提供指导与建议。我们欢迎更多的开源爱好人士加入我们,共同推动开源在世界的发展。完整的报告内容,请通过以下链接获取:http://oss.x-lab.info/github-insight-report-2020.pdf