‧
阅读时间:4分钟
GitHub顶级项目的总线因子
Metabase 团队
‧ 4分钟阅读
分享这篇文章
“巴士因素”是指在项目中,需要有多少人(或者退出)才会使项目陷入严重困境的人数。我们对GitHub上(按星标计)前1000个项目的巴士因素很感兴趣。
观察结果
查看我们的仪表板,或继续阅读以了解我们的发现。
数据集
- 我们使用了GitHub API和truckfactor来获取和计算GitHub上按星标计的前1000个仓库的巴士因素。
- 由于内存限制,我们只能计算大约95%的GitHub仓库的巴士因素。
- 为了排除无代码仓库(如学习资源或主题精选列表),我们移除了主要编程语言无法确定的项目,或者仓库主要由以下文件类型组成:Makefile、TeX、Dockerfile和Markdown。
- 如果您想亲自尝试这些数据,请下载并探索数据集。
我们如何计算“巴士因子”
我们使用了一个名为truckfactor的库来计算巴士/卡车因子。以下是卡车因子如何进行计算。对于每个仓库,truckfactor(以下直接引用自仓库)
- 读取仓库的git日志
- 计算每个文件的“知识所有权”。
- 当一个贡献者编辑了文件中的最多行时,她就有该文件的知识所有权。
- 这种计算方法受到了A. Tornhill 的《Your Code as a Crime Scene》的启发。
- 注意,只有对于文本文件,才计算知识所有权。对于仅包含二进制文件的仓库,该工具可能无法返回正确答案。
- 然后,类似于G. Avelino 等人 A novel approach for estimating Truck Factors,在仍然超过一半的文件有知识所有者的情况下,移除低贡献者。剩余的知识所有者数量是该仓库的卡车因子。
为了提供一些背景,2015年和2016年进行的研究计算了133个流行GitHub项目的巴士/卡车因子。结果表明,大多数项目巴士因子较小(65%的巴士因子≤2),并且这些项目中只有不到10%的巴士因子大于10。
巴士因子的分布
几乎一半的项目巴士因子为二或更低。
只有10%的项目巴士因子为6或更高。
仓库星级与巴士因子之间没有相关性
我们最初认为,更受欢迎的项目应该有更多的贡献者,因此巴士因子应该更高,但似乎并非如此。
最常用语言的平均巴士因子
我们在这里讨论的是通用语言,因此像HTML和CSS这样的语言也在考虑范围内。
- 超过一半的所有项目使用Shell脚本语言(Bash脚本)。
- 最常用的语言是网络工具:JavaScript、HTML、CSS和TypeScript。最常见的一般用途语言包括Python、C和Java。
- 使用基于网络开发语言(JavaScript、HTML、CSS、TypeScript和SCSS)编写的项目,与使用通用编程语言(Python、C、Java和C++)编写的项目相比,巴士因子往往较低。
最受欢迎的标签
在最受欢迎的仓库中,JavaScript
是最受欢迎的标签,由流行的Web框架和库如React
、Vue
、Bootstrap
和Angular
引领。如果我们把Go
和Golang
合并,用Go编写的项目将是第二受欢迎的标签(尽管有些仓库可能同时包含Go
和Golang
标签,这可能会增加标签计数)。
Hacktoberfest
是第二常见的标签,这是有道理的。Hacktoberfest是一个为期一个月的庆祝开源项目活动,旨在鼓励对开源项目的贡献,因此仓库维护者有动力添加标签以吸引贡献者。
软件类型相关的总线因子
我们还根据软件类型进行了总线因子的细分,机器学习在具有总线因子的项目中占比最多,达到两位数。
后端项目
前端项目
机器学习项目
商业智能项目
结论
- Metabase 支持公共交通。
- 软件建立在纸牌屋之上。
- 记录你的代码。
- Metabase 的总线因子还算不错(4)。此外,我们是一个完全分布式团队,因此总线事故必须全球协调,才能对项目构成任何威胁。
- 但我们的总线因子还可以更好,所以,你知道的,我们在招聘。