介绍
GitHub 是世界上最大的开源软件托管平台,因此追踪 GitHub 流行度对于软件开发者和用户都非常重要。本篇文章是介绍一个 GitHub 流行度追踪框架,使用他们的 Stars 数目来评估 GitHub 的流行软件。本文使用的数据是 GitHub 5 月 1 日的数据。
度量流行度
这里我们考虑 GitHub 上前 24 强编程语言,通过 GitHub 先进的搜索引擎分类出来的。下面的数据是每个语言前 1000 个库的 stars 数分布。
假设在 24000 个样例中系统中前 10% 的系统是流行的,前 1% 是非常流行的。
下面这个表展示的是每个编程语言流行和非常流行的系统数目
流行度增长模式Popularity Growth Patterns
随着时间的推移评估应用的流行度,我们限制分析流行系统时间至少是 52 周。以这种方式,我们研究了 2138 个流行系统(89% 的初始样例)。为了这个系统,我们定义 Rt 是在周数 t 排名列表的排名对数(基数为 2)。这个排名对数是根据流行系统的 Stars 数目的 right-skewed 确定的。最受欢迎的系统排名是 1。最早的周是 1,最新的是 52。同时还定义了 RTop 和 RBottom 作为最高排名和最低排名。
我们得出以下的几种流行度增长模式:
持续性增长:在分析周期下持续性增长,计算方式: (RBottom − RTop ) < 0.25
示例:
快速增长:计算方式: (ROld − RNow ) > 1 ∧ (Rt+1 ≤ Rt) in at least 90% of the weeks t
示例:
缓慢增长:计算方式: (RNow − ROld) > 1 ∧ (Rt+1 ≥ Rt) in at least 90% of the weeks t
示例:
病毒式增长:在很短的时间内(比如一周)达到最高的 Stars 数目
示例:
下面列表展示的是每个编程语言持续性增长,快速增长,缓慢增长,病毒式增长的情况:
流行度相关的 Forks 和相关使用
Forks:下面的数据展示了一个项目流行度和TA的 forks 数的关系。我们可以看到 forks 和 Stars 很强的正相关关系(Spearman rank correlation coefficient = 0.55)。
客户端:为 了关联客户端使用和 Stars,我们专注于一个限制的应用分组,这是由 NPM 注册表的 Node.js 基础库组成的。我们首先使用 NPM API 检索在数据库中流行 JavaScript 应用依赖的数量。然后手动根据依赖选择的 Node.js 基础库模块来审查前 100 个应用。我们发现这两个因素也有很强的关联关系(Spearman’s rank correlation coefficient of 0.68)。
总结
我们致力于一个可以跟踪 GitHub 流行度的框架,使用这个框架我们能发现:
-
JavaScript 垄断了超过三分之一的 GitHub 流行应用,接下来是 Ruby, Objective-C, Python, Java 和 PHP 这 5 种语言占据另外三分之一的流行应用。
-
21% 的流行系统有可持续的增长;5% 的流行系统有快速的增长;少于 1% 的流行系统会缓慢增长。我们发现有 37 个系统有病毒式增长的行为。
-
系统的 Stars 数不仅仅跟 forks 数有关,其他客户端应用的高效使用也有一定的关联。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/46996.html