《开源思索集》一从28万个开源项目中,我们能够学到一些什么?

简介:

本节书摘来异步社区《开源思索集》一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

从28万个开源项目中,我们能够学到一些什么?

开源思索集
引子:开源项目那么多,哪些是值得我们学习的
这里声明一下,仅仅是学习一下:他们是用哪些工具,来管理自己的项目的?

开源项目多如牛毛,值得分析的项目也很多很多。从哪里入手呢?幸运的是,在开源社区,有一个著名的网站,过去叫oloho,现在改名叫openhub。在他的网站首页,有这么四行字,以表明他们的数据库是多么的全面、丰富:

Indexing 669,008 open source projects
Connecting 3,742,793 open source contributors
Tracking 679,761 source control repositories
Counting 31,158,335,454 lines of code

这么说来,事情就变得比较“简单”了,我需要把openhub的数据都抓回来。

数据的筛选过程
具体的数据抓取过程,简直不忍详述(我的内心几乎是崩溃的)。总而言之,我只抓到了289,631个项目。openhub虽然号称自己索引了66万的开源项目,其实这仅仅是他的数据库里的最大ID号!当我顺着这个ID一个一个地去抓的时候,有很多ID都已经被删除了。

在抓取到的项目数据中,有两个数值,特别值得参考:contributors(参与开发者的数量)和users(该软件的用户数量)。相对而言,users的数据,可以认为是一个样本,即该开源项目的所有用户中,愿意并且知道该如何来openhub点击I use this的人。因此,即使是排名第一的Firefox,在openhub也只有13,158个用户。考虑到Firefox的用户数,已经超过5亿(来源于维基百科英文版),因此,我们相信这个数据仅仅是一个4万分之一的采样结果。

随后,我观察了这28万多个项目的users数据与contributors数据,顿时惊讶地发现,绝大多数项目都小得可怜,用户也少得可怜。

当我以“select count(*) from projects where contributors>30”查询时,只搜到了  1662个项目...
当我以“select count(*) from projects where users>30”查询时,只搜到了1260个项目...
当我合并以上两个条件查询时,只搜到了335个项目。
再从这335个项目中,排除掉最近一年已经不再有活动的项目,于是只剩下了331个了。

三个感想
(1)成功的开源项目,真是凤毛麟角。

(2)绝大多数开源项目都是少数人开发的小项目。

(3)这331个项目,也许可以作为我们的重要参考。

第一个问题:他们用什么配置库?

q7


这是331个项目使用配置库的情况(有些项目,同时使用多种配置库),有两个现象值得注意:

(1)接近92%的项目,已经在使用Git——Git的统治地位,已经无可动摇。

(2)只有53%的项目,在使用Github——那些用Git却不用Github的项目,是什么原因?

通过数据来分析:是否使用Github与项目创建时间的关系
图像说明文字


q6

通过这个图,可以看出两个现象:

(1)越是新创建的开源项目,hosting在Github上的比例越高。

(2)越是新创建的开源项目,事实上成功的也越多(当然,2010年以后的数量锐减,我们怀疑是好酒也要陈酿的原因)

通过数据来分析:是否使用Github与项目代码规模的关系
图像说明文字


q5

由于不同的开源项目,代码行数差异巨大,因此我们只能以log(col)对数结果,来做区间划分。可以看到一个非常明显的趋势,当然代码行数超过10万行以后,代码部署在Github上的项目,就开始明显下降,直到为0。

总结:是否使用Github,越是新的项目越愿意用;越是大的项目越没法用。
第二个问题:他们用什么来管理issue?

q4

排名前五的工具中,Github:91个项目;Bugzilla:81个项目;JIRA:43个项目;Trac:20个项目;另外还有9个项目,完全是在maillist里“管理”issue的。

一共有39种不同的工具,另外还有6个项目,我们无法了解它究竟是用什么来管理的。

简单地看:
(1)Github已经占据统治地位。

(2)Github的占有率仅仅27%。

(3)Bugzilla也算老而弥坚。

(4)有很多项目,在选择自己的工具。

通过数据来分析:使用的issue tracking工具与项目创建时间的关系
图像说明文字


q3

1990年之前创建的项目,其中有一个已经开始使用Github了。但是,这仅仅算是个案。更加明显的趋势是:越是新的项目,越是倾向于采用Github管理自己的issue。

相对而言,其他各种Issue Tracking工具的比例,都在下降。

通过数据来分析:使用的issue tracking工具与项目规模的关系

q2

随着用户数量的增加,我们猜想:issue的数量与复杂度也会逐渐增加。可以看到这样的趋势:Github的使用率,也在不断下降。

总结:是否使用Github来管理项目的issue,越是新的项目越愿意用,越是大的项目越没法用。
尚未完成的分析:

  • 开源项目使用的CI工具的情况。
  • 开源项目使用的Code Review工具的情况。
  • 开源项目使用的文档类工具的情况。
  • ......

主要还是工作量太大了……对这个分析有兴趣的同学,可以与我联系,咱们可以一块来干。

相关文章
|
Java Spring
Spring 源码解析 | 5.3.x 源码编译
源码下载 首先去 GitHub 上面下载源码。下载地址: github.com/spring-proj… 注意如果觉得下载比较慢的话,可以先同步到自己的 gitee 仓库在下载,下面是我 gitee 仓库的地址 gitee.com/zhengsh/spr…
690 0
Spring 源码解析 | 5.3.x 源码编译
|
8月前
|
消息中间件 存储 数据采集
《数据中台隐性故障的排查逻辑与工程化避坑策略》
本文围绕数据中台建设中的三类隐性故障展开复盘,基于特定数据处理框架、分布式存储系统及混合计算环境,拆解故障排查与解决路径。首先解决用户活跃报表偶现数据缺失问题,通过优化任务调度与数据分区校验避免跨时段数据漏采;其次攻克实时推荐接口高峰期空数据难题,通过匹配计算并行度与缓存优化提升数据处理效率;最后修复离线仓库用户留存率重复统计故障,重构分区合并脚本并建立数据质量巡检机制。文中还提炼“现象锚定-链路拆解-根源验证”排查方法论,为数据中台开发者提供工程化避坑指南。
219 7
|
搜索推荐 UED
敏感词 v0.19.0 新特性之敏感词单个编辑,不必重复初始化
【9月更文挑战第17天】敏感词管理在众多场景中至关重要。敏感词 v0.19.0 推出的新特性——单个编辑,无需重复初始化,显著提升了效率和灵活性,降低了系统负担。用户可直接修改特定敏感词,适用于内容审核平台、社交网络及电商平台等多种场景,确保及时响应变化,提升用户体验。这一特性为敏感词管理带来了重大改进,具有广泛的实用价值。
330 3
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
Java Spring Apache
springboot源码分析1-springboot版本号获取
摘要:在使用springboot的时候,可能经常会忽略掉springboot的版本问题。本文我们看一下springboot jar包中定义的版本信息以及版本获取类。
2247 0
|
API
icp备案查询免费API接口教程
该接口用于查询指定域名的ICP备案信息,支持POST或GET请求方式。请求时需提供用户ID、用户KEY及待查询的域名,可选参数为查询通道。响应中包含状态码、消息内容、备案号、备案主体、域名及审核时间等信息。示例中提供了GET和POST请求方式及返回数据样例。
2080 4
阿里云免费企业邮箱申请入口链接(2023新版申请流程)
阿里云免费企业邮箱申请入口链接(2023新版申请流程)阿里云免费企业邮箱没有了吗?免费企业邮箱在哪申请?每个阿里云账号可以申请一个免费企业邮箱。最近有同学反馈企业邮箱申请不了了,阿里云百科查看下,确实原免费版企业邮箱申请链接,打开后,会跳转到付费版企业邮箱页面。阿里云百科特意咨询了客服,得到回复是目前阿里云依旧提供免费版企业邮箱。阿里云百科分享阿里云免费版企业邮箱申请链接:
17314 4
阿里云免费企业邮箱申请入口链接(2023新版申请流程)
|
Shell 分布式数据库 Hbase
使用 HBase Shell 进行数据的批量导入和导出
使用 HBase Shell 进行数据的批量导入和导出
1412 6
|
JavaScript 数据安全/隐私保护 UED
微信扫码登录之接入规范
微信扫码登录之接入规范
672 1
|
存储 弹性计算 前端开发
阿里云服务领域Agent智能体:从概念到落地的思考、设计与实践
本文讲述了作者团队在阿里云的服务领域Agent是如何设计与实践的,以及到目前为止的一些阶段性成果,作者做出了总结和整理。

热门文章

最新文章