Grank:如何评估一个 Github 项目的活跃度
创始人
2024-03-02 00:40:57
0

本文为 Grank(Github Rank)的简介及相关思路的介绍。

在深圳刚刚结束的 CosCon 2018 大会上发布了《中国开源调查报告》,Grank 作为其中数据篇的部分数据提供者,构建了一个 Github 项目活跃度、社区化的模型,并以 Python 实现。

项目地址: https://github.com/lctt/grank/

Grank 模型

我们认为,一个健康的开源项目应该体现为以下两个方面:

  • 项目的活跃度趋势
  • 项目的社区化(去中心化)程度

而这两个方面分别有多个因素组成:

活跃度和活跃度趋势

项目的活跃度,我们定义为项目的提交数、 拉取请求数和贡献者数(其它数据,如代码行数、文件数、issue 数、 fork 数、star 数,要么是权重相对低得多,要么是代表意义不够确定,此处忽略不计入模型)。

但是,对于不同的项目,其横向比较其活跃度,或有不同的活跃度形态,或不具备可比性。很难说一个项目比另外一个项目的提交数高,而拉取请求(PR)数低代表的确切含义。因此我们不认为对不同项目的这些数据进行绝对值的比较有太多的科学意义。

所以,我们认为一个项目本身的活跃度变化的趋势和幅度,会更有项目间比较的意义。

如果以三维空间来描述一个项目的活跃度,以提交数、拉取请求数、贡献者数为三维,可以确定在某个时间点某个项目的坐标,那么计算一段时间内,该坐标点的移动轨迹和速率,可以真实的反映该项目的活跃度趋势。

考虑到按周工作的作息时间的普遍影响,我们以一个工作周作为一个时间采样点,然后计算连续的几周内该坐标的移动速率。这反映了该项目的发展速度。

社区化程度

开源诞生于社区,繁荣于社区,根植于社区,虽然现在大型组织、商业公司也纷纷投身于开源生态,但是我们认为,开源项目的生命力仍然在于社区。我们并不否认机构、商业公司对开源的巨大贡献和影响力,但是如果一个开源项目变成了一家或几家大企业的私人游戏,其必然失去开源项目的生命力,它或许会在商业上取得成功,但是那个成功不是开源项目的成功模式。

因此,我们认为需要有一个评估开源项目的社区化(去中心化)程度的指标。项目(尤其是软件项目)的一个重要属性是开发人员的社区化身份,因此,我们以实际向项目贡献了代码的人员的社区化离散程度来评估项目的社区化程度。

每个参与项目开发的人员均有其身份属性,这个身份可能是企业雇佣身份,也可能是社区志愿者身份。我们通过对项目的提交中的提交者数据进行收集,然后根据开发人员的身份信息、邮件后缀等依优先级来判断其所属身份。然后对这些信息进行聚类,以一个离散评估模型来评估该数据集的离散程度。

虽然项目越中心化,其发展风险越高,但是,并不是社区化程度越高的项目就越健康,过于离散的项目也容易出现项目分裂、迭代缓慢等问题。这显然是存在一个适当的区域。

Grank 的结果长什么样子?

多项目活跃度:

多项目社区化:

单项目社区化及活跃度:

使用方法

  1. 使用 pip 安装项目 pip install grank
  2. 获取 Github 的 Personal Access Token
  3. 使用 grank login 设置 Token
  4. 使用 grank config 设置社区化企业关键词
  5. 使用 grank analy [] 来分析特定用户 /组织和项目,比如 grank analy lctt grank,分析结果可以在执行命令目录的 result 目录中找到。
  6. 使用命令行模式操作,如 grank --token=XXXX --start=2018-01-01 --stop=2018-05-21 --askrule=0 --rule=inc analy 其中 token 必须指定,其他可以使用缺省设置

Grank 是如何实现的?

Grank 使用 Github 的 GraphQL 来完成数据抓取的工作,抓取项目的所有提交和拉取请求来进行分析,并使用 Pandas、numpy、pandas 进行数据的分析,最终得出结果。

此外,Grank 目前为命令行工具,采用了 Click 来编写命令行的支持。

Grank 能够为你带来什么?

  1. 评估自己的项目情况
  2. 学习 Python 项目编写
  3. 了解 Click 的使用
  4. 了解 pytest 的使用。

项目地址:https://github.com/LCTT/Grank

Pypi 地址:https://pypi.org/project/Grank/

相关内容

中国开源项目 Grank ...
Linux 中国曾在 2018 年末参与了开源社发布的《2018 ...
2024-03-02 04:21:09
Grank:如何评估一个 ...
本文为 Grank(Github Rank)的简介及相关思路的介绍...
2024-03-02 00:40:57

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...