• 沒有找到結果。

第四章、 資料分析

4.3 專案吸引力與黏著度

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

次,或時間間隔很久才貢獻一次的使用者。首先我們先定義怎樣的情況算是隔了很 久才貢獻,因此,我們算出每位使用者每一次到下一次貢獻的時間差距,算出每位 使用者平均多久會貢獻一次,其中時間區間以分鐘數作為計算,若超出平均貢獻時 間者,則定義為沉睡用戶。計算結果顯示一般使用者平均 27 天貢獻一次,組織則平 均 12 天貢獻一次,組織的貢獻頻率較一般使用者來的頻繁,之所以有如此差異是由 於 GitHub 上型態為 organization 的帳戶可由多位組織成員進行使用,即表示有多位 成員同時進行貢獻,因此,組織帳戶的平均貢獻天數通常會小於一般使用者帳戶。

user 與 organization 的平均貢獻時間如下表:

表 19:User 與 Organization 的平均貢獻

型態\時間差 分鐘 小時 天數

user 39,150.79 652.51 27.19 organization 17,692.26 294.87 12.29

其中有 5,728 位 user 超過平均貢獻時間,即有 5,728 個 user 位沉睡用戶,將沉 睡用戶除以 user 總人數,得出沉睡用戶約佔總數的 29% (5728/19517=0.29)。而 organization 方面,有 197 個組織超過平均貢獻時間,即有 197 個組織為沉睡用戶,

除以組織總數,得出沉睡用戶約佔總數的 28% (197/713=0.28)。

4.3 專案吸引力與黏著度

本小節以專案角度去觀察各個專案質量的評估,分成專案的吸引力與黏著度兩個層 面做研究與討論。透過專案的吸引力的觀察,便可得知目前 GitHub 上專案發展的趨 勢,看使用者是否漸漸的開始注意到此專案,而是否有可能會成為下一個熱門的技 術。反之,透過專案黏著度的觀察,便可得知一個興起的專案是否具有永續發展性,

看使用者是否對於此專案具有忠誠度[8],持續的進行程式碼貢獻,讓此專案得以更

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

加活躍與完善。

首先,我們先針對專案的吸引力與黏著度做出定義,我們定義在資料集中的 fork 事件作為吸引力評估的基礎,透過計算每個專案每年 fork 的成長率來算出各專案的 吸引力數值。即今年某專案被 fork 的數量(等於 fork 此專案的使用者數量),比較去 年此專案被 fork 的數量,進行成長率的計算。最後即可得知每個專案是否具有吸引 力特質,並且算出吸引力比例。計算公式如下:

(今年 fork 數量 − 去年 fork 數量)

去年 fork 數量 (5)

而專案黏著度方面,我們以資料集中的 pull request 事件作為黏著度評估的基礎,

定義各專案中每個年度做出貢獻的開發者,在下個年度是否仍然做出貢獻,並以此 進行各年度間比例的計算。計算公式如下:

專案今年度貢獻者總數

專案下一年度持續貢獻者總數 (6)

計算方式為專案 A 在 2011 年有 3 位開發者,2012 年有 2 位持續貢獻程式碼,

所計算的比例則為 2/3。專案 B 在 2012 年有 1 位開發者,2013 年有 1 位持續貢獻程 式碼,所計算的比例為 1/1。以下說明研究實際做法,吸引力方面先將資料集中各 專案在各年被 fork 的數量做加總,其中資料區間為 2008 到 2013 年間,且過濾首年 的資料,原因為首年資料因為缺乏去年資料,而無法進行成長率的計算。在過濾首 年資料後,再針對各年度的成長率進行平均,計算出各專案的平均成長率,如下圖 20 所示。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 20:專案吸引力平均成長率

透過以上分析即可顯示出目前 GitHub 上目前哪幾個專案近幾年呈現逐漸成長 的趨勢,平均成長率呈現正數成長,也可觀察出是否有哪幾個專案目前也呈現衰退 的情形,數值呈現負成長,利用此數據便可讓使用者進行決策是否專注於某個專案 的開發。而專案黏著度方面,由於資料集中 pull request 事件的資料區間集中於 2010 年到 2013 年,所以我們先分別計算 2010 至 2011、2011 至 2012、2012 至 2013 年三 個區段的黏著度比例。即計算 2010 年度各專案的貢獻者,到 2011 年度是否有繼續 進行貢獻。最後再算出 2010 年到 2013 年間各專案黏著度的變化,是趨於成長或緩 降,如下圖 21 所示。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 21:專案黏性平均成長率

最後,我們將吸引力與黏著度兩種指標做資料正規化,將資料重新分布至同一 水平下做比較。談到資料正規化,大致上會用以下三種方法,(一)極值正規化 Min-max normalization,(二)Z-分數正規化 Z-score normalization,(三)十進位正規化 Normalization by decimal scaling。第一種方法適用於將資料規範在某一個指定範圍 內的情況,第二種則適用於利用平均值作為基準,觀察高於或低於平均值的情況,

第三種則適用於將數字壓縮到區間 0 到 1 的情況。然而以本研究的資料集而言,適 合將資料壓縮到 0 到 1 之間去進行吸引力與黏著度的比較,並利於在圖表呈現吸引 力與黏著度的高低,因此,本研究採用了 S.Gopal Krishna Patro 正規化[15] (nor-malization by decimal scaling)來進行資料正規化,十進位正規化表達式如下,其中 v 值為欲正規化的數值,new_v 為正規化後的數值,c 值為使得max(|new_v|) < 1的最 小整數。公式表達如下:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

new_v = 𝑣

10

𝑐

Where c is the smallest integer such that max(|new_v|) < 1

(7)

隨後並轉換成二維圖形,X 軸放置黏著度指標,Y 軸放置吸引力指標。透過專 案吸引力我們可以知道哪個專案目前持續有人在進行貢獻,不至於有衰退的情形,

而專案黏著度的成長或下降則是能夠表示出專案的永續發展程度,可讓使用者去評 估是否需要再持續針對某個專案進行貢獻。最後,我們透過每個專案的吸引力與黏 著度數值,分析出如下圖 22 所示,並利用此圖觀察出目前 GitHub 上各個專案是屬 於哪種性質(吸引力或黏著度)居多。

圖 22:專案吸引力與黏著度分佈

Yam-ashita、Shane McIntosh、Yasutaka Kamei 和 Naoyasu Ubayashi 等四位作者所共同撰 寫的論文[11],將專案活動的狀態分成四種型態,分別為活躍期、流動期、穩定期 案所屬型態,資料庫計算中以fstat=’high’ and pstat=’high’表示為高吸引力、高黏著 度專案,並標註為 A(活躍期)。以 fstat=’high’ and pstat=’low’ 表示為高吸引力,低 黏著度專案,並標註為 B (流動期)。以 fstat=’low’ and pstat=’high’ 表示為低吸引力,

高黏著度專案,並標註為 C (穩定期)。以 fstat=’low’ and pstat=’low’ 表示為低吸引力,

低黏著度專案,並標註為 D(衰退期) 。並利用以下語法計算出各專案所處的型態。

相關文件