项目仓库地址:开源社区活跃度分析: 本仓库用于开源软件开发导论团队作业——开源社区活跃度分析
目录
项目介绍
项目计划
建立活跃度指标评价体系
获取开源社区数据
进行数据可视化并给出分析结论
项目成果
评价体系设计
仓库数据收集
数据可视化展示
感悟&致谢
项目介绍
据 GitHub 2021 年度报告显示,目前 GitHub 用户数已超 7300 万,越来越多的开发者参与开源,积极与社区里全球开发者共同学习和创造。如何保证开源项目的持续发展,开源社区活跃度分析至关重要。
本项目最终要完成五个以上(目前完成九个)100星以上的开源社区活跃度分析。根据可行的活跃度评价指标对收集来的开源社区数据进行分析,并对结果进行可视化展示。
项目计划
建立活跃度指标评价体系
本项目之初,成员们应收集现有的开源社区活跃度分析指标体系的资料。项目组成员将主要参考CHAOSS发布的CHAOSS Matrix,并提炼出其中使用于分析开源社区活跃度的指标,从而形成本项目的开源社区活跃度指标评价体系。
获取开源社区数据
针对这些指标,项目组成员将进行数据爬取,获得对应的开源社区数据我们将针对5个以上超过100stars的开源软件社区进行数据收集,在收集开源社区数据的过程中,成员们将充分考虑到伦理问题,做到既不违反平台条例也不侵犯社区成员的隐私。
进行数据可视化并给出分析结论
对于收集到的数据,项目组利用echarts进行数据可视化,形成完整的数据可视化展示展板。我们将对数据进行汇总、整理、对比、提炼等,结合所涉及的活跃度评价指标体系,得出我们的分析结论。
项目成果
评价体系设计
从四个方面对开源社区活跃度进行考察,按照评分制度打出四个小分,最后综合这四个评分合为一个总分。分数采用分级制度,共分S、A、B、C这四个等级。在此之前,已经收集了评价所必需的数据,数据每月进行更新,统计也是以月为单位进行。
四个考察项涵盖了初步制定评价指标时的所有评价指标小项。共分为以下四个方面:
Project Velocity
社区的活跃度首先体现在社区成员的工作成果上,比如issue、pull request 以及commit的数量,在CHAOSS评价指标中,将它们统称为Project Velocity,即项目的成长速度、发展速度。而在本项目中,我们主要考察当月的数据增长。
New Comer
要评价开源社区的活跃度,自然需要考察有多少新兴力量加入了开源社区参与贡献,New Comer这一指标考察的是当期新出现的贡献者数量。
Response Time
对于开源项目社区来说,项目仓库的issue和pr是社区新加入者会首先查看的东西之一,而项目的更新日期和未解决issue的最新时间等也能非常直观的反映参与者们的活跃度。因此,本指标考察的是社区中已有的贡献者对于项目新变化的响应速度和处理速度,具体表现为issue和pr审查的第一响应时间、解决时间。
Social Activity
社区的活跃度也包含了社区交流讨论的热烈程度,对于本项目,我们主要考察了项目仓库的issue回复和comment.
仓库数据收集
仓库选取
本项目选取分析的九个仓库如下:
项目名称 | 仓库地址 |
---|---|
rails | GitHub - rails/rails: Ruby on Rails |
DBeaver | GitHub - dbeaver/dbeaver: Free universal database tool and SQL client |
EasyPhotos | GitHub - HuanTanSheng/EasyPhotos: 兼容android11、android 10,相机拍照,相册选择(单选/多选),文件夹图片选择(单选/多选),视频选择,视频图片多类型复杂选择,各界面根据状态栏颜色智能适配状态栏字体颜色变色为深色或浅色,根据使用场景智能适配沉浸式状态栏,内部处理运行时权限,支持Glide/Picasso/Imageloader等所有图片加载框架库的带默认勾选选中图片的能填充自定义广告的自定义Ui相机相册图片浏览选择器;更有拼图/文字贴纸/贴图/图片缩放/Bitmap图片添加水印/媒体文件更新到媒体库等众多Bitmap图片编辑功能的android Bitmap图片处理工具框架库。 |
PaddleOCR | https://github.com/PaddlePaddle/PaddleOCR |
PyQt5 | GitHub - PyQt5/PyQt: PyQt Examples(PyQt各种测试和例子) PyQt4 PyQt5 |
LeetCode | GitHub - doocs/leetcode: 😏 LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解 |
Wechat-ChatGPT | GitHub - fuergaosi233/wechat-chatgpt: Use ChatGPT On Wechat via wechaty |
Matisse | https://github.com/zhihu/Matisse |
OpenFace | GitHub - TadasBaltrusaitis/OpenFace: OpenFace – a state-of-the art tool intended for facial landmark detection, head pose estimation, facial action unit recognition, and eye-gaze estimation. |
数据整理
收集的数据主要包括每个仓库的commits,PRs,issues,comments记录等,具体可参见data部分的README。目前数据量已经达到10万+。
language | files | code | comment | blank | total |
---|---|---|---|---|---|
JSON | 56 | 101,515 | 48,435 | 4 | 149,954 |
Python | 99 | 1,788 | 1,456 | 715 | 3,959 |
Markdown | 6 | 148 | 0 | 149 | 297 |
XML | 6 | 47 | 0 | 0 | 47 |
Properties | 9 | 36 | 45 | 27 | 108 |
Batch | 2 | 14 | 3 | 6 | 23 |
数据可视化展示
我们分别对每个仓库的数据以月为单位进行了统计,并进行可视化,分析其动态变化情况,包括commit月增,issue月增,PR月增,comment月增等;同时我们统计了每个仓库issue平均解决时长,pr平均解决时长等,从动态数据的角度对活跃度进行分析。
最终我们对每个仓库在Project Velocity
,New Comer
,Response Time
, Social Activity
四个方面的表现进行评级,并给出总评级。
感悟&致谢
这次项目让我们有机会去探索一个个开源项目的兴衰成败,他们之中有些仍活跃着,有些逐渐淡出贡献者们的视野。那些已经不活跃的开源项目,在无计其数的仓库中安静的存在着,参与的大门仍然敞开,但是无人问津,即使有也会石沉大海。这或许是大部分开源项目的状态,或者是归宿。从活跃逐步走向落幕,即使有些起伏,可能也是历史原因的凑巧。随着时间流逝,负责人可能已经没有精力再维护这个项目,甚至可能已经离开这个领域。但这个仓库永远在那里,它可能不完美,你也不能再从其中问出什么新玩意儿, 但它就在那里,大肆敞开自己,给后来的研究者提供一些老去又实用的经验,也在浩瀚的互联网中留下一个又一个人类创造过、研究过、 讨论过、热爱过的痕迹。不仅是项目本身的技术知识,也是开源形式、 开源精神,在社会进步中起到推动作用。
感谢本项目组成员wen-tingyu,yjlintp,lazy_ycp的共同努力,和shl老师的倾情指导。