admin 管理员组

文章数量: 1086019


2024年3月22日发(作者:vim查看下一页)

龙源期刊网

开源软件社区中开发者活跃度特性分析

作者:刘雅新 吴高艳 何鹏

来源:《软件导刊》2017年第09期

摘 要:关注开源社区中开发者的活跃程度,研究随版本更迭开发者活跃度的变化情况。

通过挖掘Tomcat项目10个版本的开发者邮件列表信息与版本提交日志信息,构建开发者合作

网络,分别分析项目成员整体活跃度以及单个开发者活跃度的变化趋势。分析结果发现,项目

在版本迭代更新过程中,开发者团队的整体活跃度保持稳定,但单个开发者的活跃度变化有所

不同,存在4种基本模式:开发者先比较活跃,后期越来越不活跃;活跃度整体上先增后减;

活跃度整体上呈下降趋势;活跃度不断增加,并稳定在活跃状况。

关键词:开发者合作网络;开源社区;活跃度;群体开发

DOI:10.11907/rjdk.171538

中图分类号:TP391 文献标识码:A 文章编号: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 引言

开源软件(Open Source Software,OSS)是一种源代码开放的软件,采用开源认证协议进

一步允许用户学习、修改、二次开发及提高软件质量,表现出的是一种自由开放、对等交互、

知识共享的群体协作开发新模式。它既是一种网络时代的软件生产方式,也已成为国家软件服

务业的重要支撑,是国家安全战略的重要组成部分。据研究统计表明,开源软件的使用可为企

业IT预算年均节省600亿美元。

开源软件的开发以社区为存在形式,社区内的成员可以自由、开放地交流沟通、共享经

验、参与协作。目前,最具代表性的开源组织专有社区包括Linux社区、Apache社区、

龙源期刊网

Mozilla 社区等,开源软件托管社区主要有Github和Sourceforge。近年来,围绕开源软件或开

源社区开展的工作每年至少有上万篇论文,足见该方向已引起了广大爱好者的极力关注。

在Apache开源社区中流行一种观点,即社区比代码重要[1],Ye等[2]认为一个OSS的成

功在于有一个适当规模的开发者社区。然而,在社区化群体软件开发中,开发者规模剧增,关

系也愈加复杂,并时刻存在动态变化,这种关系的变动直接影响了软件的演化。分析开源软件

社区中的群体行为特性,有利于挖掘开发者的合作行为、重要程度、贡献价值,时时关注开发

者角色的变化,探究开发者擅长从事的工作,为管理者提供决策参考。

Meneely等[3]利用开发者合作关系成功预测了项目发布后可能出现的故障。Sureka等[4]从

缺陷报告中抽取开发者的合作网络,通过网络分析发掘系统存在的风险与脆弱性。Crowston等

[5]根据bug修复信息阐述了开源软件开发团队中的核心-边缘结构。同样,Sureka等[6]从开发

者的组织结构角度,发现开发者合作之间呈洋葱层次结构。Gao等[7]对 社区开

发者合作网络的一些网络指标进行了演化分析,发现社区网络直径有变短的趋势。Hahn等[8]

也验证了一个开发团队的形成以及开发者之前的合作关系对团队形成的影响。一些研究者也尝

试采用社会网络分析方法发掘社区中的一些重要成员,如“中介”成员识别[9]、团队带头人挖掘

[10]。

根据开发者提交的日志信息,Huang等[11]构建开发者—模块网络来描述开发者之间的交

互,并建立 LPP 边缘学习过程模型用于划分开发团队中成员的角色。Allaho和Lee[12]共同分

析了开发者网络的交互关系,发现团队中专家与小角色成员之间有明显的交互行为,并且开发

者的出入度与他们的贡献大小之间呈正相关。同时,社区中新加入的开发者更倾向于与(度数

或介数)中心性更大的已有开发者建立合作[13]。

国内学者刘晓等[14]从网络规模、内部结构和人员流动方面分析了开发者合作网络的演化

规律。笔者也曾分析过开发者的偏好合作模式,探析了4种合作方式下的差异,并重点分析了

已有开发者之间的合作模式[15-16]。

本文结合复杂网络理论与软件开发实践,通过软件库(Software Repository)挖掘,分析

开源社区中开发者的活跃度情况,发掘开发者的角色变化模式,提炼多种开发者角色演化规

律,为软件工程实践提供决策指导。

1 研究方法

1.1 开发者合作网络

在构建开发者合作网络过程中,将所有开发者表示为一个节点,如果两个开发者在同一时

间从事同一个项目工作的开发(如对同一个提交请求进行了评论),则他们之间被视为存在一

条合作连边,用网络形式表示为ColNet=(V,E),V代表网络的所有节点集,E为所有合作

龙源期刊网

连边。本文没有考虑两个开发者间的合作次数,以及合作的方向。图1是一个简单的开发者合

作网络,根据开发者的合作强度给每个节点设置不同的大小,节点面积越大表示它和其他开发

者的合作强度越大,且具有相同合作强度的开发者被赋予同一种颜色加以表示。

1.2 开发者活跃度

ColNet合作网络中节点代表开发者,边为开发者之间的合作关系,网络指标便是基于

ColNet中节点之间的关系得到的度量指标。本文引入开发者强度、开发者中心性、活跃度等指

标,度量开源软件社区中开发者的群体行为。

合作强度是指ColNet合作网络中节点的度数,也即与开发者有直接合作的其他开发者

数,可用式(1)表示,其中M(i)是ColNet=(V,E)中与节点i直接相连的节点集,当且

仅当节点i、j之间有直接连边时aij=1,否则aij=0。开发者强度能反映开发者在社区与其他成

员的相处情况,是衡量开发者重要性的指标。Di=M(i)=∑j∈M(i)aij

(1) 活跃度(Activity)度量开发者的交际范围,在合作强度基础上进行了丰富。具体而

言,活跃度是指开发者与多少人进行过交互。在开发者合作网络中,相比其它节点,如果一个

节点拥有很多条边,那么该节点所代表的开发者的活跃度很高。反之,活跃度很低的开发者与

其他人建立的链接就非常少。因此,活跃度与节点的度息息相关。若用Activityi表示开发者i

的活跃度,活跃度的定义可表示为:Activityi=∑j∈N(i)1DjActivityj

(2) 式(2)中,N(i)是开发者i的合作成员集合,Dj是开发者j的合作强度。考虑到

开发者的合作会随时间的推移发生变化,需要对开发者的Activity进行迭代更新。利用典型的

PageRank算法进行计算,当相邻两次迭代的开发者活跃度变化程度小于0.001时,停止迭代。

2 实验分析

2.1 数据集

为确保选择的项目具有代表性,选用知名社区Apache中的Tomcat。Tomcat是目前非常流

行的Web 应用服务器,是开源社区ASF中Jakarta项目中的一个核心项目,相关信息如表1所

示。使用Tomcat从2006年11月-2011年12月共10个版本的开发者交互数据(包括邮件列表

信息和修改日志),核心开发者数量由38人发展到144人,合作网络的连边规模也由116人

增长到484人,对应版本下提交的修改日志也由495个增加到11 175个。

本文整体流程框架如图2所示,可概括为:首先,分别抓取构建项目开发者合作网络所需

的邮件列表信息,并利用Git工具获取它们的开发者提交日志信息;其次,利用获取的开发者

交互信息,按照前面所述方式构建开发者合作网络;最后,基于开发者合作网络,进行开发者

活跃度分析。

龙源期刊网

2.2 实验结果

软件需求的变更促使软件发生演化,随着软件版本的更迭,开发者的活跃度也可能随之发

生变化。从项目成员的整体活跃度情况分析,图3结果显示,项目开发者在10个版本中的平

均活跃度随版本的更迭,表现出相对稳定,范围分布为0.312~0.324,这意味着Tomcat项目

团队整体结构变更不大。

虽然,软件项目演化过程中开发者整体活跃度变化不大,但开源软件自由开发、自愿参与

的原则,使得项目演化过程中不可避免地存在成员的加入与离开情况。因此,进一步对单个开

发者的活跃度演化情况进行分析。此处以在10个版本中都出现了的开发者作为分析对象,发

现开发者活跃度的变化趋势可归纳为4类:①开发者先比较活跃,后期越来越不活跃;②活跃

度整体上先增后减;③活跃度整体上呈下降趋势;④活跃度不断增加,并最后保持稳定在活跃

状况。

图4(a)显示,在前5个版本以内,开发者Hanik和Shapira的活跃度保持稳定,且属于

较活跃状态。然而,随着项目版本的更迭,他们的活跃度呈下降趋势,由原来的0.8以上降低

到0.2以下。由图4(b)可见,起初两个开发者Barker和Truk的活跃度随着版本的更新而不

断升高,而当版本序号达到第4或5个时,开发者的活跃度随着版本序号的变大而减小;图4

(c)结果与图4(a)刚好相反,表现为开发者的活跃度先随版本序号的增大而升高,随后,

开发者的活跃度保持稳定趋势,表明开发者最后成为社区中稳定的核心力量;最后,在图4

(d)中,随着版本序号的递增,开发者活跃度持续下降,这类开发者有可能是处于图4(a)

和图4(b)中的后期阶段。

分析发现,还存在部分开发者并不是在10个版本中出现,比如开发者Arcand就只是在版

本3-6中出现过,Gomez则自版本4之后才开始加入,但这些开发者活跃度的变化均满足以上

4类典型的变化趋势。因此,本文没有单独对这类开发者的行为进行分析。

本文也存在一些不足之处:①实验数据只选取了知名Apache开源社区中的Tomcat开源项

目从2016年11月—2011年12月的数据,实验结论还有待在更多开源项目数据集上加以验

证;②本文只考虑了开发者活跃度指标下,群体行为的演化分析,更多行为特征指标比如中心

性等有待进一步探索。

3 结语

本文以开源社区中开发者合作行为为研究取向,分析开发者在社区中的活跃度变化情况。

通过挖掘Tomcat项目10个版本的开发者邮件列表信息与版本提交日志信息,构建开发者合作

网络,发现项目在版本迭代更新过程中,开发者团队的整体活跃度表现较为稳定,但单个开发

者的活跃度表现出4种基本变化模式,分别为:①开发者先比较活跃,后期越来越不活跃;②

龙源期刊网

活跃度整体上先增后减;③活跃度整体上呈下降趋势;④活跃度不断增加,并最后稳定在活跃

状况。

参考文献:

[1] 李德毅.大数据时代的位置服务[R].第七届中国电子政务高峰论坛,北京,2013.

[2] YE Y, KISHIDA an understanding of the motivation of open source software

developers[C].Proceedings of 25th Int’l 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 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 ing the health of open source

communities[J].Computer,2006,39(5):89-91.

[6] SUREKA A, GOYAL A, RASTOGI 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 is 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 nce 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 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 ing 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 ng 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] 刘晓,李兵,何鹏.开源软件社区开发者合作网络的演化分析[J].小型微型计算机系

统,2015,36(9):1921-1926.

[15] 何鹏,李兵,杨习辉,等.开源软件社区开发者偏好合作行为研究[J].计算机科学,

2015,42(2):161-166.

[16] 陈丹,王星,何鹏,等.开源社区中已有开发者的合作行为分析[J].计算机科学,

2016,43(6A):476-479.

(责任编辑:孙 娟)

龙源期刊网

龙源期刊网

龙源期刊网


本文标签: 开发者 合作 社区 网络 软件