基于软件生态系统的开源社区特性研究

2015-12-06 06:11张得光周华昱
计算机工程 2015年11期
关键词:开发者开源软件

张得光,李 兵,何 鹏,周华昱

(1.武汉大学a.软件工程国家重点实验室;b.复杂网络研究中心武汉430072;2.武汉大学国际软件学院,武汉430079)

基于软件生态系统的开源社区特性研究

张得光1a,李 兵1b,2,何 鹏1a,周华昱1a

(1.武汉大学a.软件工程国家重点实验室;b.复杂网络研究中心武汉430072;2.武汉大学国际软件学院,武汉430079)

随着开源社区的发展,可供获取的开源软件的数量与复杂性急剧增长,致使软件系统之间由于开发者的交互、组件或模块的依赖和使用工具的共享而相互关联,形成开源软件生态系统。从自然生态系统的角度,分析软件生态系统的组成成分、知识链(网)结构,从软件项目、同类主题和整个开源社区这3个级别构建软件生态系统模型,根据自然生态系统的主要特征分析软件生态系统的开放性、多样性、调控性及可持续性。在Sourceforge.net开源社区中的分析结果表明,通过研究开源软件生态系统的特性,有助于提高其生存能力以及知识的循环利用,确保系统的稳定性和健壮性。

开源社区;软件生态系统;知识链;多样性;可持续性

1 概述

在软件开发领域,一些具有工程背景的科学家尝试从自然界获取灵感,寻找解决本领域问题的方案。采用该方式已取得了很多成果,包括把自然选择规律应用于计算机程序开发,设计遗传算法[1],根据蚂蚁的觅食行为提出路径优化方案[2-4]等。随着软件系统开发规模的急剧增大,开发效率要求的不断提高,加上软件系统用户群体日益增长及个性化用户需求,单个系统之间变得不再彼此独立,而是存在更多的互利共生关系,这促使人们再次转向自然界,试图从生态系统的角度重新研究软件工程领域的应用。

生态系统一词出自生物学,最早由英国生态学家泰勒于1935年提出,是指由生物群落与无机环境构成的统一整体。它的范围没有固定大小,相互交错,是生态学领域的一个主要结构和功能单位[5]。与此类似,软件生态系统(Software Ecosystem,SECO)也可视为软件工程领域的一个主要结构和功能单位,属于软件工程研究的最高层次。

自2005年以来,软件生态系统一直受到关注,如苹果的iOS和谷歌的Android智能手机生态系统[6-7]、ODA(Open Design A lliance)开发组织生态系统[8]以及Eclipse和FOSS的开源生态系统[9-10]。有关软件生态系统的定义,从技术、社会、业务等不同角度有不同说法。结合开源环境下的研究背景,本文采用文献[11]中的定义:一个软件生态系统是指在一个公共的技术平台上,一群行为者通过相互交互形成大量软件解决方案或服务。

随着开源社区开发的流行,可供获取的开源软件数量与复杂性急剧增长,致使软件系统之间由于开发者的交互、组件或模块的依赖和使用工具的共享而被关联起来,形成开源软件生态系统。本文通过介绍有关生态系统的基础知识与软件生态系统的发展,探讨开源软件生态系统的组成成分、结构与模型,并从开放性、多样性、调控性与可持续性方面对开源软件生态系统进行分析。

2 自然生态系统与软件生态系统

2.1 自然生态系统

生态系统(自然生态系统)就是在一定空间范围内,生物群落与非生物环境,通过能量流动、物质循环、信息传递而形成相互作用、相互依存的动态复合体[12]。换言之,生态系统就是在一个空间内生物群落与非生物环境形成具有一定功能的整体。生态系统不仅在空间上是个地理单元,还是一个功能单元,既有能量、信息的传递又有物质和物种的动态过程。任何一个自然生态系统都是开放系统,都有输入和输出的过程以维持动态平衡。

2.2 软件生态系统

软件生态系统最早由M esserchm itt[13]等人于2005年提出。由于软件生态系统是一个新兴的方向,诸多研究者从各自的背景投入研究,导致一些术语和特性不一致。文献[14]将软件生态系统划分为以操作系统为中心、以应用为中心和终端用户编程3类。文献[15]从商业角度对软件生态系统进行研究。文献[16]从业务、架构和社会化3个维度探析软件生态系统。

在软件生态系统的研究方向上,文献[17]从资源管理与多样性方面对比了SECO与自然生态系统的异同,提出一个研究SECO关键特征的议程,讨论如何确保SECO的稳定与健壮。文献[18]结合不同的维度和方面,针对软件生态系统提出一个初步的研究议程。文献[19]研究软件生态系统的系统映射,并总结了软件生态系统研究的主要方面,包括开源软件、生态系统建模等。结合上述研究背景,本文在开源环境下展开探讨。

3 开源软件生态系统

3.1 开源软件生态系统组成

自然生态系统由生物群落和非生物环境组成,其中根据生物群落在物质和能量运动中的作用,又可以大致分为生产者、消费者和分解者3类。与此类似,一个典型的软件生态系统可理解为由技术平台、行为者和软件解决方案或服务(及软件项目)组成,如图1所示。

图1 开源软件生态系统组成

(1)开源社区是一个开源软件合作开发社区,它集成了很多不同规模、不同性质的开源项目,为软件开发提供了整套生命周期服务。作为软件生态系统的一个技术平台,开源社区是开源软件开发者进行开发管理的集中场所,为开发者提供合作交流环境。

(2)能量是自然生态系统正常运转的动因,在软件生态系统中,这种能量来自知识的利用。开源社区有着来自不同国家、不同文化与专业知识背景的开发者,若将开发者所具有的专业技能、管理经验、文化背景等信息统称为知识,则开发者为知识的携带者或生产者,他们利用自己的知识为项目做出贡献。知识在开发者的合作过程中也有不断完善与提升,所以,知识是促进软件生态系统正常运转的驱动力。

(3)软件项目作为开发目标,为完成某一个开源项目的开发,项目管理者根据项目的需求组织满足条件的开发团队,利用开发者的知识实现项目功能。因此,开源项目实为知识的消费者,群体智能的产物。

(4)用户根据对社区发布软件的使用情况,将体验信息反馈给开发者,开发者在得到用户反馈信息的基础上,对开源项目展开进一步改进工作,所以用户是知识的体验者,发挥利用知识产物与促进项目完善的作用。

因此,开源软件生态系统主要由社区平台,分别作为知识的生产者、消费者和体验者的开发者,软件项目和用户组成,在组成成分上表现为一个社会-技术网络,需要指出的是,一些情况下用户也是开发者。

3.2 开源软件生态系统结构

任何生态系统都有一定的结构,一个稳定的软件生态系统在结构上不但有自己与众不同的成分和知识获取行为,而且不同生态系统之间还有共同之处。下面主要介绍开源软件生态系统在结构上的一般规律与系统模型。

3.2.1 知识链结构

在软件生态系统中,开发者-项目-用户通过知识的利用相互建立起关联关系,这种关联关系称为知识链,可简述为开发者通过各种学习方式丰富自身知识,再利用拥有的知识为参与的项目做出贡献,最后用户下载使用所开发的项目,根据使用情况反馈体验信息,反馈信息又将成为开发者进一步改进的目标,最终形成一个循环往复的过程,整个过程如图2所示。

图2 知识链结构

除水平方向的知识链外,开发者与项目之间的参与关系可形成一个贡献网络,可以根据参与同一个项目开发的开发者间存在一条合作边的投影方式,建立一个开发者合作网络,而合作网络中的任何一条连通路径又是一条知识链,知识链之间交叉又形成知识网。

3.2.2 开源软件生态系统模型

在业界已经开发了一系列有关分布式存储和产品管理方面的生态系统建模方法。本文探讨基于非盈利、免费的开源环境下的软件生态系统。参照个体、种群、群体和生态系统生态学的划分标准,将软件生态系统依次划分为3个不同的等级,图3分别从单个软件项目、同类主题和整个开源社区3个级别构建软件生态系统模型。

(1)软件项目级主要研究单个开源软件项目开发者-项目-用户知识网。

(2)同类主题级主要研究某一类主题下的开发者合作网络与项目依赖网络。大部分开源项目的开发者人数较少、主题较单一,属于小项目,这些小项目在缺乏资源时可向同类主题下的其他团队寻求帮助,实现团队间跨项目、组织边界的合作。另外,可以根据项目之间的依赖关系,在已有的小项目基础上构建更大的项目,减少重复开发过程。

(3)开源社区级主要研究整个开源社区的开发者与项目。以Sourceforge.net为代表,在整个社区中,无论是人力资源还是项目资源都相当丰富,然而据相关统计表明,很多项目因未能及时找到合适的开发人选而被延时或停滞,另外有大量人力处于空闲状态。所以,该级别的软件生态系统有必要采取措施加强开发者的合作,促进社区知识的循环利用。

图3 不同级别的软件生态系统模型

从软件生态系统角度讨论软件工程实践,无论是哪个级别下的软件生态系统,都是为了实现知识重用或循环利用,提高开发效率和软件开发质量。

4 开源软件生态系统特征

一个稳定的生态系统包括4个主要的共同特征:开放性,多样性,调控性和可持续性,其中,开放性代表整个生态系统与外部,或生态系统内部之间应该具有交流和转化功能,时刻保持一种动态平衡;多样性是指系统内部物种种类丰富与均衡;调控性是指系统对干扰具有一定的抵抗能力和在受到干扰后具有一定的恢复能力,对发生的变化能加以协调、保持稳定;可持续性是指一种可以长久维持的过程或状态。同样地,一个稳定的软件生态系统也应该具备以上特性。

4.1 开放性

开源环境下的软件生态系统具有开放性。首先,项目的源代码是公开可供任何感兴趣的开发者直接下载,或通过CVS,SVN,Git方式导出至本地位置,做出修改后再将新内容提交,由于社区随时都可能有新开发者加入,因此这种与外部交流的情形随时都可能发生;其次,很多开源社区为了给开发者提供良好的合作交流环境,还提供诸多交互渠道,如邮件列表、bug库、版本控制日志、论坛等,为充分利用用户的反馈信息,一些社区还为开源项目提供用户评分机制。这些都有利于开源社区(开源软件生态系统)的生存和发展。

无疑软件生态系统的开放性是开源社区动态发展的前提,开放的系统才能不断有新资源、新知识的投入,而不至于造成封闭式局部发展。

4.2 多样性

多样性在软件生态系统中扮演重要的角色,除了数量多之外,还包括开发者角色多样性、项目属性多样性。在Sourceforge.net社区中部署的项目数量已达40多万,开发者或用户数上百万,该社区资源的丰富是毋庸置疑。众所周知,一个软件开发团队中,由于开发者自身开发经验和实践能力的差别,拥有不同知识的开发者通常扮演不同的角色。同时,不同项目实现的功能不一样,使得对开发者角色的需求也不同,所以,保持开发者角色的多样性,有利于更好地满足项目开发需求。

除了开发者角色的多样性,在软件生态系统中,保持软件项目属性的多样性也非常必要。软件项目作为知识的消费者或捕食者,项目每个属性涉及的元素越多,面向社区组织开发者的方向也就越广。例如项目aatopendcd是一个提高OpenDChub的脚本,涉及互联网中继交谈与文件共享2个主题,支持5种开发语言,使得项目在组织开发者团队时,既可能有对互联网中继交谈方向感兴趣的开发者,也可能有对文件共享方向感兴趣的开发者自愿参与提供贡献;同时可以是来自不同语言优势上的开发者。

在Sourceforge.net社区中,统计发现开发者角色共有22种,且每种角色的开发者数都不少于200,为生态系统角色的多样性提供很好的保障。一个开源项目提供的属性除了主题和开发语言之外还有目标受众、数据库环境、适用的操作系统、UI和项目状态与使用的开源认证等。根据对前4个属性的统计发现,每个属性都涉及较广的范畴,主题、目标受众、开发语言和数据库的分别有261类、19类、71类、34类。表1列出了每个开发者的角色与项目相关属性的统计信息,其中,M ax,M in,Avg分别表示项目在某属性上取值个数的最大值、最小值、平均值。

表1 每个开发者的角色与项目相关属性统计信息

4.3 调控性

调控性也即稳定性,分为2种:(1)受到干扰时的抵抗能力;(2)受到干扰后的恢复能力。在开源环境下,开发者的参与行为是动态的。受外界环境或开发者自身因素的影响,随时都有开发者可能离开或加入现有的团队,当面临这种人员变动的情况,尤其是团队已有核心成员的离去,离开前团队在该角色上是否有合适的候补成员,以及离开后,团队是否能够在有限的时间内恢复到之前的运转状态。一个稳定的生态系统需要具备在不影响已有平衡的前提下解决这类问题的能力。

开发者角色多样性与项目属性多样性有助于增强软件生态系统的抵抗能力和恢复能力。通过角色的多样性可以在受干扰时将任务暂由相似角色的其他开发者代理;通过项目属性多样性,如果团队中某一角色的唯一开发者离开,可以面向更广的范围引入具备该角色能力的候补成员,以便更早地恢复正常状态。

4.4 可持续性

生态系统的资源是有限的,开发者的知识是不可回收的,但却可以通过与其他开发者合作或共享实现知识传递。虽然Sourceforge.net软件生态系统具备开放性、多样性和调控性特征,但还需要保证系统能够可持续发展。据统计表明,在Sourceforge.net开源社区生态系统中,开发者之间(开发者与项目之间)表现为一个稀疏的合作网络,这种稀疏性直接反映了知识的低利用率。如果知识没能得到很好地利用,意味着大量开发者处于空闲状态,待开发的项目得不到完善,将不利于生态系统的可持续发展。为解决稀疏性问题,节约软件生态系统资源,必须确保已有的知识能够最大程度地得到充分利用,产生更多价值。可采取的措施包括开发者间合作推荐、项目任务推荐,提供小项目/组件的集成,对社区状态的监控,提供好的开发环境减少人员流动,采用更好的知识循环利用方法等。

本文之所以从生态系统角度探讨开源软件社区的工程实践,不仅是为了从一个更全面、系统的维度看待软件开发与维护过程,也是为了从长远角度更好地协调整个过程,使得能在有限的资源情况下完成更多的工程任务。

5 案例分析

Sourceforge.net社区作为目前最流行的开源社区之一,是规模相对更庞大、知名度更广的一个社区,本文选取该社区作为案例分析对象。在3.2.2节已指出,可以从项目、类别和整个开源社区3个不同的级别上对软件生态系统建模,本文选择从整个开源社区级别对其特性展开分析。

5.1 开放性分析

Sourceforge.net社区平台是一个开源软件合作开发社区,它集成了很多不同规模、不同性质的开源项目,为软件开发提供了整套生命周期服务。以2个月为时间段,统计社区从2007年2月-2008年10月期间的开发者数与项目数(统计数据仅基于该社区数据库dumps中获取的数据)。

从图4可以看出,社区开发者数与项目数都呈现逐步增长趋势,而该增长趋势与社区软件生态系统的开放性是不可分的。正是开源社区生态系统的开放性,促使更多来自不同国家、有着不同文化背景和专业知识的开发者加入社区。

图4 开发者与项目数量增长情况

此外,以2008年6月-2008年8月期间为例,统计了项目的开发者数变化情况,发现一些项目的开发者在2个月内增多,而另外一些项目的开发者数则减少,如图5所示。正是由于社区的开放性,开发者可以自愿参与各项目,以至于项目开发者数存在波动。统计发现,这段时间内共有2 258个项目的开发者人数发生了变化,其中有1 638个项目的开发者人数增加了,累计增加2 586人,有620个项目的开发者人数减少了,累计减少806人,说明整体上加入的人数比离开的人数多,从而证明图4中的增长趋势。

图5 2个月内项目开发者人数的变化

5.2 多样性分析

在Sourceforge.net开源社区中,不同的开发者扮演不同角色,不同项目有不一样的属性特征。社区多样性不仅体现在开发者与项目的数量上,还体现在开发者角色与项目属性上。因此,分别从开发者角色的多样性与项目属性的多样性两方面进行研究。

5.2.1 开发者角色多样性

在软件开发团队中,由于开发者自身经验和能力的差别,不同开发者通常担任不同角色,分配不同的任务,因而在开发过程中的贡献不一,有着不同程度的重要性。同时,不同项目实现的功能通常不一样,使得对不同角色开发者的需求也不同,所以,保持开发者角色的多样性,有利于更好地满足项目开发需求。

在收集到的开发者与项目数据表中,保存了每个开发者在项目中的角色信息。对Sourceforge.net生态系统中开发者的角色类型进行统计,共有22种常用角色,且每种角色的开发者数都不少于200,为生态系统角色的多样性提供了很好的保障。图6给出了角色的开发者数分布情况,其中大部分成员是以软件开发者角色的身份加入,其次是项目管理员。

图6 开发者角色分布

由于Sourceforge.net开源社区主要以完善软件项目开发为主,因此开发者和项目管理2个角色占大多数。从图6中还可以看出,有一部分开发者是以全能手(all-hands person)的角色参与,在其他角色供不应求时这类角色可以及时充当替补成员,这无疑为Sourceforge.net生态系统在抵御人员变动和外界干扰时提供又一道防线。

图7为社区每个开发者扮演角色数与每个项目中包括的角色数的比例分布,需要注意的是,考虑到一个只参与一个项目的开发者或只有一个开发者参与的项目的角色肯定只有一种,所以图7在统计开发者与项目角色数时,过滤了这种情况的对象。从图7中可以看到,80%以上的开发者或项目涉及角色不超过2种,说明开发者从事的工作比较集中,开源项目的功能都不是特别复杂。

图7 开发者/项目角色人数累积分布

通过对角色分布的了解,总体上Sourceforge.net生态系统保持了良好的开发者角色多样性,当一个项目中某一角色的开发者发生变化时,在该生态系统中有足够具有相同或相似实践能力的候补成员,用以确保整个生态系统的稳定运转。

5.2.2 项目属性多样性

除了开发者角色的多样性,在软件生态系统中,保持项目属性的多样性对组织一个既能完成任务又能够有效合作的团队也非常有帮助。不难理解如果一个捕食者只以一种猎物为捕食对象,对其生存必然带来风险。软件项目类似于捕食者,为了开发更成功,一个项目的各属性应尽可能涉及更广,以便能够吸引更多开发者的参与。

文本只列举了4个项目属性作为代表分析,为了便于理解,图8中标记了一些较典型的元素:

(1)主题表示一个项目的开发方向,该属性在很大程度上决定了项目所需知识的来源。从表1统计数据可看出,Sourceforge.net软件生态系统中的项目共涉及261个主题。从图8(a)可知,动态内容(Dynam ic Content)与软件开发(Softw are Development)2个主题所占比重最多。

(2)目标受众指一个项目的服务对象,通常服务越广泛,软件开发难度越高,但项目的存活能力越强。在Sourceforge.net软件生态系统中软件项目的目标受众共19类,主要面向开发者和终端用户。

(3)开发语言表示一个项目所采用的实现工具,每种语言都有自身的特点,使用不同语言的开发者数也不一样。在Sourceforge.net软件生态系统中部共涉及71种语言,主要有Java,C++,C和PHP这4种比较流行的语言。

(4)数据库表示一个项目所使用的数据存储环境,可供使用的数据库环境有34种,M ySQL和JDBC为主要的数据库存储环境。

图8 项目属性分布

由元素(1)~元素(4)可知,在Sourceforge.net软件生态系统中,项目的每一个属性都涉及较广的范畴,即不少于19类。此类项目资源库可以满足用户的特定需求,尤其是项目的重用,可避免重复开发来提高软件生态系统资源的利用价值。

5.3 调控性分析

开源社区软件生态系统调控性体现在受到干扰时的抵抗能力与受到干扰后的恢复能力,前者可以通过分析社区项目中开发者数与角色数的关系,后者通过分析在缺少特定角色的开发者时,能否及时从外界找到合适的候补成员。

在软件生态系统中,为了使项目在受干扰时任务能够暂由其他相似角色的开发者代理完成,团队中角色与开发者之间会建立一对多的关系,即每个角色对应多个开发者,如图9所示,项目中角色越多,每种角色对应的平均开发者数也逐渐增多,当角色数增加到一定程度(大于11)时,项目中开发者数不会增多,而是会有一个急剧的下降。因为社区开源项目中具有十几个角色的项目极少,且当项目人数比较多时,一部分开发者可同时担任多种角色,不需要增加更多的开发者。

图9 项目开发者与角色数的关系

如果将开发者以往参与的项目的属性与该开发者在项目中的角色信息,定性地表示一个开发者拥有的知识,那么一个开发者是否具备参与某一项目的能力,可通过其知识的满足情况来确定。越多的属性得到满足表示该开发者知识被利用的机会越大。一个项目的属性涉及内容越广,能够参与的开发者数也越多,从而知识利用率也会增大。若采用开发者各属性的组合数表示一个开发者的知识在项目中被利用的机会数,如表2所示(数字分别代表各

属性对应的编号),则开发者A,B,C在Sourceforge. net软件生态系统中知识被利用的机会至少分别为:144(2×2×3×3×4=144),16(1×4×2×1×2= 16),1。表2中的最后一列表示从SourceForge开源社区中抽取的某个项目的属性描述,可计算出满足该项目知识需求的组合数为48(3×4×2×2=48)。根据3个开发者拥有的知识,不难发现在不考虑角色时3个开发者都适合参与该项目,只不过参与的机会从大到小的顺序依次为A,B,C。若开发者以往参与项目的属性中至少有一个与项目Project相同,则称该开发者满足项目Project的知识需求。在整个社区所有的210 216名开发者中,统计得到满足知识需求的开发者有166 563名(79.2%),说明项目Project在社区中的调控性较好。

表2 开发者知识与项目属性的定性表示

本文统计了社区中开发者与项目在以上属性的组合数情况,如图10所示,其中,开发者与项目的组合数最小为1,开发者zorankovacevic拥有最多的组合数1×2×9×6×7=756,而项目sem xq-suite的组合数为6×4×6×7=1 008。可见,在开发者-项目贡献网络中,知识的利用方式比较多,具备很高的调控空间。

图10 开发者与项目的组合数分布

5.4 可持续性分析

在Sourceforge.net软件生态系统中,虽然开发者角色和项目属性满足多样性,参与知识的利用方式也具备调控性,但开发者之间(开发者与项目之间)却表现为一个稀疏的网络,这种稀疏性直接反映了知识的低利用率。上述现象表明软件生态系统中知识没有得到很好地利用,大量开发者处于空闲状态,不利于生态系统的可持续发展。为解决开发者的合作稀疏性问题,将开发者拥有的知识进行定性定量表示,更好地表述社区开发者所具有的知识量,帮助开发者及时了解社区中哪些成员与自己有相似的知识,或哪些成员具有特定的知识可供求助和交流。

文献[20]开发了一款根据开发者间共同参与项目数、相同的项目属性数和传递关系排序的REngine推荐系统。该系统能够很好地为一个输入的开发者找到最可能建立合作的社区开发者,其中,在定量实验分析中,该方法的推荐精度可达83.33%。将文献[20]的研究成果应用到Sourceforge.net社区软件生态系统中,为一个开发者推荐最可能的合作者,从而促进开发者间的合作,提高知识利用率,同时在合作过程中开发者的知识也会不断地完善与提升,并且知识是促进软件生态系统正常运转的驱动力,所以,这有利于软件生态系统的可持续发展。除了开发者合作推荐,还可以是开发者-项目任务的推荐,甚至是项目-项目之间依赖/组合的推荐。总之,通过提供合理的推荐,减少不必要的耗费,可促进生态系统的可持续发展。

6 结束语

本文受自然生态系统的启发,尝试从生态系统角度探讨开源软件社区,形成软件生态系统观。分析开源软件生态系统的组成成分、知识链结构,从软件项目、同类主题和整个开源社区这3个级别构建软件生态系统模型,并根据自然生态系统的主要特征分析软件生态系统的开放性、多样性、调控性及可持续性。基于Sourceforge.net开源社区数据的验证结果表明,软件生态系统与自然生态系统在特征方面具有很多共性。

[1] Goldberg D E.Genetic Algorithm s and Machine Learning[J].Machine Learning,1988,3(2):95-99.

[2] Bilchev G,Parmee I C.The Ant Colony Metaphor for Searching Continuous Design Spaces[C]//Proceedings of AISB Workshop on Evolutionary Computing. Sheffield,UK:Springer-Verlag,1995:25-39.

[3] Grossberg S.Nonlinear Neural Networks:Principles,Mechanism s,and Architectures[J].Neural Networks,1988,1(1):17-61.

[4] Yang X S.Engineering Optimizations via Natureinspired Virtual Bee Algorithm s[C]//Proceedings of the 1st International Conference on Interplay Between Natural and Artificial Computation.Berlin,Germ any:Springer-Verlag,2005:317-323.

[5] Tansley A G.The Use and Abuse of Vegetational Concepts and Term s[J].Ecology,1935,16(3):284-307.

[6] Anvaari M,Jansen S.Evaluating Architectural Openness in Mobile Software Platform s[C]//Proceedings of the 4 th European Conference on Software Architecture. New York,USA:ACM Press,2010:85-92.

[7] Idu A,van de Zande T,Jansen S.Multi-homing in the Apple Ecosystem Why and How Developers Target Multiple Apple App Stores[C]//Proceedings of International Conference on Management of Emergent Digital Ecosystem s.New York,USA:ACM Press,2011:122-128.

[8] van Angeren J,Kabbedijk J,Popp K M.A Survey of Associate Models Used Within Large Software Ecosystem s[C]//Proceedings of the 3rd International Workshop on Software Ecosystem s.Brussels,Belgium:[s.n.],2011:27-39.

[9] ScacchiW.Free/Open Source Soft ware Development:Recent Research Results and Emerging Opportunities[C]// Proceedings of the 6th Joint Meeting on European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. New York,USA:ACM Press,2007:459-468.

[10] Mizushima K,Ikawa Y.A Structure of Co-creation in an Open Source Software Ecosystem:A Case Study of the Eclipse Community[C]//Proceedings of PICMET'11. Washington D.C.,USA:IEEE Press,2011:1-8.

[11] Bosch J,Bosch-Sijtsema P.From Integration to Com position:On the Im pact of Software Product Lines,Global Development and Ecosystem s[J].The Journal of System s and Software,2010,83(1):67-76.

[12] 蔡晓明,蔡博峰.生态系统的理论和实践[M].北京:化学工业出版社,2012.

[13] Messerschm itt D,Szyperski C.Software Ecosystem:Understanding An Indispensable Technology and Industry[M].Cambrige,USA:M IT Press,2005.

[14] Bosch J.From Software Product Lines to Software Ecosystems[C]//Proceedings of the 13th International Software Product Line Conference.New York,USA:ACM Press,2009:111-119.

[15] Jansen S,Brinkkemper S.Business Network Management as a Survival Strategy:A Tale of Two Software Ecosystem s[C]//Proceedings of the 1st International Workshop on Software Ecosystem s.Falls Church,USA:[s.n.],2009:34-48.

[16] Campbell P R J,Ahmed F.A Three-dimensional View of Software Ecosystems[C]//Proceedings of the 4th European Conference on Software Architecture.New York,USA:ACM Press,2010:81-84.

[17] Dhungana D,Groher I.Software Ecosystem s vs.Natural Ecosystem s[C]//Proceedings of the 4th European Conference on Software Architecture.New York,USA:ACM Press,2010:96-102.

[18] Werner C M L.A Proposal for Software Ecosystem s Engineering[C]//Proceedings of the 3 rd International Workshop on Software Ecosystem s.New York,USA:ACM Press,2011:40-51.

[19] Barbosa O,A lves C.A Systematic Mapping Study on Software Ecosystem s[C]//Proceedings of IWSECO'11. Brussels,Belgium:[s.n.],2011:15-26.

[20] Surian D,Liu Nian,David L,et al.Recommending People in Developers Collaboration Network[C]// Proceedings of the 18th Working Conference on Reverse Engineering.Washington D.C.,USA:IEEE Press,2011:379-388.

编辑 陆燕菲

Characteristic Study of Open-source Comm unity Based on Software Ecosystem

ZHANG Deguang1a,LIBing1b,2,HE Peng1a,ZHOU Huayu1a
(1a.State Key Laboratory of Software Engineering;1b.Research Center of Complex Network,Wuhan University,Wuhan 430072,China;2.International School of Software,Wuhan University,Wuhan 430079,China)

With the development of open-source community,the number and complexity of available open-source software increases rapidly,then software systems becomes interdependent on account of the interaction between developers,dependence between components or modules and sharing of tools,and it form s open-source Software Ecosystem(SECO).This paper analyzes the composition,know ledge chain(Web)structure of SECO from the perspective of ecosystem,builds SECO model from three levels which includes software projects,similar themes and the entire open-source community.It analyzes four characteristics which includes openness,diversity,regulation and sustainability according to the main feature of ecosystems.It uses Sourceforge.net open-source community as a case study,indicates that the study of the open-source SECO is helpful to improve the survival ability and know ledge reuse by the effective strategies,and maintain its stability and health.

open-source community;Software Ecosystem(SECO);know ledge chain;diversity;sustainability

张得光,李 兵,何 鹏,等.基于软件生态系统的开源社区特性研究[J].计算机工程,2015,41(11):106-113.

英文引用格式:Zhang Deguang,Li Bing,He Peng,et al.Characteristic Study of Open-source Community Based on Software Ecosystem[J].Computer Engineering,2015,41(11):106-113.

1000-3428(2015)11-0106-08

A

TP301

10.3969/j.issn.1000-3428.2015.11.019

国家“973”计划基金资助项目(2014CB340401);国家自然科学基金资助项目(61273216,61272111,61202032);湖北省重大科技创新计划基金资助项目(2013AAA020);武汉市青年科技晨光计划基金资助项目(2014070404010232)。

张得光(1991-),男,硕士研究生,主研方向:社会网络,软件工程;李 兵(通讯作者),教授、博士;何 鹏,博士研究生;周华昱,学士。

2014-10-29

2014-12-11 E-m ail:980746188@qq.com

猜你喜欢
开发者开源软件
禅宗软件
五毛钱能买多少头牛
软件对对碰
“85后”高学历男性成为APP开发新生主力军
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
16%游戏开发者看好VR
开源计算机辅助翻译工具研究
栝楼产业开发者谢献忠
谈软件的破解与保护