论文部分内容阅读
20世纪末,开源软件系统取得了巨大成功,这为软件开发提供了一种用户创新驱动、成本低、质量高的新思路。为利用开源软件及其开发的优势,越来越多的公司和组织参与到开源运动中,建立起了商业-开源混合项目。在这些项目中,软件工业界驱动、围绕开源软件技术或平台搭建各种业务模型,项目参与者(Stakeholders)之间相互协作、利益彼此关联,从而形成了各种“开源软件生态系统”。 目前,开源软件生态系统作为一种新的软件生产方式,逐步被人们接受。与传统软件项目主要关注进度、预算不同,开源软件生态系统更加关注自身的“状态”。学术上将开源软件生态系统的“状态”称为其健康状态(Health),并定义:一个软件生态系统的健康状态是生态系统持续发展并保持可变及高效的能力。事实上,在开源软件生态系统中,开源开发方法与传统的商业开发方法存在冲突,导致两者的结合会遇到问题,威胁到开源软件生态系统的健康状态。软件产业界和开源社区开始普遍关注:在商业和开源两种开发方式进行融合的环境中,如何度量开源软件生态系统的健康状态,从定量的角度提供决策支持? 当前研究主要关注在理解开源参与者活动的特点和规律、刻画开源社区的活跃情况等方面。这些工作有助于展示参与者活动的变化趋势。但在实践中,各个开源软件生态系统的差异性较大,仅从参与者活动的变化趋势难以提供统一的结论。本文认为,对于开源软件生态系统健康状态的度量,需要建立在对开源软件生态系统进一步理解、分析和分类的基础上。特别地,要考察不同混合模式形成的生态系统之间的差异,度量不同类型的开源软件生态系统在参与者活动方面的变化趋势。在研究方法上,分布于互联网上的大量开源软件项目信息为本文提供了丰富的可用数据,为分析开源软件生态系统及度量开源软件生态系统的健康状态提供了研究途径。 针对现有研究的不足,本文尝试基于互联网上的项目文本数据以及项目开发过程数据,研究按照商业-开源混合模式细分开源软件生态系统的方法,并建立开源软件生态系统健康状态的定量度量体系,以帮助商业和开发决策。本文的主要工作和特色包括: 第一,研究了基于互联网上项目文本数据对开源软件生态系统按照混合模式进行定性分类的方法,主要包括以下两个方面:(1)采用雪球采样数据收集机制,利用经典扎根理论的定性分析方法,通过对数据进行过滤、编码及归纳,提出了一种面向混合模式的开源软件生态系统类型的剖析框架及二维投影判定方法,通过剖析混合模式两个维度(控制机制和商业投入力度)上所采取的多方面措施,可为理解软件生态系统的项目上下文提供分析手段。(3)采用上述剖析框架,对三个实际项目的9个同构阶段进行了分析,提出了三种开源软件生态系统类型:主持型、支持型、合作型。 第二,研究了基于项目开发过程数据的、从商业投入力度的角度度量开源软件生态系统健康状态的方法,主要包括以下三个方面:(1)基于代码提交历史,提出开发者活动相关的四个堆度的健康状态度量方法,包括采用新外部人页进入率的回归分析度量项目吸引力、采用开发者贡献时间的生存分析度量项目持续性、采用代码贡献分布的组成分析度量团队多样性,和采用代码所有权的回归分析度量项目规范性。(2)基于问题报告记录,提出用户活动相关的两个雏度的健康状态度量方法,包括采用问题报告主体的回归分析度量用户参与度和采用问题报告的生存分析度量用户体验。最终,形成了一套以社区为中心开源软件生态系统的健康状态度量体系。(3)基于该度量框架,结合开源软件生态系统的类型分析,对三个实际项目的健康状态进行了度量,发现了一组参与者活动在不同类型开源生态秉统中的变化规律。这些结果都为开源软件生态系统实践提供了经验参考。 基于上述工作,本文设计并实现了一个健康状态度量工具,并为实现多数据源支撑的健康状态度量工具,建立了数据支撑方法中的远程开发过程库持续克隆机制和多数据源集成机制,为进一步研究开源软件生态系统奠定了技术基础。