如何追蹤GitHub項(xiàng)目的流行度
介紹
GitHub 是世界上***的開源軟件托管平臺(tái),因此追蹤 GitHub 流行度對(duì)于軟件開發(fā)者和用戶都非常重要。本篇文章是介紹一個(gè) GitHub 流行度追蹤框架,使用他們的 Stars 數(shù)目來(lái)評(píng)估 GitHub 的流行軟件。本文使用的數(shù)據(jù)是 GitHub 5 月 1 日的數(shù)據(jù)。
度量流行度
這里我們考慮 GitHub 上前 24 強(qiáng)編程語(yǔ)言,通過(guò) GitHub 先進(jìn)的搜索引擎分類出來(lái)的。下面的數(shù)據(jù)是每個(gè)語(yǔ)言前 1000 個(gè)庫(kù)的 stars 數(shù)分布。
假設(shè)在 24000 個(gè)樣例中系統(tǒng)中前 10% 的系統(tǒng)是流行的,前 1% 是非常流行的。
下面這個(gè)表展示的是每個(gè)編程語(yǔ)言流行和非常流行的系統(tǒng)數(shù)目
流行度增長(zhǎng)模式 Popularity Growth Patterns
隨著時(shí)間的推移評(píng)估應(yīng)用的流行度,我們限制分析流行系統(tǒng)時(shí)間至少是 52 周。以這種方式,我們研究了 2138 個(gè)流行系統(tǒng)(89% 的初始樣例)。為了這個(gè)系統(tǒng),我們定義 Rt 是在周數(shù) t 排名列表的排名對(duì)數(shù)(基數(shù)為 2)。這個(gè)排名對(duì)數(shù)是根據(jù)流行系統(tǒng)的 Stars 數(shù)目的 right-skewed 確定的。***的系統(tǒng)排名是 1。最早的周是 1,***的是 52。同時(shí)還定義了 RTop 和 RBottom 作為***排名和***排名。
我們得出以下的幾種流行度增長(zhǎng)模式:
持續(xù)性增長(zhǎng):在分析周期下持續(xù)性增長(zhǎng),計(jì)算方式:
(RBottom − RTop ) < 0.25示例:
快速增長(zhǎng):計(jì)算方式:
(ROld − RNow ) > 1 ∧ (Rt+1 ≤ Rt) in at least 90% of the weeks t
示例:
緩慢增長(zhǎng):計(jì)算方式:
(RNow − ROld) > 1 ∧ (Rt+1 ≥ Rt) in at least 90% of the weeks t
示例 (which resulted in a decrease on their rank):
病毒式增長(zhǎng):在很短的時(shí)間內(nèi)(比如一周)達(dá)到***的 Stars 數(shù)目
示例:
下面列表展示的是每個(gè)編程語(yǔ)言持續(xù)性增長(zhǎng),快速增長(zhǎng),緩慢增長(zhǎng),病毒式增長(zhǎng)的情況:
流行度相關(guān)的 Forks 和相關(guān)使用
Forks:下面的數(shù)據(jù)展示了一個(gè)項(xiàng)目流行度和 TA 的 forks 數(shù)的關(guān)系。我們可以看到 forks 和 Stars 很強(qiáng)的正相關(guān)關(guān)系(Spearman rank correlation coefficient = 0.55)。
客戶端:為了關(guān)聯(lián)客戶端使用和 Stars,我們專注于一個(gè)限制的應(yīng)用分組,這是由 NPM 注冊(cè)表的 Node.js 基礎(chǔ)庫(kù)組成的。我們首先使用 NPM API 檢索在數(shù)據(jù)庫(kù)中流行 JavaScript 應(yīng)用依賴的數(shù)量。然后手動(dòng)根據(jù)依賴選擇的 Node.js 基礎(chǔ)庫(kù)模塊來(lái)審查前 100 個(gè)應(yīng)用。我們發(fā)現(xiàn)這兩個(gè)因素也有很強(qiáng)的關(guān)聯(lián)關(guān)系(Spearman’s rank correlation coefficient of 0.68)。
總結(jié)
我們致力于一個(gè)可以跟蹤 GitHub 流行度的框架,使用這個(gè)框架我們能發(fā)現(xiàn):
-
JavaScript 壟斷了超過(guò)三分之一的 GitHub 流行應(yīng)用,接下來(lái)是 Ruby, Objective-C, Python, Java 和 PHP 這 5 種語(yǔ)言占據(jù)另外三分之一的流行應(yīng)用。
-
21% 的流行系統(tǒng)有可持續(xù)的增長(zhǎng);5% 的流行系統(tǒng)有快速的增長(zhǎng);少于 1% 的流行系統(tǒng)會(huì)緩慢增長(zhǎng)。我們發(fā)現(xiàn)有 37 個(gè)系統(tǒng)有病毒式增長(zhǎng)的行為。
-
系統(tǒng)的 Stars 數(shù)不僅僅跟 forks 數(shù)有關(guān),其他客戶端應(yīng)用的高效使用也有一定的關(guān)聯(lián)。