劉雅新 吳高艷 何鵬
摘 要:關(guān)注開(kāi)源社區(qū)中開(kāi)發(fā)者的活躍程度,研究隨版本更迭開(kāi)發(fā)者活躍度的變化情況。通過(guò)挖掘Tomcat項(xiàng)目10個(gè)版本的開(kāi)發(fā)者郵件列表信息與版本提交日志信息,構(gòu)建開(kāi)發(fā)者合作網(wǎng)絡(luò),分別分析項(xiàng)目成員整體活躍度以及單個(gè)開(kāi)發(fā)者活躍度的變化趨勢(shì)。分析結(jié)果發(fā)現(xiàn),項(xiàng)目在版本迭代更新過(guò)程中,開(kāi)發(fā)者團(tuán)隊(duì)的整體活躍度保持穩(wěn)定,但單個(gè)開(kāi)發(fā)者的活躍度變化有所不同,存在4種基本模式:開(kāi)發(fā)者先比較活躍,后期越來(lái)越不活躍;活躍度整體上先增后減;活躍度整體上呈下降趨勢(shì);活躍度不斷增加,并穩(wěn)定在活躍狀況。
關(guān)鍵詞:開(kāi)發(fā)者合作網(wǎng)絡(luò);開(kāi)源社區(qū);活躍度;群體開(kāi)發(fā)
DOI:10.11907/rjdk.171538
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2017)009-0164-03
Abstract:This paper focuses on developers′ activity in open-source community by analyzing the change of their activity with software evolution. Developer collaboration networks of Tomcat for ten versions were constructed based on the emailing-list and changelog, and an analysis of the team and individual activity was done respectively. The results show that the team′s activity keep stable during evolution process, but the trend of individual developer varies. There are four basic patterns among developers: active developers are becoming less active, activity increases first and then decreases, activity continues to decrease, and keep stable.
Key Words:developer collaboration network; open-source community; activity; collaborative development
0 引言
開(kāi)源軟件(Open Source Software,OSS)是一種源代碼開(kāi)放的軟件,采用開(kāi)源認(rèn)證協(xié)議進(jìn)一步允許用戶學(xué)習(xí)、修改、二次開(kāi)發(fā)及提高軟件質(zhì)量,表現(xiàn)出的是一種自由開(kāi)放、對(duì)等交互、知識(shí)共享的群體協(xié)作開(kāi)發(fā)新模式。它既是一種網(wǎng)絡(luò)時(shí)代的軟件生產(chǎn)方式,也已成為國(guó)家軟件服務(wù)業(yè)的重要支撐,是國(guó)家安全戰(zhàn)略的重要組成部分。據(jù)研究統(tǒng)計(jì)表明,開(kāi)源軟件的使用可為企業(yè)IT預(yù)算年均節(jié)省600億美元。
開(kāi)源軟件的開(kāi)發(fā)以社區(qū)為存在形式,社區(qū)內(nèi)的成員可以自由、開(kāi)放地交流溝通、共享經(jīng)驗(yàn)、參與協(xié)作。目前,最具代表性的開(kāi)源組織專有社區(qū)包括Linux社區(qū)、Apache社區(qū)、Mozilla 社區(qū)等,開(kāi)源軟件托管社區(qū)主要有Github和Sourceforge。近年來(lái),圍繞開(kāi)源軟件或開(kāi)源社區(qū)開(kāi)展的工作每年至少有上萬(wàn)篇論文,足見(jiàn)該方向已引起了廣大愛(ài)好者的極力關(guān)注。
在Apache開(kāi)源社區(qū)中流行一種觀點(diǎn),即社區(qū)比代碼重要[1],Ye等[2]認(rèn)為一個(gè)OSS的成功在于有一個(gè)適當(dāng)規(guī)模的開(kāi)發(fā)者社區(qū)。然而,在社區(qū)化群體軟件開(kāi)發(fā)中,開(kāi)發(fā)者規(guī)模劇增,關(guān)系也愈加復(fù)雜,并時(shí)刻存在動(dòng)態(tài)變化,這種關(guān)系的變動(dòng)直接影響了軟件的演化。分析開(kāi)源軟件社區(qū)中的群體行為特性,有利于挖掘開(kāi)發(fā)者的合作行為、重要程度、貢獻(xiàn)價(jià)值,時(shí)時(shí)關(guān)注開(kāi)發(fā)者角色的變化,探究開(kāi)發(fā)者擅長(zhǎng)從事的工作,為管理者提供決策參考。
Meneely等[3]利用開(kāi)發(fā)者合作關(guān)系成功預(yù)測(cè)了項(xiàng)目發(fā)布后可能出現(xiàn)的故障。Sureka等[4]從缺陷報(bào)告中抽取開(kāi)發(fā)者的合作網(wǎng)絡(luò),通過(guò)網(wǎng)絡(luò)分析發(fā)掘系統(tǒng)存在的風(fēng)險(xiǎn)與脆弱性。Crowston等[5]根據(jù)bug修復(fù)信息闡述了開(kāi)源軟件開(kāi)發(fā)團(tuán)隊(duì)中的核心-邊緣結(jié)構(gòu)。同樣,Sureka等[6]從開(kāi)發(fā)者的組織結(jié)構(gòu)角度,發(fā)現(xiàn)開(kāi)發(fā)者合作之間呈洋蔥層次結(jié)構(gòu)。Gao等[7]對(duì) Sourceforge.ne 社區(qū)開(kāi)發(fā)者合作網(wǎng)絡(luò)的一些網(wǎng)絡(luò)指標(biāo)進(jìn)行了演化分析,發(fā)現(xiàn)社區(qū)網(wǎng)絡(luò)直徑有變短的趨勢(shì)。Hahn等[8]也驗(yàn)證了一個(gè)開(kāi)發(fā)團(tuán)隊(duì)的形成以及開(kāi)發(fā)者之前的合作關(guān)系對(duì)團(tuán)隊(duì)形成的影響。一些研究者也嘗試采用社會(huì)網(wǎng)絡(luò)分析方法發(fā)掘社區(qū)中的一些重要成員,如“中介”成員識(shí)別[9]、團(tuán)隊(duì)帶頭人挖掘[10]。
根據(jù)開(kāi)發(fā)者提交的日志信息,Huang等[11]構(gòu)建開(kāi)發(fā)者—模塊網(wǎng)絡(luò)來(lái)描述開(kāi)發(fā)者之間的交互,并建立 LPP 邊緣學(xué)習(xí)過(guò)程模型用于劃分開(kāi)發(fā)團(tuán)隊(duì)中成員的角色。Allaho和Lee[12]共同分析了開(kāi)發(fā)者網(wǎng)絡(luò)的交互關(guān)系,發(fā)現(xiàn)團(tuán)隊(duì)中專家與小角色成員之間有明顯的交互行為,并且開(kāi)發(fā)者的出入度與他們的貢獻(xiàn)大小之間呈正相關(guān)。同時(shí),社區(qū)中新加入的開(kāi)發(fā)者更傾向于與(度數(shù)或介數(shù))中心性更大的已有開(kāi)發(fā)者建立合作[13]。
國(guó)內(nèi)學(xué)者劉曉等[14]從網(wǎng)絡(luò)規(guī)模、內(nèi)部結(jié)構(gòu)和人員流動(dòng)方面分析了開(kāi)發(fā)者合作網(wǎng)絡(luò)的演化規(guī)律。筆者也曾分析過(guò)開(kāi)發(fā)者的偏好合作模式,探析了4種合作方式下的差異,并重點(diǎn)分析了已有開(kāi)發(fā)者之間的合作模式[15-16]。
本文結(jié)合復(fù)雜網(wǎng)絡(luò)理論與軟件開(kāi)發(fā)實(shí)踐,通過(guò)軟件庫(kù)(Software Repository)挖掘,分析開(kāi)源社區(qū)中開(kāi)發(fā)者的活躍度情況,發(fā)掘開(kāi)發(fā)者的角色變化模式,提煉多種開(kāi)發(fā)者角色演化規(guī)律,為軟件工程實(shí)踐提供決策指導(dǎo)。endprint
1 研究方法
1.1 開(kāi)發(fā)者合作網(wǎng)絡(luò)
在構(gòu)建開(kāi)發(fā)者合作網(wǎng)絡(luò)過(guò)程中,將所有開(kāi)發(fā)者表示為一個(gè)節(jié)點(diǎn),如果兩個(gè)開(kāi)發(fā)者在同一時(shí)間從事同一個(gè)項(xiàng)目工作的開(kāi)發(fā)(如對(duì)同一個(gè)提交請(qǐng)求進(jìn)行了評(píng)論),則他們之間被視為存在一條合作連邊,用網(wǎng)絡(luò)形式表示為ColNet=(V,E),V代表網(wǎng)絡(luò)的所有節(jié)點(diǎn)集,E為所有合作連邊。本文沒(méi)有考慮兩個(gè)開(kāi)發(fā)者間的合作次數(shù),以及合作的方向。圖1是一個(gè)簡(jiǎn)單的開(kāi)發(fā)者合作網(wǎng)絡(luò),根據(jù)開(kāi)發(fā)者的合作強(qiáng)度給每個(gè)節(jié)點(diǎn)設(shè)置不同的大小,節(jié)點(diǎn)面積越大表示它和其他開(kāi)發(fā)者的合作強(qiáng)度越大,且具有相同合作強(qiáng)度的開(kāi)發(fā)者被賦予同一種顏色加以表示。
1.2 開(kāi)發(fā)者活躍度
ColNet合作網(wǎng)絡(luò)中節(jié)點(diǎn)代表開(kāi)發(fā)者,邊為開(kāi)發(fā)者之間的合作關(guān)系,網(wǎng)絡(luò)指標(biāo)便是基于ColNet中節(jié)點(diǎn)之間的關(guān)系得到的度量指標(biāo)。本文引入開(kāi)發(fā)者強(qiáng)度、開(kāi)發(fā)者中心性、活躍度等指標(biāo),度量開(kāi)源軟件社區(qū)中開(kāi)發(fā)者的群體行為。
合作強(qiáng)度是指ColNet合作網(wǎng)絡(luò)中節(jié)點(diǎn)的度數(shù),也即與開(kāi)發(fā)者有直接合作的其他開(kāi)發(fā)者數(shù),可用式(1)表示,其中M(i)是ColNet=(V,E)中與節(jié)點(diǎn)i直接相連的節(jié)點(diǎn)集,當(dāng)且僅當(dāng)節(jié)點(diǎn)i、j之間有直接連邊時(shí)aij=1,否則aij=0。開(kāi)發(fā)者強(qiáng)度能反映開(kāi)發(fā)者在社區(qū)與其他成員的相處情況,是衡量開(kāi)發(fā)者重要性的指標(biāo)。Di=M(i)=∑j∈M(i)aij
(1) 活躍度(Activity)度量開(kāi)發(fā)者的交際范圍,在合作強(qiáng)度基礎(chǔ)上進(jìn)行了豐富。具體而言,活躍度是指開(kāi)發(fā)者與多少人進(jìn)行過(guò)交互。在開(kāi)發(fā)者合作網(wǎng)絡(luò)中,相比其它節(jié)點(diǎn),如果一個(gè)節(jié)點(diǎn)擁有很多條邊,那么該節(jié)點(diǎn)所代表的開(kāi)發(fā)者的活躍度很高。反之,活躍度很低的開(kāi)發(fā)者與其他人建立的鏈接就非常少。因此,活躍度與節(jié)點(diǎn)的度息息相關(guān)。若用Activityi表示開(kāi)發(fā)者i的活躍度,活躍度的定義可表示為:Activityi=∑j∈N(i)1DjActivityj
(2) 式(2)中,N(i)是開(kāi)發(fā)者i的合作成員集合,Dj是開(kāi)發(fā)者j的合作強(qiáng)度。考慮到開(kāi)發(fā)者的合作會(huì)隨時(shí)間的推移發(fā)生變化,需要對(duì)開(kāi)發(fā)者的Activity進(jìn)行迭代更新。利用典型的PageRank算法進(jìn)行計(jì)算,當(dāng)相鄰兩次迭代的開(kāi)發(fā)者活躍度變化程度小于0.001時(shí),停止迭代。
2 實(shí)驗(yàn)分析
2.1 數(shù)據(jù)集
為確保選擇的項(xiàng)目具有代表性,選用知名社區(qū)Apache中的Tomcat。Tomcat是目前非常流行的Web 應(yīng)用服務(wù)器,是開(kāi)源社區(qū)ASF中Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,相關(guān)信息如表1所示。使用Tomcat從2006年11月-2011年12月共10個(gè)版本的開(kāi)發(fā)者交互數(shù)據(jù)(包括郵件列表信息和修改日志),核心開(kāi)發(fā)者數(shù)量由38人發(fā)展到144人,合作網(wǎng)絡(luò)的連邊規(guī)模也由116人增長(zhǎng)到484人,對(duì)應(yīng)版本下提交的修改日志也由495個(gè)增加到11 175個(gè)。
本文整體流程框架如圖2所示,可概括為:首先,分別抓取構(gòu)建項(xiàng)目開(kāi)發(fā)者合作網(wǎng)絡(luò)所需的郵件列表信息,并利用Git工具獲取它們的開(kāi)發(fā)者提交日志信息;其次,利用獲取的開(kāi)發(fā)者交互信息,按照前面所述方式構(gòu)建開(kāi)發(fā)者合作網(wǎng)絡(luò);最后,基于開(kāi)發(fā)者合作網(wǎng)絡(luò),進(jìn)行開(kāi)發(fā)者活躍度分析。
2.2 實(shí)驗(yàn)結(jié)果
軟件需求的變更促使軟件發(fā)生演化,隨著軟件版本的更迭,開(kāi)發(fā)者的活躍度也可能隨之發(fā)生變化。從項(xiàng)目成員的整體活躍度情況分析,圖3結(jié)果顯示,項(xiàng)目開(kāi)發(fā)者在10個(gè)版本中的平均活躍度隨版本的更迭,表現(xiàn)出相對(duì)穩(wěn)定,范圍分布為0.312~0.324,這意味著Tomcat項(xiàng)目團(tuán)隊(duì)整體結(jié)構(gòu)變更不大。
雖然,軟件項(xiàng)目演化過(guò)程中開(kāi)發(fā)者整體活躍度變化不大,但開(kāi)源軟件自由開(kāi)發(fā)、自愿參與的原則,使得項(xiàng)目演化過(guò)程中不可避免地存在成員的加入與離開(kāi)情況。因此,進(jìn)一步對(duì)單個(gè)開(kāi)發(fā)者的活躍度演化情況進(jìn)行分析。此處以在10個(gè)版本中都出現(xiàn)了的開(kāi)發(fā)者作為分析對(duì)象,發(fā)現(xiàn)開(kāi)發(fā)者活躍度的變化趨勢(shì)可歸納為4類:①開(kāi)發(fā)者先比較活躍,后期越來(lái)越不活躍;②活躍度整體上先增后減;③活躍度整體上呈下降趨勢(shì);④活躍度不斷增加,并最后保持穩(wěn)定在活躍狀況。
圖4(a)顯示,在前5個(gè)版本以內(nèi),開(kāi)發(fā)者Hanik和Shapira的活躍度保持穩(wěn)定,且屬于較活躍狀態(tài)。然而,隨著項(xiàng)目版本的更迭,他們的活躍度呈下降趨勢(shì),由原來(lái)的0.8以上降低到0.2以下。由圖4(b)可見(jiàn),起初兩個(gè)開(kāi)發(fā)者Barker和Truk的活躍度隨著版本的更新而不斷升高,而當(dāng)版本序號(hào)達(dá)到第4或5個(gè)時(shí),開(kāi)發(fā)者的活躍度隨著版本序號(hào)的變大而減小;圖4(c)結(jié)果與圖4(a)剛好相反,表現(xiàn)為開(kāi)發(fā)者的活躍度先隨版本序號(hào)的增大而升高,隨后,開(kāi)發(fā)者的活躍度保持穩(wěn)定趨勢(shì),表明開(kāi)發(fā)者最后成為社區(qū)中穩(wěn)定的核心力量;最后,在圖4(d)中,隨著版本序號(hào)的遞增,開(kāi)發(fā)者活躍度持續(xù)下降,這類開(kāi)發(fā)者有可能是處于圖4(a)和圖4(b)中的后期階段。
分析發(fā)現(xiàn),還存在部分開(kāi)發(fā)者并不是在10個(gè)版本中出現(xiàn),比如開(kāi)發(fā)者Arcand就只是在版本3-6中出現(xiàn)過(guò),Gomez則自版本4之后才開(kāi)始加入,但這些開(kāi)發(fā)者活躍度的變化均滿足以上4類典型的變化趨勢(shì)。因此,本文沒(méi)有單獨(dú)對(duì)這類開(kāi)發(fā)者的行為進(jìn)行分析。
本文也存在一些不足之處:①實(shí)驗(yàn)數(shù)據(jù)只選取了知名Apache開(kāi)源社區(qū)中的Tomcat開(kāi)源項(xiàng)目從2016年11月—2011年12月的數(shù)據(jù),實(shí)驗(yàn)結(jié)論還有待在更多開(kāi)源項(xiàng)目數(shù)據(jù)集上加以驗(yàn)證;②本文只考慮了開(kāi)發(fā)者活躍度指標(biāo)下,群體行為的演化分析,更多行為特征指標(biāo)比如中心性等有待進(jìn)一步探索。
3 結(jié)語(yǔ)
本文以開(kāi)源社區(qū)中開(kāi)發(fā)者合作行為為研究取向,分析開(kāi)發(fā)者在社區(qū)中的活躍度變化情況。通過(guò)挖掘Tomcat項(xiàng)目10個(gè)版本的開(kāi)發(fā)者郵件列表信息與版本提交日志信息,構(gòu)建開(kāi)發(fā)者合作網(wǎng)絡(luò),發(fā)現(xiàn)項(xiàng)目在版本迭代更新過(guò)程中,開(kāi)發(fā)者團(tuán)隊(duì)的整體活躍度表現(xiàn)較為穩(wěn)定,但單個(gè)開(kāi)發(fā)者的活躍度表現(xiàn)出4種基本變化模式,分別為:①開(kāi)發(fā)者先比較活躍,后期越來(lái)越不活躍;②活躍度整體上先增后減;③活躍度整體上呈下降趨勢(shì);④活躍度不斷增加,并最后穩(wěn)定在活躍狀況。endprint
參考文獻(xiàn):
[1] 李德毅.大數(shù)據(jù)時(shí)代的位置服務(wù)[R].第七屆中國(guó)電子政務(wù)高峰論壇,北京,2013.
[2] YE Y, KISHIDA K.Toward an understanding of the motivation of open source software developers[C].Proceedings of 25th Intl Conf. on Softw. Eng. (ICSE),2003:419-429.
[3] MENEELY A, WILLIAMS L, SNIPES W, et al. Predicting failures with developer networks and social network analysis[C]. Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering,2008:13-23.
[4] SUREKA A, GOYAL A, RASTOGI A.Using social network analysis for mining collaboration data in a defect tracking system for risk and vulnerability analysis[C].Proceedings of the 4th India Software Engineering Conference,2011:195-204.
[5] CROWSTON K, HOWISON J.Assessing the health of open source communities[J].Computer,2006,39(5):89-91.
[6] SUREKA A, GOYAL A, RASTOGI A.Using social network analysis for mining collaboration data in a defect tracking system for risk and vulnerability analysis[C]. Proceeding of the, India Software Engineering Conference,2011:195-204.
[7] GAO Y, FREEH V, MADEY G.Analysis and modeling of open source software community[C].North American Association for Computational Social and Organizational Science(NAACSOS) Conference,2003.
[8] HAHN J, MOON J Y, ZHANG C.Emergence of new project teams from open source software developer networks:impact of prior collaboration ties[J].Information Systems Research,2008,19(3):369-391.
[9] TORAL S L, MARTNEZ-TORRES M R, BARRERO F. Analysis of virtual communities supporting OSS projects using social network analysis[J]. Information and Software Technology,2010,52(3):296-303.
[10] CROWSTON K, WIGGINS A, HOWISON J. Analyzing leadership dynamics in distributed group communication[C]. Proceedings of the Annual Hawaii Int l Conf on System Sciences(HICSS),2010:1-10.
[11] HUANG S K, LIU K M.Mining version histories to verify the learning process of legitimate peripheral participants[J].Acm Sigsoft Software Engineering Notes,2005,30(4):1-5.
[12] ALLAHO M Y, LEE WC.Analyzing the social ties and structure of contributors in open source software community[C].Proceedings of Intel Conf. on Advances in Social Networks Analysis and Mining,2013:56-60.
[13] HE P, LI B, HUANG Y.Applying centrality measures to the behavior analysis of developers in open source software community[C]. International Conference on Cloud and Green Computing (CGC),2012:418-423.
[14] 劉曉,李兵,何鵬.開(kāi)源軟件社區(qū)開(kāi)發(fā)者合作網(wǎng)絡(luò)的演化分析[J].小型微型計(jì)算機(jī)系統(tǒng),2015,36(9):1921-1926.
[15] 何鵬,李兵,楊習(xí)輝,等.開(kāi)源軟件社區(qū)開(kāi)發(fā)者偏好合作行為研究[J].計(jì)算機(jī)科學(xué),2015,42(2):161-166.
[16] 陳丹,王星,何鵬,等.開(kāi)源社區(qū)中已有開(kāi)發(fā)者的合作行為分析[J].計(jì)算機(jī)科學(xué),2016,43(6A):476-479.
(責(zé)任編輯:孫 娟)endprint