软件学报  2017, Vol. 28 Issue (6): 1343-1356   PDF    
OpenStack开源社区中商业组织的参与模式
张宇霞, 周明辉, 张伟, 赵海燕, 金芝     
高可信软件技术教育部重点实验室(北京大学), 北京 100871
摘要: 由于开源软件开发方式与传统的软件工程方法存在显著差异,为了加入开源社区,商业组织必须要对自身原有的软件开发方式、业务模式等做出调整.在这种情况下,一个亟待解决的问题是商业组织应当采取怎样的参与模式才能有效融入开源社区.为此,进行3个方面的研究:采用雪球采样方法对OpenStack相关的文本数据进行收集,为定性分析提供数据基础;借鉴扎根理论,通过对所收集数据的过滤和归纳,总结出不同商业组织参与OpenStack的模式;在此基础上提炼出4种更具一般性的参与模式,为商业组织参与开源项目提供经验参考与决策支持.
关键词: 开源软件生态系统     开源软件     开源-商业混合项目     商业参与模式     扎根理论分析     案例研究    
How Commercial Organizations Participate in OpenStack Open Source Projects
ZHANG Yu-Xia, ZHOU Ming-Hui, ZHANG Wei, ZHAO Hai-Yan, JIN Zhi     
Key Laboratory of High Confidence Software Technologies(Peking University), Ministry of Education, Beijing 100871, China
Foundation item: National Program on Key Basic Research Project of China (973)(2015CB352201); National Natural Science Foundation of China (61432001, 61432020, 61421091, 60873059, 61272163)
Abstract: There are a lot of differences between the open source software development approaches and the traditional software engineering methods. If commercial organizations want to join the open source community, they must make some adjustments in their own original software development approach and business model. In this case, an urgent problem needs to be solved immediately is what involvement model the commercial organizations should adopt to achieve their goals of joining the open source community. This paper first collects project text data from the Internet as a basis for qualitative analysis using snowball-sampling collection mechanisms. Then, based on the classical grounded theory, it summarizes different commercial organizations' involvement model in open source projects through filtering and analyzing these data. Finally, the study extracts four kinds of general involvement model which can provide decision supports and experience references to those commercial organizations who want to join the open source software projects.
Key words: open source software ecosystems     open source software     commercial-open source hybrid project     commercial involvement model     the classical grounded theory analysis     case study    

2000年以来, 一些开源软件项目在没有采用传统软件工程方法的情况下, 所开发的软件却达到了与商业软件相媲美的程度, 甚至成为商业软件的替代者, 如Apache Web Server, Linux Kernel等.这种以用户创新为驱动且低成本高质量的新型软件开发方式, 引起了工业界和学术界的广泛关注[1].为利用开源软件及其开发优势, 大量的商业组织参与到开源项目当中, 并且围绕着开源项目软件建立各自的业务模式, 涌现出一大批开源-商业混合项目, 如OpenStack, Docker及Android等.出现这种现象最根本的原因是, 商业组织加入开源项目可以获取用户创新[2]并且减少开发成本[3].与传统软件项目中开发者与用户各司其职不同, 开源项目的开发者兼具开发者和用户两种角色, 他们根据自己的需求来创建和修改软件——这种方式被认为是用户创新驱动[4].以软件使用者为核心的开源软件项目创新模式明显优于以开发者为中心的创新模式[1].另外, 开源项目中开发者在贡献代码时不要求任何经济报酬, 但其软件质量却不低于传统软件项目[5, 6].现有研究表明, 有志愿者参与的开源-商业混合项目相比原有的商业项目能够节省开发成本[3, 4].察觉到开源-商业混合模式中的用户创新可以带来利益且又能减少软件开发成本, 越来越多的商业组织加入开源项目[1].

然而, 开源软件开发方式与传统的软件工程方法有很大区别, 如开源软件项目通常没有正式的规划阶段, 也没有正式的软件需求分析阶段.这与商业组织原有的开发方式和业务模式等都有很大不同.一个非常重要的问题是:商业组织应当采取怎样的参与模式, 才能在不影响开源项目生态健康的情况下实现加入开源社区的目标[6].具体包括商业组织加入开源项目时应该设定哪些目标, 这些目标需要通过哪些参与行为实现等.开源-商业混合模式作为一种新型软件开发方法, 其理论研究和实践经验分析还不够完善, 特别是对商业组织参与模式的研究.这就导致有大量的商业组织想要加入开源项目却找不到合适的参与模式而处于观望状态, 这也在一定程度上阻碍了开源软件乃至整个信息科技的发展.

针对以上问题, 本文选取当今发展最快、商业组织参与最多、软件技术最热的开源社区之一OpenStack(本文出现的OpenStack均指OpenStack社区)为研究对象[7], 利用雪球采样方法对OpenStack相关文本数据进行收集, 通过对这些数据进行过滤和归纳, 分析社区中的大型商业组织参与目标和行为, 提炼出4种具有一般性的参与模式, 为想要加入开源社区的商业组织提供经验参考和决策支持.

本文第1节主要介绍开源软件以及开源软件生态系统领域的相关工作研究现状.第2节介绍用于提取不同类型商业组织加入开源社区的参与模式的方法框架, 具体介绍案例研究项目及商业组织的选择, 用于描述开源商业参与模式维度的获取以及如何使用在线文档获取商业组织参与开源社区的模式.第3节基于实验方法获取在线资料分析OpenStack中商业组织的参与模式特性, 提炼出4种具有一般性的参与模式并验证模式的有效性.最后对本文工作进行总结并展望未来工作.

1 相关工作研究现状

在过去十几年的时间里, 众多研究者尝试从不同的角度来理解开源软件的开发实践, 总结其成功因素, 以促进开源软件乃至商业软件的发展.这些研究按照其侧重点大致可以分为两类:一类是研究开源软件开发的本质及其贡献者社区, 例如探究开源软件的开发过程与传统的软件开发过程的区别, 探索开源项目吸引、保留贡献者, 进而围绕开源软件形成开源社区的原因; 另一类是关于开源-商业混合模式相关的研究, 按照研究侧重点, 大致可以分为两类.

一类侧重研究混合开发的理论框架等, 目标是为混合开发提供理论指导.例如, Mockus等人提出借鉴开源的协调机制来改进当前商业组织中进行的分布式项目(如离岸、外包等项目)的软件开发方式[8], Dinkelacker等人探讨了如何在大型商业组织中通过逐步开源的方式实现一种更具创新能力的软件工程开发范型(software engineering development paradigm)[9], Sharma等人提出了一种在商业组织结构内部建立开源-商业混合社区的理论框架[10], Daniel等人利用组织管理学的理论研究了开源-商业混合开发中存在的商业组织与开源开发者之间的文化冲突及这些冲突与开发者的组织认同感(organizational commitment)之间的关系[11].

第2类主要采用实证研究的方法, 分析已有项目中的开源-商业混合开发的方式, 总结开源-商业混合开发实践中的经验和规律.所涉及的研究主要有:

(1)  研究商业组织的业务模式

例如:Munga等人提出了一种商业业务模式分析框架, 并用该框架分析了RedHat和IBM在开源领域所采用的不同业务模式[12]; Riehle建立了经济学模式, 分析了商业组织投入开源所带来的成本节约、收益增加等方面的优势[13]; Andersen-Gott等人对商业组织投入开源的动机进行了分析, 结果指出, 商业组织参与开源的3个主要动机分别是:提供增值服务、增强创新能力和降低成本[14].

(2)  研究开源-商业混合软件开发方法.

例如:Gurbani等人对电信领域的一个大型商业软件项目进行了案例研究, 该项目在商业组织内部采用了开源软件开发方法, 研究结果总结了在商业组织已有的组织结构内部进行开源开发时, 在工具支撑、管理方式、任务分配等方面的一些实践经验[15]; gerfalk等人定性分析了3个混合项目中开源社区和商业组织各自的责任和义务, 就如何构建一个成功的开源生态系统提出了很多建议, 这些建议包括开源社区应提供透明的决策流程、商业组织不能太过于强制推行自己的日程安排、双方都应为维持可持续的生态系统而承担一些责任等[16].

(3)  衡量开源-商业混合软件开发项目的性能, 例如评估其是否能够借鉴开源软件开发的优势.

例如, 周等人研究了商业组织参与对开源社区贡献者加入和任期的影响, 作者通过对3个开源-商业混合项目的分析以及社区开发活动数据的量化, 根据商业组织参与力度的大小将开源软件生态系统混合模式分为3种:第1种, 主持型(hosting), 知识产权是由支撑公司控制的, 以RedHat在JBossAS项目中采取的措施为例; 第2种, 合作型(collaborating), 公司对开源项目的知识产权具有部分控制权, 以Bull对JOnAS的管理为例; 第3种, 支持型(supporting), 开源项目成立专门的机构来管理知识产权以及代码提交特权等, 以IBM对Geronimo所采取的参与力度为例[6].最后发现:商业组织对于开源社区严格的控制机制以及高强度的参与活动会降低开源社区志愿贡献者的数量, 同时提高社区原有贡献者的任期[11, 16].Wagstrom等人调研了GNOME和Eclipse中商业组织投入情况对贡献者活跃度的影响, 作者按照参与开源的商业组织的整体策略, 将商业组织分为两类:面向社区型(community-focused)的商业组织和面向产品型(product-focused)的商业组织.结果发现:在GNOME和Eclipse两大社区中, 面向社区型商业组织的投入会增加贡献者的数目, 而面向产品型商业组织的投入却会降低贡献者的数目[17].West和O’Mahony对比了商业组织创建的开源项目和开源社区创建的项目, 发现:尽管前者在基础设施和市场上拥有更丰富的资源, 却难以吸引优秀程序员来为项目贡献[18].

总体上讲, 开源-商业混合模式的研究在研究对象上, 从早期研究混合项目的理论创建方法开始逐步关注对实践项目经验的分析; 在研究内容上, 从关注如何盈利的商业业务模式, 逐渐转移到探索如何构建一个活跃的开源软件社区.本文工作旨在研究不同类型商业组织参与到开源项目的商业目标以及为实现目标采取的策略和行为之间的共性, 进而提炼出有利于开源社区和不同类型商业组织发展的具有一般性和通用性的开源项目参与模式, 为想要加入开源项目的商业组织提供决策支持与加入开源软件生态系统具体实践提供经验参考.

2 研究方法框架 2.1 方法设计

本文依据周等人在研究商业组织参与对开源社区贡献者影响中采取的方法[6], 从分析项目实践的角度出发, 研究OpenStack的大型商业组织的参与目标和参与实践, 总结不同类型的参与模式.本文采用数据驱动的方法进行研究, 这些数据包括开源项目的已发表文献、在线资料、仓库数据以及访谈报告等.具体研究按如下方式展开.

(1)  选择OpenStack作为研究对象, 并从社区中选取8个参与度较高、影响较大且具有代表性的商业组织进行研究, 见第2.2节;

(2)  通过阅读相关领域已发表的文献资料, 获取刻画商业组织参与开源软件项目的维度, 见第2.3节;

(3)  利用雪球采样的方法对8个商业组织参与OpenStack的策略和行为进行数据收集, 并借鉴扎根理论的思想对这些数据进行过滤和归纳, 分析这些商业组织的参与目标和行为, 见第2.4节;

(4)  总结不同类型的商业组织加入开源项目的参与模式, 提炼出4种具有通用性的参与模式, 并对本文工作的合理性和有效性进行验证, 见第3节.

2.2 项目和商业组织选择

本文选择OpenStack作为研究对象的原因有如下几点.

●  热门的技术:云计算是当前流行的分布式计算模式, 它所展现出的可定制性、高可靠性、可扩展性以及按需付费等特点, 吸引了很多的商业组织[19].开源云平台在云计算中扮演着日益重要的角色[20]. OpenStack作为云计算架构解决方案的领军人物, 是一个专注于云计算技术、旨在为公有云和私有云提供一种开放的云计算平台标准的IaaS项目;

●  活跃的社区:OpenStack作为当今世界发展最快的开源社区之一, 拥有来自于全球180多个国家的41 696名参与者, 已经贡献了将近2 000万行代码.全球有600多家组织机构支持该项目, 其中包括众多知名商业组织, 如RedHat, AT&T, IBM等;

●  充足的数据支持:OpenStack拥有完整的文档记录机制, 且有大量的在线数据, 如采访报告、新闻、开发讨论等, 为我们提供了一种深入了解OpenStack及其支持者参与模式的渠道[21].

OpenStack的管理由OpenStack基金会完成.基金会的目标是为开发者、用户以及整个OpenStack生态系统提供共享资源, 促进公有云和私有云的发展, 吸引技术供应商专注于OpenStack平台的同时, 帮助开发者生产出业界最好的云软件[22].OpenStack基金会按照商业组织的参与度, 将其划分为铂金会员、黄金会员以及铜牌会员等级别, 其中, 铂金会员对OpenStack社区的资金投入最大.本文选择OpenStack基金会的8家铂金会员来研究.这8家商业组织分别是AT&T, Canonical, Hewlett Packard Enterprise, IBM, Intel, Rackspace, RedHat和SUSE, 详细介绍见表 1.

Table 1 Introduction of OpenStack foundation platinum members 表 1 OpenStack基金会铂金会员介绍

2.3 开源-商业参与模式的维度获取

已有的研究为商业组织参与开源软件项目的动机和参与实践提供了大量的理论分析和案例研究基础.本文借鉴周等人建立的维度来描述商业组织对开源项目的参与, 并针对OpenStack做适应性改变[6].该研究中用来刻画商业组织对开源项目参与的两个关键维度分别是目标和措施:商业组织为何加入开源社区, 及其为实现目标而采取的策略和措施.针对这两个维度, 本文利用文献资料分析各个商业组织对OpenStack的参与实践, 对商业参与的维度和活动进行细化和完善, 提出以下8个具体问题进行刻画, 第2.3.1节和第2.3.2节将进行详细介绍.

2.3.1 商业组织加入开源项目的目的

商业组织的性质和加入开源项目的目标, 决定了这个商业组织对开源项目的参与模式[6].一种普遍接受的观点是:商业组织加入开源项目的主要目的是获取来自商业组织外部的用户创新以及低成本的技术支持[23].根据已有的对开源-商业项目案例研究得出的结论表明, 目的可以分为:获得外部技术支持[1]、生产与开源项目相关的软件、提供新的服务[24]、将开源作为一种商业模式提供增值服务以及解决方案[25]等.了解商业组织加入开源的目的以及这个目的与商业组织本身的业务性质的相关性至关重要, 然而因为相关信息涉及到商业隐私, 利用当前可用的各种资源难以确定一个商业组织加入开源项目的真实目的, 所以我们选择一种能够侧面反映事实的方法.

●  Q1:OpenStack对于该商业组织的业务是否十分关键?

本文定义的“关键”是指商业组织是否直接从开源软件获利, 或者开源软件与商业组织盈利紧密相关.

2.3.2 商业组织为实现目的而采取的策略措施

以盈利为目的的商业组织应该采用怎样的参与实践, 才能保证在开源项目中获得可持续的收入来源[26]?为了尽量减少对开源项目的投资风险, 商业组织需要采取什么方式对开源社区进行一定程度的控制[27]?这两个关键问题促使我们将商业组织的参与活动细分为两个更为具体的维度:一是参与力度, 指商业组织对开源社区的管理和控制机制; 二是参与强度, 指商业组织对开源社区的资源投入.

●  参与力度

商业组织对开源社区进行管理和控制的主要目的是促使开源软件朝商业组织期望的方向发展, 减少对开源项目的投资风险.根据文献[6], 商业组织对开源社区的管理控制主要分为:一方面试图管理知识产权, 如通过发布许可证的方式来宣布自己对某一软件或模块的所有权[28], 或者是让贡献者签署贡献者许可协议CLA等方式; 另一方面, 商业组织通过赋予某些贡献者代码提交特权来增强对开源软件的控制[29]. OpenStack的知识产权管理由OpenStack基金会负责.新的贡献者加入社区的时候, 首先会签署一份将版权和专利权授予OpenStack基金会的贡献者许可协议(CLA)[30].并且在OpenStack, 所有能够merge到主干的代码都将通过审核, 每个贡献者都可以成为审核人员, 代码提交特权需要通过选举审核的方式产生, 不存在商业组织直接赋予的现象[31].一定程度上, 各商业组织在基金会的员工分布情况可以代表其对OpenStack的管理控制力度, 然而缺乏相关研究.鉴于此, 本文认为:参与OpenStack的所有企业在参与力度上都是一致的, 彼此并无差别.针对这一情形, 本文着重从参与强度上描述商业组织对OpenStack的参与实践[1, 6].

●  参与强度

商业组织对开源项目的参与强度, 指商业组织对其的资源投入.常见的资源投入方式有:向开源社区提供人力(社区贡献者)参与开源项目建设[25, 28]; 通过增加辅助功能等方式, 将开源软件产品与本组织内部的软件集成再次发布; 通过召开发布会或者是在信息大会上展示开源产品来吸引新闻媒体关注[17]; 通过与社区的其他参与组织创建联盟来扩大用户群等[28].针对OpenStack, 本文提出以下5个问题来刻画商业组织对OpenStack的参与强度.

●  Q2:是否会为OpenStack提供人力?若是, 提供人员数是多少?

●  Q3:是否会提供关于OpenStack的支持服务?具体来说:

       是否提供关于OpenStack的培训?

       是否会提供关于OpenStack的资格认证?

       是否为OpenStack提供咨询支持服务?

●  Q4:是否推动OpenStack产品的应用:

       是否会赞助或举办OpenStack相关会议?

       是否贡献OpenStack产品应用场景?

●  Q5:是否会基于OpenStack发布(软件)产品或(软件)服务?若是:

       提供集成包装后的OpenStack发行版?

       提供基于OpenStack的云服务?若是, 是哪种类型的云服务?

●  Q6:商业组织对OpenStack贡献情况如何:

       商业组织在OpenStack最新版本中Commits的贡献情况如何?

       商业组织在OpenStack所有版本中Commits的贡献情况如何?

2.4 商业组织参与开源社区模式相关数据收集与分析 2.4.1 商业组织参与开源社区模式相关数据收集

本文利用互联网上广泛存在的一些OpenStack相关的文本数据作为数据源.这些数据的特点是它们的产生不受观察者和研究者的影响, 因而是真实的.而且, 任何开源生态系统都会留下类似资料, 这保证了此分析方法具有可重复性.这些资料通常包括:

●  OpenStack以及铂金会员官方网站提供的信息、文档、论坛讨论等;

●  项目参与者个人博客文章;

●  一些网上在线的新闻报道;

●  社交类网络中参与者的信息, 如FaceBook, LinkedIn等.

尽管无法保证能够获得OpenStack商业参与的完整知识, 但还是可以得到很多信息, 例如OpenStack的管理机制、商业组织对于OpenStack的愿景、目标和参与实践等.这些都为观察商业参与提供了数据基础.在结果验证阶段, 本文通过与OpenStack专家访谈的方式, 验证了利用这种数据源来理解商业参与模式的有效性.

具体来说, 本文搜集信息的方法分为如下步骤.

(1)  收集OpenStack及其铂金会员的官方网站、博客、wiki等页面中与OpenStack相关的信息, 例如项目历史、含有社区管理制度、商业组织参与OpenStack的目的以及参与措施等;

(2)  为了收集分散在互联网上的广泛的OpenStack相关文本数据, 本文采用了一种基于互联网网页间超链接的雪球采样数据收集机制.具体过程为:首先, 利用搜索引擎, 依据项目名称和公司名称制定了一个初始网页集合; 然后, 人工检查搜索结果中的前20条链接, 选定初始集合中的网页文档; 接着, 抓取初始集合每个文档所包含的链接并进行检查, 通过检查认证的则放入网页集合中, 直到没有新的页面放入该集合;

(3)  人工过滤收集到的文档, 去除重复和不相关的部分.判断不相关文档的方法是检查其内容, 若只包含一个特定的技术或是用户指导, 而没有与商业组织的参与目的以及参与措施相关的信息, 则判断为不相关.值得注意的是, 上述雪球采样的数据收集机制是收敛的.它的收敛性主要依赖对页面的过滤和筛选.对初始网页集合的观察发现:在两页的检索结果中, 每页10份网页文档里平均有3.2篇与本文研究问题相关的文档, 而每篇文档所链接出去的文档中大部分是无关文档, 还有一些转载文档.

最终, 总共收集到OpenStack相关记录70篇, 各商业组织相关OpenStack的记录数分别为:AT&T 47篇, Canonical 43篇, Hewlett Packard Enterprise 56篇, IBM 63篇, Intel 49篇, Rackspace 66篇, RedHat 55篇, SUSE 32篇.这些记录包括学术论文、项目和公司网站的网页、产品文档、新闻文章、博客文章和访谈报告.

2.4.2 商业组织参与开源社区模式相关数据分析

本文借鉴扎根理论方法, 对第2.4.1节获取的相关数据进行分析.事实上, 收集数据的每个步骤都含有人工甄别, 这些操作中穿插了数据分析的部分.为了表述方便, 前一节着重介绍数据收集的步骤, 本节则主要介绍数据分析的过程, 具体步骤如下.

(1)  阅读材料, 寻找相关信息:相关信息是指与本文所研究的OpenStack中商业组织的参与模式有关的信息.例如, 有关商业组织参与的重要词语和句子, 可能包含了商业组织对OpenStack的参与目的和(或)资源投入等;

(2)  信息编码:在前面所摘录的信息中定位内容的关键点, 并为每个关键点指定一个编码(code).这个阶段对应了扎根理论中的编码阶段.编码时始终保持开放的原则, 即:在定位关键点和指定编码的过程中, 并不预先进行一些假设或者出一些想法, 刻意寻找某些信息来证明或支持这些假设或想法.图 1展示了对材料进行编码的过程.由于这些资料也包含访谈内容, 因而在编码时也将一些时间、人物和事件等信息取出来.尽管有些编码可能并不能形成关于参与模式的理论, 但它们对于理论的解释以及之后的参与模式的解释提供了素材;

Fig. 1 Qualitative analysis of material encoding process 图 1 定性分析材料编码过程示例

(3)  概念化:在后续编码时, 不断与之前已有编码比较, 总结共性, 形成概念.在比较归纳时, 不仅在同一商业组织的资料之间比较, 也在不同商业组织的资料之间进行比较.如果发现一些编码讨论了一个共同的主题, 则将它们归为一组, 并命名一个概念.这个过程可对应扎根理论中的持续比较方法;

(4)  范畴化:当编码完成之后, 对所有的概念再次进行抽象、归纳, 将讨论相似问题的概念归为一类.最后, 在这些类别、概念和编码之上形成理论, 即OpenStack的商业参与模式.

此外, 在数据分析过程中尽可能使用已有的相关术语, 并加强在分析过程中对所提出的类似概念、范畴的比较, 从而增强所形成理论的广泛性.

3 商业组织参与开源社区的模式

基于第2.4节获取的相关数据, 从商业目标和参与实践两个方面分析8个商业组织加入对OpenStack的实践, 见第3.1节; 其次, 从商业组织的性质、业务模式等方面对同类型商业组织的参与模式进行抽象, 提炼出4种具有一般性和通用性的参与模式, 见第3.2节; 最后, 通过和OpenStack云计算领域专家使用邮件和访谈的方式对本文的研究工作进行有效性验证.

3.1 各商业组织基于OpenStack的参与模式

按照OpenSUSE社区管理者的观点, 一个成功的开源-商业参与模式应当准确地描述“商业组织加入开源社区需要什么和想要什么以及它如何实现这些目标[32]”.商业组织加入开源社区的商业目的和为实现目的而采取的各种策略措施形成了其对于商业-开源项目的参与模式.本节从商业目标和参与行为两个方面详细介绍OpenStack基金会的8个铂金会员的参与模式.

3.1.1 商业目标

当一个商业组织决定加入一个开源项目时, 必然会考虑两个问题:开源项目和商业组织是否有一组共同的目标; 商业组织是否可以从开源项目中获益; 我们把这两个问题涉及的内容称作商业组织加入开源社区的商业目标.OpenStack的目标是为所有类型的云提供实施简单、可大规模扩展、功能丰富、标准统一的云计算解决方案[33].很多加入OpenStack社区的商业组织也是怀抱着能够提供一套标准统一的云计算基础架构解决方案的愿景.与此同时, 商业组织推出功能增强的OpenStack发行版、提供培训认证、咨询服务等也可以为商业组织带来盈利.表 2展示了通过在线资料获取的8个OpenStack基金会铂金会员加入OpenStack社区的商业目标.

Table 2 Commercial objectives of platinum members joined the OpenStack community 表 2 铂金会员加入OpenStack社区的商业目标

表 2中的数据信息是对Q1的回答, 即, OpenStack对于该商业组织的业务是否十分关键.我们可以看出:部分商业组织加入OpenStack的目的具有很强的相似性, 如:AT&T使用OpenStack实现公司内部的具体业务; RedHat, Canonical和SUSE都希望通过发布集成本公司Linux系统的OpenStack版本来提高使用量扩大用户群, 并且通过提供基于OpenStack私有云解决方案及相关培训、认证、支持等服务直接获益; IBM, HPE商业组织本身均将云计算作为其重要业务, 加入OpenStack都希望在推进云计算基础架构标准化的同时提供基于OpenStack云服务, 获取技术支持和用户创新以及相关增值服务获益; Rackspace商业组织作为OpenStack的创始人之一, 通过提供基于OpenStack的各种类型云服务以及培训、认证等一系列增值服务而获益; Intel公司使用OpenStack云服务实现企业内部转型之后, 通过将内部硬件技术应用到OpenStack性能优化的方式推广本公司的硬件芯片技术.由表 2可以得出, OpenStack基金会的各个铂金会员商业组织均通过利用OpenStack带来的实际服务与潜在商机直接或间接获益.因此, OpenStack对于以上商业组织的业务十分关键.

3.1.2 参与行为

商业组织通过对开源社区投入各种资源实现其目标.本文采用参与强度代表商业组织对开源社区的资源投入.本小节将详细介绍各OpenStack基金会铂金会员的参与强度.根据在线资料, 先从以下5个方面来刻画商业组织对OpenStack的参与强度.

●  Q2:是否会为OpenStack提供人力?若是, 提供人员数是多少?

●  Q3:是否会提供关于OpenStack的支持服务?具体来说:

       是否提供关于OpenStack的培训?

       是否会提供关于OpenStack的资格认证?

       是否为OpenStack提供咨询支持服务?

●  Q4:是否推动OpenStack产品的应用:

       是否会赞助或举办OpenStack相关会议?

       是否贡献OpenStack产品应用场景?

●  Q5:是否会基于OpenStack发布(软件)产品或(软件)服务?若是:

       提供集成包装后的OpenStack发行版?

       提供基于OpenStack的云服务?若是, 是哪种类型的云服务?

●  Q6:商业组织对OpenStack贡献情况如何:

       商业组织在OpenStack最新版本中Commits的贡献情况如何?

       商业组织在OpenStack所有版本中Commits的贡献情况如何?

表 3可以看出, 各商业组织为实现加入OpenStack不同目标采取了不同的参与行为, 其中, HPE对OpenStack的资源投入在目前已有的度量维度上是最广泛的; Canonical, RedHat以及SUSE在对OpenStack的资源投入方式上具有相似性, 均会将本公司的Linux系统集成到OpenStack软件再发布等; Intel和AT&T对OpenStack的资源投入相对比较少, 特别是AT&T, 仅仅向OpenStack提供人力.

Table 3 Resources provided to OpenStack community by platinum members 表 3 铂金会员向OpenStack社区的投入的资源

此外, 本文还利用商业组织对OpenStack的代码贡献量和人力投入所占的比例这两个角度刻画其对OpenStack的参与强度.图 2展示了OpenStack发布的Newton版本中这8家商业组织贡献的代码比例, 我们可以看出:RedHat, HPE和IBM对Newton的代码投入很多; 相反, AT&T的贡献代码相对比较少.图 3表示各铂金会员在OpenStack基金会中的人数, 其中, IBM, HPE商业组织处于领先地位, AT&T, Canonical以及SUSE商业组织的人员在基金会中相对比较少.

Fig. 2 Code percentage of OpenStack's Newton version contributed by platinum members 图 2 OpenStack的Newton版本铂金会员贡献的代码行百分比

Fig. 3 Platinum members count in OpenStack 图 3 铂金会员在OpenStack基金会中的人数

3.2 OpenStack商业组织的参与模式分类 3.2.1 参与模式分类

第3.1节对加入OpenStack的8家商业组织的参与目标以及为实现目标采取的参与实践进行了详细的分析.本节将从商业组织的性质、参与目标以及参与实践这3个方面入手, 提取这8家商业组织在参与实践上的共性, 总结出4种参与模式.

●  模式1:以AT&T为代表的使用型

AT&T加入OpenStack社区的根本原因是为了使用OpenStack软件.AT&T作为通信商业组织, 希望通过使用OpenStack软件从传统的网络服务模式转移到基于云环境的SDN/NFV网络, 商业组织内部并没有直接通过OpenStack盈利也没有云服务相关业务, 所以AT&T对于OpenStack的控制管理需求比较低, 同时对OpenStack社区的资源投入较少[34].

●  模式2:以Intel为代表的产品推广型

Intel作为一个硬件芯片公司, 加入OpenStack主要目的是利用OpenStack软件实现从传统业务模式到基于云计算的业务模式的迁移.Intel通过将商业组织内部硬件技术应用到OpenStack软件优化性能的方式建立云计算生态系统向提供硬件芯片销售, 因此, Intel会向OpenStack社区贡献相比AT&T更多的代码, 其中大部分是一些硬件、芯片的驱动程序[35].

●  模式3:以RedHat, Canonical和SUSE为代表的操作系统集成和私有云解决方案提供型

RedHat, Canonical和SUSE作为Linux三大供应商, 均希望通过发布集成本公司Linux系统的OpenStack发行版来提高使用量并扩大用户群, 同时提供基于OpenStack的私有云解决方案以及培训、认证等服务直接获益; 此外, RedHat商业组织对于加入OpenStack的目标并不限于增加Linux使用量, 而是将OpenStack视为当初的Linux, 希望通过大力参与OpenStack获得主流影响力, 因此在参与力度和参与强度上, RedHat都优于其他两个商业组织[36].

●  模式4:以IBM, HPE和Rackspace为代表的OpenStack云服务提供与功能增强型

云服务对于IBM, HPE和Rackspace商业组织来说都是核心业务, 这3个商业组织都希望能够提供基于OpenStack的云服务以及基于OpenStack的培训、咨询、认证等服务直接获益, 因而不论是参与力度还是参与强度, 这3个商业组织都处于领先地位.IBM, HPE和Rackspace商业组织均提供公有云服务, 不同点在于:IBM和HPE使用商业组织内部的公有云基础架构; 而Rackspace作为OpenStack的创始人之一, 其公有云完全基于OpenStack软件.OpenStack还可以为IBM和HPE商业组织提供技术支持以及用户创新.

3.2.2 参与模式的一般性

我们是从OpenStack的8家主要赞助公司分析得出4种商业参与类型, 鉴于OpenStack本身所具有的FLOSS项目的代表性, 以及这8个公司在软件、硬件、服务商之间的代表性, 我们认为, 本文所获得的参与模式具有一般性和通用性.

●  案例研究对象具有一般性

当前的开源社区, 大部分FLOSS项目都是支持型的[6], 例如Linux Kernel, Docker以及Android等项目.Linux Kernel社区由Linux基金会负责知识产权、法律事务、资源分配等方面的管理, 其社区拥有来自于全球200多个商业组织的3 700名参与者, 包括众多知名商业组织, 如RedHat, IBM等.OpenStack作为支持型的开源项目, 其社区具有完整的的管理机制且参与者众多, 拥有健康的生态系统, 在众多FLOSS项目中具有代表性.

●  商业组织具有一般性

OpenStack拥有来自全球商业组织的广泛支持, 本文选取的商业组织, 其性质囊括了通信、系统、信息技术、咨询服务等诸多方面.这些商业组织在其领域具有代表性, 如AT&T, 类似的商业组织有英国Vodafone、德国Deutsche Telekom以及中国移动等电信公司选择利用OpenStack实现网络功能虚拟化(NFV).这些电信公司在OpenStack参与模式上与AT&T相似, 主要表现在对社区的管理控制需求较低且资源贡献较少.此外, 华为公司自2012年加入OpenStack基金会后, 快速成长为一个重要的OpenStack推行者和贡献者, 共计投入超过600名开发者, 社区贡献力从20位攀升到第6位.该公司在积极推进OpenStack使用的同时, 将本公司云计算相关产品全部切换到OpenStack平台上, 如FusionSphere5.0之后全部基于OpenStack.华为公司提供基于OpenStack的私有云、混合云和公有云解决方案, 并在安全性、可靠性等方面增强, 且向OpenStack社区投入大量的人力和资源, 这种参与模式与IBM, HPE等商业组织相同, 均为OpenStack云服务提供与功能增强型.

图 4所示, 各参与模式及其可能具有的商业组织性质、商业目标以及为实现目标采取的参与实践用同一颜色的矩形框作背景.本文提炼出的4种商业组织加入开源项目的参与模式允许商业组织可以根据其业务性质并且结合加入开源项目想要实现的目标选择合适的参与模式, 或者直接根据参与目标选择相应的参与实践.另外, 本文提出的这种参与模式主要是基于OpenStack的8家铂金会员商业组织, 具有一定的局限性, 所以商业组织根据此一般模式得出的参与模式仅具有参考作用.

Fig. 4 A general commercial-opensource community involvement model 图 4 一般化的开源项目商业参与模式

3.3 有效性验证

本文通过向OpenStack社区专家发送邮件的方式, 从以下3个方面对本文的研究工作进行有效性验证.

1)  本文对于OpenStack的8家商业组织参与OpenStack的目的是否描述全面?

2)  我们是否遗漏了商业组织对于OpenStack的其他重要参与实践?

3)  本文得出的一般化商业组织加入开源项目的参与模式是否具有一定的参考价值和实践意义?

前两方面的验证确保我们根据本文的研究工作是基于现实的, 分布在网络环境中的数据能否反映现实情况, 是科学研究过程中重要的问题[37]; 第三方面是对本文工作价值可用性的验证.

根据来自OpenStack社区专家的反馈, 他们首先肯定了本文工作对商业组织选择参与开源社区模式具有指导作用, 同时对开源社区的构建也具有参考价值.此外, 专家还针对本文获取模式的方法给出了合理有效的建议.根据这些建议, 我们对本文的工作进行调整和补充, 具体表现为:

1)  就商业组织加入OpenStack的目标而言, 对于Intel公司, 专家认为该公司的重点除了实现传统业务模式到基于云的业务模式转变之外, 更希望通过将公司内部硬件技术应用于OpenStack性能优化的方式销售硬件芯片, 因此, 本文将Intel加入OpenStack的参与模式从最初的使用型调整为产品推广型;

2)  在商业组织对于OpenStack的参与实践方面, 专家补充了另外一种很重要的参与方式, 那就是提供OpenStack产品的应用场景.OpenStack作为一个开源项目, 其产品不可避免的具有不稳定性, 使其进入生产环境变的十分困难.这些大型商业组织贡献的应用场景可有效的推广OpenStack的使用;

3)  此外, 专家还指出商业组织参与OpenStack的诸多实践在衡量其对社区所做的贡献时占的权重是不一样的.基于本文的主旨是从参与目的和参与实践两个方面来刻画参与模式, 所以在本文工作暂不考虑参与实践的权重问题.

4 总结与展望 4.1 本文工作总结

开源已经变成软件发展的主流, 商业组织参与开源项目开发变成了一种普遍现象, 如OpenStack, Docker以及Andriod等项目.商业组织应该采用怎样的参与模式加入到开源社区, 才能既实现目标又不损害开源项目生态系统的健康呢?本文选用OpenStack开源项目作为案例研究对象, 采用雪球采样方法收集商业组织参与OpenStack的相关资料, 利用经典定性分析方法, 通过对数据进行过滤、编码及归纳, 获取基金会铂金会员加入OpenStack的目标及其为实现目标采取的策略实践, 总结商业组织的参与模式, 并提炼出4种具有一般性的商业组织参与开源项目模式.本文的主要贡献如下.

●  通过对互联网上商业组织参与开源项目的文本数据的分析, 得出各商业组织的开源项目参与模式并对这些模式进行定性分类, 最后提炼提炼出4种具有一般性的商业组织参与开源项目模式, 给想要加入开源项目的商业组织提供决策支持和实践经验参考;

●  基于OpenStack的实际情况, 对周等人[6]提出的商业-开源参与模式做出改进和扩展, 省去了参与力度这一维度, 并且扩充了参与强度包括的具体实践, 使之更具一般性.

4.2 未来工作展望

本文得出的商业组织加入商业-开源项目的参与模式主要依据是收集并分析OpenStack相关的数据资料, 对商业组织的商业目标、参与策略和实践进行的是定性描述.下一步将收集OpenStack的开发活动数据(如Bug, Commit等), 应用量化方法对本文提出的参与模式进一步细化.

本文提出的一般化开源项目商业组织参与模式是一个理论模式, 在具体使用情景下, 还缺乏细节上的说明, 给想要使用本模式的商业组织带来一定程度的困难.未来将针对如何在开源项目中使用一般化参与模式提供实践案例.

在第2.3.2节提到:商业组织为了促使开源软件朝着希望的方向发展, 减少对开源项目的投资风险, 往往会试图管理知识产权或者是赋予某些贡献者代码提交特权[29, 37].在OpenStack中, 有其基金会专门负责管理知识产权、代码提交流程.然而部分开源项目并不存在类似机构, 如JBossAS项目, 其知识产权由参与公司RedHat控制[6].在接下来的工作中, 我们将针对不同类型的开源项目, 验证并扩展本文提出的开源项目参与模式.

参考文献
[1] Mockus A, Fielding RT, Herbsleb J. A case study of open source software development:The apache server. In:Proc. of the 22nd Int'l Conf. on Software Engineering. Limerick:ACM Press, 2000. 263-272.[doi:10.1145/337180.337209]
[2] Ma XJ. Research on the Health Measurement for Open Source Software Ecosystem. Beijing: Peking University, 2014. (in Chinese with English abstract).
[3] Harhoff D, Henkel J, Von Hippel E. Profiting from voluntary information spillovers:How users benefit by freely revealing their innovations. Research Policy, 2003, 32(10): 1753–1769 . [doi:10.1016/S0048-7333(03)00061-1]
[4] Hippel E, Krogh G. Open source software and the "private-collective" innovation model:Issues for organization science. Organization Science, 2003, 14(2): 209–223 . [doi:10.1287/orsc.14.2.209.14992]
[5] Mockus A, Fielding RT, Herbsleb JD. Two case studies of open source software development:Apache and mozilla. ACM Trans. on Software Engineering and Methodology (TOSEM), 2002, 11(3): 309–346 . [doi:10.1145/567793.567795]
[6] Zhou MH, Mockus A, Ma XJ, Zhang L, Mei H. Inflow and retention in OSS communities with commercial involvement:A case study of three hybrid projects. ACM Trans. on Software Engineering and Methodology (TOSEM), 2016, 25(2): 13 . [doi:10.1145/2876443]
[7] OpenStack official website. 2016. 1https://www.openstack.org/
[8] Mockus A, Herbsleb JD. Why not improve coordination in distributed software development by stealing good ideas from open source. In:Proc. of the 2nd Workshop on Open Source Software Engineering, Meeting Challenges and Surviving Success. 2002. 19-25.
[9] Dinkelacker J, Garg PK, Miller R, Nelson D. Progressive open source. In:Proc. of the 24th Int'l Conf. on Software Engineering. ACM Press, 2002. 177-184.[doi:10.1145/581339.581363]
[10] Sharma S, Sugumaran V, Rajagopalan B. A framework for creating hybrid open source software communities. Information Systems Journal, 2002, 12(1): 7–25 . [doi:10.1046/j.1365-2575.2002.00116.x]
[11] Daniel SL, Maruping LM, Cataldo M, Herbsleb J. When cultures clash:Participation in open source communities and its implications for organizational commitment. In:Proc. of the ICIS. 2011.
[12] Munga N, Fogwill T, Williams Q. The adoption of open source software in business models:A RedHat and IBM case study. In:Proc. of the 2009 Annual Research Conf. of the South African Institute of Computer Scientists and Information Technologists. ACM Press, 2009. 112-121.[doi:10.1145/1632149.1632165]
[13] Riehle D. The economic motivation of open source software:Stakeholder perspectives. Computer, 2007, 40(4): 25–32 . [doi:10.1109/MC.2007.147]
[14] Andersen-Gott M, Ghinea G, Bygstad B. Why do commercial companies contribute to open source software. Int'l Journal of Information Management, 2012, 32(2): 106–117 . [doi:10.1016/j.ijinfomgt.2011.10.003]
[15] Gurbani VK, Garvert A, Herbsleb JD. A case study of a corporate open source development model. In:Proc. of the 28th Int'l Conf. on Software Engineering. ACM Press, 2006. 472-481.[doi:10.1145/1134285.1134352]
[16] Ågerfalk PJ, Fitzgerald B. Outsourcing to an unknown workforce:Exploring opensourcing as a global sourcing strategy. MIS Quarterly, 2008, 32(2): 385–409 . http://dl.acm.org/citation.cfm?id=2017375
[17] Wagstrom P, Herbsleb JD, Kraut RE, et al. The impact of commercial organizations on volunteer participation in an online community. In:Proc. of the Academy of Management Annual Meeting. 2010. http://www.herbsleb.org/web-pubs/pdfs/wagstromimpact-2010.pdf
[18] West J, O'Mahony S. Contrasting community building in sponsored and community founded open source projects. In:Proc. of the 38th Annual Hawaii Int'l Conf. on System Sciences (HICSS 2005). IEEE, 2005. 196c.[doi:10.1109/HICSS.2005.166]
[19] Buyya R, Yeo CS, Venugopal S. Market-Oriented cloud computing:Vision, hype, and reality for delivering it services as computing utilities. In:Proc. of the 10th IEEE Int'l Conf. on High Performance Computing and Communications (HPCC 2008). IEEE, 2008. 5-13.[doi:10.1109/HPCC.2008.172]
[20] Baset SA, Tang C, Tak BC, Wang L. Dissecting open source cloud evolution:An openstack case study. In:Proc. of the Presented as Part of the 5th USENIX Workshop on Hot Topics in Cloud Computing. 2013.
[21] OpenStack documentation. 2016. http://docs.openstack.org
[22] OpenStack foundation mission. 2016. https://wiki.openstack.org/wiki/Governance/Foundation/Mission
[23] Crowston K, Wei K, Howison J, Wiggins A. Free/Libre open-source software development:What we know and what we do not know. ACM Computing Surveys (CSUR), 2012, 44(2): 7 . [doi:10.1145/2089125.2089127]
[24] Chesbrough H, Rosenbloom RS. The role of the business model in capturing value from innovation:Evidence from Xerox Corporation's technology spin-off companies. Industrial and Corporate Change, 2002, 11(3): 529–555 . [doi:10.1093/icc/11.3.529]
[25] Capek PG, Frank SP, Gerdt S, Shields D. A history of IBM's open-source involvement and strategy. IBM Systems Journal, 2005, 44(2): 249–257 . [doi:10.1147/sj.442.0249]
[26] Bonaccorsi A, Giannangeli S, Rossi C. Entry strategies under competing standards:Hybrid business models in the open source software industry. Management Science, 2006, 52(7): 1085–1098 . [doi:10.1287/mnsc.1060.0547]
[27] Von Zedtwitz M, Gassmann O. Market versus technology drive in R&D internationalization:Four different patterns of managing research and development. Research Policy, 2002, 31(4): 569–588 . [doi:10.1016/S0048-7333(01)00125-1]
[28] Dahlander L, Magnusson M. How do firms make use of open source communities?. Long Range Planning, 2008, 41(6): 629–649 . [doi:10.1016/j.lrp.2008.09.003]
[29] Sinha VS, Mani S, Sinha S. Entering the circle of trust:Developer initiation as committers in open-source projects. In:Proc. of the 8th Working Conf. on Mining Software Repositories. ACM Press, 2011. 133-142.[doi:10.1145/1985441.1985462]
[30] OpenStack project individual contributor license agreement. 2016. https://review.openstack.org/static/cla.html
[31] How to contribute. 2016. https://wiki.openstack.org/wiki/How_To_Contribute#Contributor_License_Agreement 1356
[32] Measuring corporate contributions to an open source project. 2016. http://www.cio.com/article/-474963/Measuring_Corporate_Contributions_to_an_Open_Source_Project
[33] OpenStack project's software homepage. 2016. https://www.openstack.org/software/
[34] OpenStack superuser award validates AT&T's industry-leading cloud initiative. 2016. http://about.att.com/innovation-blog/openstack_superuser
[35] Intel wants its new OpenStack management software inside your cloud. 2016. http://thenewstack.io/intel-wants-its-new-openstackmanagement-software-inside-your-cloud/
[36] Red hat OpenStack platform. 2016. https://www.redhat.com/zh/insights/openstack
[37] Mockus A. Engineering big data solutions. In:Proc. of the on Future of Software Engineering. ACM Press, 2014. 85-99.[doi:10.1145/2593882.2593889]
[2] 马秀娟. 开源软件生态系统的健康状态度量研究. 北京: 北京大学出版社, 2014.