(1990-),女,硕士生,CCF学生会员, 主要研究领域为开源生态模式与机制
(1997-),男,博士生,CCF学生会员,主要研究领域为软件仓库挖掘, 开源软件生态系统
(1974-),女,博士,教授,博士生导师,CCF高级会员,主要研究领域为软件仓库挖掘, 开源软件生态系统
(1995-),男,硕士,CCF学生会员,主要研究领域为开源软件, 计算机视觉
(1981-),女,高级工程师,CCF高级会员, 主要研究领域为云计算, 开源, 应用软件, 标准化
开发者通常会为其开源代码选择不同的开源许可证来约束其使用条件, 以期能有效地保护知识产权和维持软件的长远发展. 然而, 现有的开源许可证种类繁杂, 开发者难以了解不同开源许可证间的差异, 并且难以通过现有的开源许可证选择工具做出合适的选择——其使用要求开发者了解开源许可证相关条款并明确自己的业务需求. 学术界虽然对开源许可证已有研究, 但是对开发者选择开源许可证的实际困难并无系统的分析进而缺乏清晰的认知. 有鉴于此, 旨在从开源开发者角度出发, 理解其选择开源许可证的困难, 并通过分析开源许可证的组成要素和影响开源许可证选择的因素, 为开源许可证的选择提供借鉴. 设计问卷并随机调研了参与GitHub开源项目的200名开发者. 通过对53个反馈结果采用主题分析, 发现开发者选择开源许可证通常面临条款内容太复杂和考虑因素不确定这两方面的困难. 通过分析GitHub上3 346 168个代码仓库中使用最广泛的10种开源许可证, 建立了包含10个维度的开源许可证框架. 通过借鉴计划行为理论, 从行为态度、主观规范和知觉行为控制3方面提出了影响许可证选择的9大要素, 通过开发者调研验证了它们的相关性, 并进一步通过拟合次序回归模型验证了项目特征与许可证选择的关系. 研究结果能加深开发者对开源许可证内容的理解, 为开发者结合自身需求选择合适的许可证提供决策支持, 并为实现基于用户需求的开源许可证选择工具提供借鉴.
Developers usually select different open source licenses to restrain the conditions of using open source software, in order to protect intellectual property rights effectively and maintain the long-term development of the software. However, since the open source community has a wide variety of licenses available, developers generally find it difficult to understand the differences between different open source licenses. And existing selection tools of open source license require developers to understand the terms of the open source license and identify their business needs, which makes it harder for developers to make the right choice. Although there has been extensive research on open source license, there is still no systematic analysis on the actual difficulties of the developers to choose the open source license, thus lacking a clear understanding. For this reason, this study attempts to understand the difficulties faced by open source developers in choosing open source licenses, analyzes the components of open source license and the factors influencing open source license selection, and provides references for developers to choose open source licenses. This study conducts a random survey of 200 developers that participated in the open source projects on GitHub through questionnaires. With a Thematic Synthesis on the 53 feedbacks, it is found that developers often face difficulties in the selection of open source licenses in terms of complexity of terms and unknown considerations. By analyzing the ten open source licenses most widely used in 3 346 168 repositories on GitHub, this study establishes a framework of open source licenses that contains 10 dimensions. Drawing on the Theory of Planned Behavior, nine factors that affect license selection from three aspects are put forward: behavior attitude, subjective norm, and perceived behavior control. The relevance of those factors is verified by developer survey. Furthermore, the relationship between project characteristics and license selection is verified by fitting the order regression model. The results of research can deepen developers’ understanding of the contents of open source licenses, provide decision support for developers to select appropriate licenses based on their own needs, and provide a reference for implementing open source license selection tools based on developers’ needs.
在过去30年里, 开源已经成为软件技术创新和软件产业发展的主要模式. 与传统开发模式相比, 开源开发展现出充分共享、自由协同、无偿贡献、用户创新、持续演化的新特征, 颠覆了诸多经典软件工程的基本假设和理论[
开源许可证的选择对项目的开发和演化以及软件的使用和商业化而言都至关重要. Linus Torvalds曾提到开源许可证是Linux成功的决定性因素之一, 并明确表示对GPL-2.0的偏爱, 因为它强制其他开发者进行反馈, 有效地防止了碎片化[
为项目选择一个合适的开源许可证并不简单. 一方面, 目前开源社区存在大量不同的许可证, 仅OSI认证通过的开源许可证已有80多个, 尽管每个开源许可证背后的基本原理是相似的, 但它们之间存在相当大的异质性[
为了帮助开发者选择开源许可证, 业界已经实现了许多优秀的开源许可证选择工具. ChooseALicense (
鉴于开源许可证对开源开发的重要影响, 软件工程领域对其相关内容已有深入研究, 主要体现在对开发者选择或变更开源许可证的动机、以及开源许可证选择对项目成功的影响上. 例如, 开发者的经济动机决定开源许可证的选择[
RQ1: 开发者为项目选择开源许可证时通常会面临哪些困难?
RQ2: 开源许可证的组成要素有哪些?
RQ3: 哪些因素影响开发者选择开源许可证?
本文采用定性和定量相结合的方法回答上述问题, 首先通过阅读现有文献及结合有关项目开发经验, 我们设计了调查问卷, 从GitHub项目仓库的作者中选取200名开发者进行问卷调研, 并基于主题分析的方法总结出开发者选择开源许可证通常遇到的两类困难, 分别是: ① 开发者通常难以理解许可证的条款内容, 许可证之间的相似性及其复杂的法律含义让开发者感到困惑; ② 开发者选择开源许可证时通常受到多种因素影响, 例如项目的特征、开源许可证是否被广泛使用以及开源许可证对项目是否产生影响等, 他们对如何全面考虑各方面因素进行最佳决策感到困惑. 其次, 本文通过对GitHub上使用最广泛的10种开源许可证进行对比分析, 采用主题分析的方法提取了一个十维度的开源许可证框架, 可以帮助开发者认识开源许可证的组成要素和分析开源许可证间的差异. 再次, 我们借鉴了计划行为理论中的3个维度, 通过问卷调研以及相关文献调研, 将开发者选择开源许可证的考虑因素概括为9个方面, 包括: 个人的开源理念、对利益因素的评估、所在组织的观念、开源社区对许可证的偏好、许可证流行度和复杂度、许可证兼容性、其他项目影响、对项目特征的评估、以及许可证选择结果的影响等, 并进一步通过拟合次序回归模型验证了项目特征因素与许可证选择的关系. 最后本文讨论了研究结果的指导意义和应用场景.
本文的主要贡献总结如下:
① 调研并识别了开源许可证选择的两类常见困难: 开发者难以理解开源许可证的条款内容且许可证之间的相似性以及复杂的法律含义让开发者感到困惑; 开发者选择开源许可证时通常还会综合考虑多方面因素, 他们对如何全面考虑各方面因素进行最佳决策感到困惑. ② 围绕开源许可证核心要素建立了一个开源许可证框架, 可以帮助开发者方便理解开源许可证内容的构成以及开源许可证之间存在的差异. ③ 揭示了影响开发者选择开源许可证的9大因素, 可以指导开发者结合自身业务需求选择合适的许可证.
本文第1节对相关工作进行阐述. 第2节对开源许可证的背景进行介绍. 第3节探索开发者在选择开源许可证时通常遇到哪些困难. 第4节建立开源许可证框架, 以帮助开发者认识和了解开源许可证的构成和存在的差异. 第5节探索影响开发者选择开源许可证的影响因素. 第6节讨论了研究结果的指导意义和应用场景. 第7节阐述了本文的局限性. 最后进行总结.
随着开源软件越来越广泛地被使用, 开源许可证也逐渐受到学术界和工业界更多的关注. 目前, 关于开源许可证的研究领域主要集中在法律[
(1) 开源许可证的选择或变更的影响因素. 开源开发者的动机一直是与开源软件相关的研究人员和专业人士讨论的主题[
(2) 开源许可证的选择或变更对项目的影响. Hofmann等人分析了10年间开源项目的许可证选择和相关项目增长的趋势[
(3) 许可证选择自动化工具. 例如Kapitsaki和Charalambous采用相似用户和相似项目实现了开源许可证推荐[
此外, 还有大量的研究出现在经济法律和管理领域, 关注于常见开源许可证的对比分析[
软件的版权保护意味着软件只能在得到版权所有者的许可后才能使用[
私有版权策略是一种将部分或全部潜在的技术用户排除在外的策略[
非私有版权策略主要包括将软件置于公共领域或进行开源许可[
综上所述, 开源软件仍受版权保护, 开源软件和私有软件的主要区别在于它们的许可模式. 使用开源软件需要得到开源许可证的授权.
开源促进会(open source initiative, OSI)(
必须允许任何人以源代码或其他形式重新发布程序, 且不收取任何费用; 源代码免费可获取, 或收取不超过传输成本的费用; 必须允许分发衍生或修改后的软件; 不歧视任何用户群体或应用领域; 保证源代码的完整性; 允许对许可证中的权利重新分发; 许可证不得特定于产品; 许可证不得限制其他软件; 许可证必须是技术中立的(
开源许可证间最大的差异是关于许可证对分发衍生软件的限制性不同, 即当他人对代码修改和扩展(与其他软件合并)后并分发的限制要求. 目前, 开源许可证按照限制的强弱通常分为3种类型.
● 宽松型(permissive): 这类许可证通常只要求被许可方承认原始作者, 衍生软件可以成为私有软件, 如BSD系列许可证、MIT、Apache-2.0和MulanPSL-2.0.
● 限制型(copyleft): 旨在促进开发人员的合作, 保护源代码的自由共享[
● 弱限制型(weak-copyleft): 弱限制型许可证要求对软件的修改, 重新分发必须按照获得该软件的许可证进行开源, 然而合并这些软件的大型作品可以成为私有作品. 这是一个折中的方法, 允许将代码集成到自己的软件中, 而不必使整个代码库开源, 避免了不得不分享的场景[
我们在阅读大量的相关文献及与有关企业开发人员访谈后, 进一步通过问卷调查(
(1)问卷设计
我们通过阅读大量文献以及在线网页, 并咨询华为等企业开发人员, 初步分析了开发者选择开源许可证过程中可能遇到的困难. 以此为基础, 遵循相关性、完整性、互斥性和可能性的原则[
问题3共7个问卷选项(多选, 详见
The difficulties developers face in choosing an open source license
开发者选择开源许可证面临的困难
(问题3)在选择开源许可时遇到了什么困难?(多项选择题)
|
||
选项 | 数量 | 比例 (%) |
1. 开源许可证种类太多, 难以进行分析和比较(Too many open source licenses, and it’s hard to analyze or compare). | 21 | 39.62 |
2. 难以综合所有的因素来做出最佳的许可证选择策略(It is difficult to combine all the factors to make the best strategy for license choice). | 8 | 15.09 |
3. 许可证中的术语或法律含义很难理解(Terms or legal implications of those licenses are difficult to understand). | 21 | 39.62 |
4. 当不同项目之间存在依赖关系时, 很难判断许可证之间的兼容性(It is difficult to judge the compatibility of the license when there are dependencies among different projects). | 15 | 28.30 |
5. 不同的许可证可能会对项目的发展带来不同的影响(Different license may have a different impact on the development of the project). | 18 | 33.96 |
6. 不同的受众对许可证可能有不同的偏好, 比如贡献者或最终用户(Different audiences may have different preferences, such as contributors or end-users). | 9 | 16.98 |
7. 现有的许可证无法满足自己的需求(Existing licenses cannot meet our needs). | 0 | 0.00 |
8. 其他(Other). | 11 | 20.75 |
首先, 很多网站都维护了一个开源许可证列表, 如FSF (
其次, 问卷中选项4的设计是因为在项目的开发过程中, 多个项目之间可能存在大量的交互, 如链接、合并、代码块复用等. 当所依赖的项目使用不同开源许可证时, 开发者不得不考虑许可证的兼容性及合规使用问题[
最后, 选项5和选项6的设计源于已有研究揭示了开源许可证类型与项目的开发活动、用户兴趣的关系[
我们从GitHub网站托管的代码仓库中利用GitHub Search API (
(2)数据分析
我们使用主题分析方法对问卷结果进行分析. 主题分析(thematic synthesis)是一种识别、分析和报告数据中的模式(主题)的方法, 通常用于对定性研究数据进行分类, 在软件工程等众多领域广泛使用[
步骤①通过对收到的回复, 提取出选项及补充的其他答案等信息; 步骤②从前面提取的信息中定位内容的关键点, 以系统的方式识别和编码有关开发者选择开源许可证过程中可能遇到的困难(
Qualitative analysis of material (Questionnaire options and open reply)thematic synthesis process
定性分析材料(问卷选项及开放式回复)主题分析过程
我们向第3.1节选取的开发人员共发放200份问卷, 最终收到53份回复, 回复率为25%. 通常, 软件工程领域中邮件调研回复率为6%–36%[
我们对得到的53份回复结果采用主题分析, 最终归纳出两类困难, 分别是:
① 开发者认为目前存在大量的开源许可证, 它们相互之间的相似性使其难以区分, 且一些开源许可证的条款和复杂的法律含义使其感到困惑. 39.62%的开发者认为目前存在大量的开源许可证, 难以对比或分析; 而一些开源许可证的条款以及所包含的法律含义让人难以理解, 例如Apache-2.0和GPL-2.0中对专利授权的范围不同, 由于Apache-2.0包含了专利授权终止条款, 使得Apache-2.0无法兼容GPL-2.0. 一名开发者在补充回答中提到“它们太相似了, 很难区分(They are too similar and hard to differentiate)”. 开源许可证是相似的, 它们之间可能存在一些共同的模式, 找到这种模式可能帮助开发者更好理解和对比开源许可证;
② 开发者选择开源许可证时可能综合考虑多种因素, 例如, 他们可能针对不同的项目或者项目特征为其选择适用的开源许可证, 开发者还关心许可证选择的结果是否影响项目的发展等, 开发者对如何全面考虑各方面因素进行最佳决策感到困惑. 33.96%的开发者认为许可证选择的结果可能进一步影响项目的发展, 例如MIT、BSD-2-Clause、Apache-2.0等开源许可证在分发义务中允许衍生软件成为商业软件, 可能使得软件具有更多的用户, 这种影响的不确定性增加了他们选择开源许可证的难度; 28.3%的开发者在选择开源许可证时容易受到许可证兼容性问题的困扰, 例如, 在Linux kernel基础上扩展软件需要遵从GPL-2.0的许可证约束, 而判断所选的开源许可证是否与其兼容需要一定的法律知识以及了解许可证的内容; 16.98%的开发者认为, 针对不同的项目受众应当选择不同的许可证, 例如一些具有自由开源理念的贡献者通常会选择具有限制型许可(如GPL类许可证)的项目进行贡献, 一名来自美国, 超过10年的开源开发经验的人认为“每个项目可能需要多个许可证, 比如代码部分使用一个许可证, 文档部分使用另一个许可证(The challenge of potentially needing multiple licenses per project, i.e. one for code and one for docs)”, 也进一步说明了开发者选择开源许可证式会考虑针对项目的不同类型选择不同的许可证; 还有15.09%的开发者认为影响开源许可证选择的因素是多方面的, 如何全面考虑这些因素进行选择是困难的.
此外, 有开发者表达了开源许可证具有一定的局限性, 尽管其规范了开源软件的使用、复制修改和分发, 但无法保证项目的可持续发展(“Licensing does not reflect sustainable revenue goals for any projects. While projects are about giving back, sustainability is near impossible”). 值得注意的是, option7结果为0, 出现这个结果可能是因为, 我们选取的调研对象是从去掉许可证为空或其他许可证的项目作者中挑选, 而所调研的开发者认为目前的开源许可证已经能够满足他们的需求.
我们发现: ① 大部分的开发者在为项目选择许可证是困难的, 尤其是新参与的开发者在面对众多开源许可证, 它们内容的相似性和复杂的法律含义让人感到困惑. ② 开发者选择开源许可证时通常还会综合考虑多方面因素, 他们对如何全面考虑各方面因素进行最佳决策感到困惑.
为了帮助开发者更好地理解开源许可证, 以及减少开发者选择许可证的困难, 我们通过主题分析的方法探究开源许可证的组成要素.
首先, 我们使用谷歌Bigquery工具(
其次, 我们选取广泛使用的前10种许可证, 采用主题分析[
最后, 为了检验本文提出的维度是否能反映大部分开源许可证的内容, 本文作者通过人工分析OSI或FSF认证的72个许可证内容对提出的维度进行交叉验证.
我们对3 346 168个许可证信息进行统计, 得到
Qualitative analysis of material(part of Apache2.0) encoding process
定性分析材料(截取部分Apache 2.0)数据编码步骤示例
Open source license usage on GitHub
GitHub上开源许可证使用现状
随后我们对选取的10种许可证的内容进行主题分析, 将许可证条款划分为10个维度: ① 许可证的基本信息, ② 序言, ③ 定义条款, ④ 授权条款, ⑤ 义务条款, ⑥ 违约与授权终止条款, ⑦ 担保与责任限制条款, ⑧ 准据法条款, ⑨ 许可证版本与兼容性, 以及⑩许可证使用说明等. 其中①许可证的基本信息、④授权条款中的版权许可、⑤义务条款、⑦担保与责任限制条款等为开源许可证中的常见条款, 其他条款通常根据许可证制定方的需求进行相应说明. 具体如下:
1)基本信息. 主要包括许可证名称及版本号、发布日期、许可证版权声明及链接地址等信息.
2)序言. 主要对许可证的适用场景或条件以及目的宗旨等进行说明, 如GPL-3.0的序言部分.
3)定义. 为了便于开发者或用户理解许可证内容, 对许可证条款中的特定术语进行说明.
4)授权. 开源许可证主要涉及的知识产权主要包括版权、专利权、以及商标权.
● 版权许可. 项目开发者通常免费授予用户行使相关权限, 包括使用、复制、修改、分发其开源项目或修改后的项目.
● 专利许可. 如果开源项目中包含专利, 开发者可以提供专利许可, 也可以不提供专利许可. 对于不提供专利许可的场景, 许可证将不会提及专利许可, 或者明确排除专利许可.
● 商标权. 开源许可证原则上不涉及商标权许可, 并且通常禁止借项目开发者的名义进行广告或宣传.
5)义务. 用户在使用、复制、修改或分发软件或其衍生软件应当遵守的行为规范.
● 使用/复制/修改. 开源许可证通常不对使用目的、范围进行限制, 开发者可以基于任何目的(学习、研究或商业)对软件进行运行、备份、修改等操作, 但在一些特定场景中可能要求履行相关义务. 如AGPL-3.0中对通过网络使用软件向第三方提供服务时, 需要提供完整源代码.
● 分发. 当开发者分发软件或衍生软件时通常要求: ① 履行一定的声明义务, 例如修改声明(如Apache-2.0)、保留版权及免责等声明、提供许可证副本等; ② 要满足开源许可证对分发衍生软件的限制性, 根据限制性的强弱, 可以将开源许可证分为3类, 即宽松型(permissive)、弱限制型(weak-copyleft)、限制型(copyleft).
6)违约与授权终止. 对于用户违反许可证的行为, 可以对其终止授权, 也可以给予一定的补救机会.
7)担保与责任限制. 项目开发者通常不对用户提供任何担保以及承担任何赔偿责任; 如果开发者个人对用户提供保证和担保须自行承担相应责任.
8)准据法. 是指在许可证中指定援用的, 用来调整涉外民事法律关系双方当事人权利与义务的特定国家的法律.
9)版本与兼容性. 对许可证版本进行说明, 以及对与该许可证兼容或者不兼容的其他许可证进行特别说明, 许可证兼容性是指项目中的许可证包含相互矛盾的必要条件, 而使得无法将其源代码合并成新的项目.
10)使用说明. 告知用户将项目许可在该许可证下应该完成的步骤, 并可以包含一个声明模板, 对软件相关的作品描述、作品版权声明、许可证及其链接、作者联系方式等进行说明.
开源许可证之间的差异通常体现在③定义、④授权、⑤义务、⑥违约与授权终止以及⑧准据法中, 例如: MPL-2.0和CPAL-1.0对“覆盖代码”定义的范围不同, 因此在下文条款中要求对“覆盖代码”使用原许可证分发其源码, MPL-2.0可以通过不同文件来隔离传染性, CPAL-1.0则需要不同模块单独分发来隔离传染性; 在授权中Apache-2.0明确提供授予专利权, 而MIT则未提及专利授权; 在义务条款中常见的差异主要来源于对分发衍生软件的限制性强弱以及不同的声明义务; 在授权终止中一些开源许可证中可能包含专利报复条款以及不同的违约补救条件, 如Apache中提到用户不得发起专利诉讼, 否则其授权将被终止; 此外, 还有一些开源许可证明确了准据法, 如EUPL-1.2, 这也是开发者在使用开源许可证过程中需要注意的问题.
最后, 我们根据这10个维度, 提出了开源许可证框架(
我们发现, 目前在GitHub上广泛被使用的是OSI分类为“流行且广泛使用”的开源许可证, 其中宽松型开源许可证占主导地位, 限制型次之, 而弱限制型的开源许可证并不常见. 通过对开源许可证内容进行主题分析, 提出了10个维度的开源许可证框架, 其中, ①许可证的基本信息、④授权条款中的版权许可、⑤义务条款、⑦担保与责任限制条款等为开源许可证中的常见条款, 其他条款通常根据许可证制定方的需求进行相应说明. 开发者可以通过比较各个维度上开源许可证之间的差异, 来理解开源许可证的结构与含义. 此外, 开发者还可以利用开源许可证框架快速构建满足个人特定需求的新开源许可证, 例如, 木兰宽松许可证第2版(MulanPSL-2.0)正是在此开源许可证框架基础上为更好地保护开发者权益而构建的中国本土开源许可证.
Open source license framework
开源许可证框架
为了剖析影响开发者选择开源许可证的因素, 进一步为开发者结合自身需求选择合适的许可证提供决策支持和经验参考, 我们通过阅读有关文献并借鉴计划行为理论(theory of planned behavior)的3个维度设计调查问卷, 分析开源许可证选择的影响因素, 通过对项目特征因素拟合次序回归模型, 验证分析了项目特征与开源许可证选择的关系.
(1)问卷调研
在第2.1节中面向200开发者的调研问卷中的问题4–问题11调研了开发者选择开源许可证的考虑因素. 其中, 问题4调研开发者选择开源许可证的影响因素, 共有9个选项(多选, 详见
Factors affecting developers' choice of open source licenses
开发者选择开源许可证的影响因素
(问题4)在选择开源许可证时, 您主要考虑的是什么?(多项选择题)
|
||
选项 | 数量 | 比例(%) |
1. 取决于个人的意愿(According to your own will). | 25 | 47.17 |
2. 考虑所采用的商业模式(Consider the business model used). | 16 | 30.19 |
3. 所在组织的指导原则会影响许可证的选择(The guiding principles of your organization influence decision). | 7 | 13.21 |
4. 考虑社区中开发者或用户的偏好(Preferences of developers or users from Community). | 17 | 32.08 |
5. 考虑许可证的流行度, 是否被广泛使用(License popularity, whether such license is widely used). | 13 | 24.53 |
6. 考虑许可证的法律复杂度(Legal complexity of the license). | 12 | 22.64 |
7. 许可证之间的依赖, 依赖包的许可类型影响许可证的选择(License dependency, license choice may be limited to the license type of dependency packages). | 9 | 16.98 |
8. 相似项目的许可证选择方案(Existing license choices for similar projects). | 7 | 13.21 |
9. 考虑项目的特征, 如采用的编程语言、应用领域、项目规模等(Characteristics of your project (such as programming language, application domain, project size)). | 9 | 16.98 |
10. 其他(Other). | 5 | 9.43 |
问卷及Q4选项设计的理由如下:
① 行为态度方面, Ajzen等人提出的期望-价值理论[
② 主观规范方面, 是指个体在决策时感知的社会压力或者外界因素的影响. 当开发者不是以个人名义参与开源时, 通常可能受到来自组织或企业的影响, 例如, 开发者在Linux社区中使用BSD许可证是可以接受的, 但是他们在BSD社区中贡献GPL代码是一个大大的禁忌[
③ 知觉行为控制方面, 是指个人预期采取某一特定的行为时所感觉可以控制的程度, 常反映个人过去的经验、拥有的资源、能力以及预期的阻碍等. 从第3.2节中我们得知, 开发者在为项目选择许可证时会考虑不同的受众目标, 且有文献表明开发复杂软件的项目更可能选择有某种程度限制的许可证[
Developers' philosophy about open source
开发者的开源理念
(问题5)你最认同哪一种观点?
|
||
选项 | 数量 | 比例(%) |
1. 软件应该对所有用户自由的, 它可以被每个人共享和修改(Software should be free to all users, it could be shared and modified by everyone). | 19 | 35.85 |
2. 用户有更多的权利以及更少的限制(Users might have more rights and fewer restrictions). | 13 | 24.53 |
3. 介于两者之间(In-between). | 21 | 39.62 |
Developers' viewon open source commercialization
开发者如何看待开源商业化
(问题7)您如何看待开源软件的商业化?换句话说, 就是通过使用开源软件来获得经济利益.
|
||
选项 | 数量 | 比例(%) |
1. 支持. 它可以促进开源的发展(Support. It could promote open source development). | 37 | 69.81 |
2. 反对. 这是不道德的(Oppose. It would be immoral). | 7 | 13.21 |
3. 介于两者之间(In-between). | 9 | 16.98 |
Business modelused by developer
开发者采用的商业模式
(问题8)你采用的开源业务模式是?
|
||
选项 | 数量 | 比例(%) |
1. 无(None). | 14 | 30.43 |
2. 双重授权, 提供定制服务(Dual authorization, providing customization service). | 14 | 30.43 |
3. 提供技术培训或售后服务(Provide technical training or after-sales service). | 15 | 32.61 |
4. 生产基于开源软件的互补产品(Complementary products based on open source software). | 20 | 43.48 |
5. 闭源销售(Closed-source commercialization, close source code, and sell software). | 3 | 6.52 |
6. 获得声誉(Win the reputation). | 12 | 26.09 |
7. 其他(Other). | 1 | 2.17 |
(2)定量分析
大量的工作探究了开源许可证类型与项目之间的关系[
已有研究提出了几个重要的项目特征, 包括项目年龄、目标受众、编程语言、项目大小等[
The non-economic benefits of open source
开源的非经济利益
(问题9)开源给你带来什么好处?(多项选择题)
|
||
选项 | 数量 | 比例(%) |
1. 个人声望(Personal reputation). | 43 | 81.13 |
2. 产品可见性(Product visibility). | 31 | 58.49 |
3. 建立行业标准(Establishment of industry standards). | 17 | 32.08 |
4. 挑战的乐趣(Challenge fun). | 38 | 71.70 |
5. 职业发展(Career development). | 28 | 52.83 |
6. 扩大用户基础(Broad user base). | 22 | 41.51 |
7. 社区中开发者支持(Support of developers from the community). | 31 | 58.49 |
8. 其他(Other). | 2 | 3.77 |
根据计划行为理论的3个维度结合有关文献调研, 我们提出影响开源许可证选择有9个因素, 其中, ① 开发者的开源理念、② 开发者对利益的评估等涉及行为态度方面; ③ 开发者所在组织观念的影响、④ 社区偏好的影响、⑤ 许可证流行度和复杂度、⑥ 许可证兼容性、⑦ 其他项目的影响等涉及主观规范方面; ⑧ 对项目特征的评估、⑨ 许可证选择结果的影响等涉及知觉行为控制方面. 问卷调研结果验证了各个影响因素的相关性. 我们进一步通过拟合次序回归模型验证了项目特征与开源许可证选择的关系, 具体分析如下.
① 开发者的开源理念
开源理念反映了开发者如何看待开源软件的使用问题, 当开发者认为某一个开源许可证所蕴含的开源哲理与其开源理念相符时, 更有可能表现出强烈的选择意愿. 问题4选项1反映了开发者的开源理念(
关于如何开放源码, 不同的开发者有不同的理念, 在问题5的调研(
在问题6 (Q6)的关于开发者首选开源许可证的调研结果(
Preferred open source license for developers
开发者首选的开源许可证调研结果
② 开发者对利益的评估
开源并不一定出于利他主义或意识形态, 它也可以出于健康的自身利益[
一是经济利益方面, 虽然开源软件第一眼看上去似乎是反利润的, 但越来越多的企业或组织已经将开源思想纳入到他们的商业战略[
针对支持开源商业和保持中立态度的46名开发者, 我们继续调研他们是否采用以及采用了何种商业模式(
二是非经济利益方面, 开发者参与开源还可能有经济利益以外的目的, 开发者可以通过选择不同的许可证类型以期获得不同的非经济利益, 例如限制型许可证可以提供更高的贡献可见性, 开发者更容易获得期望的认可、声誉或职业机会[
③ 开发者所在组织观念的影响
当开发者代表组织或在特定社区进行开源时, 通常也需要考虑所选择的许可证是否符合其所在组织的观念, 而避免不必要的纠纷, 例如上文中提到的在BSD社区中应避免选用GPL类开源许可证.
④ 社区偏好的影响
不同的开源许可证类型不同程度地吸引开源社区中的贡献者和用户, 例如: 宽松型许可证允许与私有软件合并, 因此对商业用户更有吸引力, 而一些社会性质项目的开发者可以通过选择限制型许可证来吸引更多的开发人员[
⑤ 许可证流行度和复杂度
(
⑥ 许可证兼容性
(
⑦ 其他项目的影响
(
⑧ 对项目特征的评估
(
鉴于项目特征对开发者的重要性和可评估性, 我们分析了项目特征与开源许可证类型的具体关系, 结合文献调研解释其原因, 为开发者参考项目特征选择开源许可证提供参考. 我们通过对第3.1节中选取的4704个项目进行定量分析. 我们从项目中提取编程语言、应用程序描述、大小(单位为KB)、创建时间和许可证信息, 并根据5.1(2)中对变量设定原则得到编程语言(PL)、应用领域(Domain)、项目大小(Size)、项目年龄(Age)和许可证类型(LicenseType)等信息(项目在各变量维度上的分布如
Distribution of projects in programming languages and domains
项目在编程语言(左图)和应用领域(右图)的分布
Distribution of projects in size and age
项目在大小(左图)和项目年龄(右图)上的分布
Distribution of projects in license type
项目在开源许可证类型上的分布
从
从编程语言和应用领域这两个分类变量的置信区间估计值及回归系数(
Correlation coefficient
相关系数
项目特征 | M | SD | 1 | 2 | 3 | 4 | 5 |
注: 列标题中1,2,3,4,5分别表示项目年龄、编程语言、应用领域、项目规模和许可证类型. * |
|||||||
1. Age | 58.36 | 27.830 | 1 | −0.067** | −0.209** | 0.032* | −0.007 |
2. PL | 5.18 | 2.648 | − | 1 | 0.032* | −0.246* | −0.004 |
3. Domain | 1.91 | 1.341 | − | − | 1 | 0.092** | 0.229** |
4. Size | 2.02 | 0.730 | − | − | − | 1 | 0.060** |
5. LicenseType | 1.32 | 0.720 | − | − | − | − | 1 |
Estimate of parameter
参数估计值
项目体征 | LicenseType | 95%CI | ||||
coefficient | wald | upper | lower | |||
注: * |
||||||
Age | 0.006 | 13.425 | 0.003 | 0.009 | ||
Size | 0.320*** | 27.498 | 0.201 | 0.440 | ||
PL | C | 0.040 | 0.068 | −0.260 | 0.339 | |
C# | −1.365*** | 62.205 | −1.704 | −1.026 | ||
C++ | −0.308 | 3.661 | −0.624 | 0.008 | ||
Java | −1.921*** | 88.197 | −2.322 | −1.520 | ||
JS | −2.635*** | 115.166 | −3.117 | −2.154 | ||
Objective |
−2.180*** | 108.830 | −2.590 | −1.771 | ||
PHP | −0.966*** | 28.856 | −1.318 | −0.613 | ||
Python | −0.867*** | 26.086 | −1.200 | −0.534 | ||
SQL | −0.344 | 1.408 | −0.913 | 0.224 | ||
VB | 0a | − | − | − | ||
Domain | Develop | −1.159*** | 34.861 | −1.543 | −0.774 | |
App | −0.472* | 6.051 | 0.096 | 0.849 | ||
Popular | −0.998*** | 17.500 | −1.466 | −0.531 | ||
Underlying | −0.295 | 1.800 | −0.726 | 0.136 | ||
Tutorial | −0.954** | 10.150 | −1.541 | −0.367 | ||
Game | 0a | − | − | − |
模型平行线检验
指标 | 参数 | 值 |
注: * |
||
自由度 | df | 16*** |
样本数 | N | 4704 |
R2 | Cox and Snell | 0.169 |
Nagelkerke | 0.258 | |
McFadden | 0.174 |
Distribution of open source license typeusage in programming languages and domains
开源许可证不同类型在编程语言(左图)和应用领域(右图)的使用分布
⑨ 许可证选择结果的影响
由于社区的贡献者和用户对开源许可证类型存在不同偏好, 一定程度影响着他们是否参与或接受该项目, 且不同开源许可证的类型可以带来不同的开源利益, 从而对项目的发展带来一定的影响. 一方面, 开发者可以通过分析其他项目许可证选择结果的影响, 为自己选择开源许可证提供决策支持; 另一方面, 开发者可以根据个人开源项目发展趋势或经验进行判断, 调整对开源许可证的选择. 我们在问题10调研了他们是否为项目变更开源许可证及变更原因, 53名回复者中有7名开发者(13.20%)回复了该问题, 表明他们为项目更换过许可证, 主要原因包括支持项目的商业化、使项目更容易被接受以扩大用户群、通过更强的限制以达到保护项目不被商业化的目的, 以及尽量避免项目因许可证涉及法律纠纷等(“I have changed from BSD license to Apache license as the former one is more suitable for EU laws”“I have modified some projects, mainly “Libraries”, from GPL-v3 to LGPL-3.0 to ease project acceptance.”“Switched from GPL-2.0 after learning about its complexities and issues”“We had things in GPL that we moved to MIT as that is useable in commercial projects”“I changed from GPL to AGPL to protect my application’s API’s as well.”“To broaden the consumer audience”“Switched from closed source to open 5 years ago.”). 而前文中提到的关于Redis变更自研模块的许可证, Redis Labs的联合创始人兼首席技术官YiftachShoolman表示变更的目的是保护开发者的利益和开源软件的持续发展. “多年来, 云提供商通过销售基于开源项目的云服务, 可从中获利数亿美元, 可这些项目实际上并不是他们自己开发的, 如Docker, Elasticsearch, Hadoop, Redis和Spark. 这阻碍了社区投资开发开源代码, 因为任何潜在的好处都归云提供商而不是代码开发人员或他们的赞助商[
此外, 问题11收到9个回复. 其中, 部分回复的内容与开源许可证的选择无关, 例如, “希望你们可以提供一篇选择开源许可证的参考, 方便我们这些开源的朋友学习!”“You can read all about it here:
同时, 部分回答与问卷中前述问题的回复观点重复, 例如, “MIT hydra”“I prefer MIT for its simplicity and usage freedom”“GPL-2.0 is still the most popular, and has the most benefit to the developer. Liberal licenses like MIT and Apache mostly benefit hardware and systems vendors”“I believe in open source software. By choosing (A) GPL over MIT or Apache, I force other users to share their work. Anybody could make money from my software, even if they have to share their improvements (make it ready for many consumers). But they never do this. They don’t care about open source. Just want to profit off my work”“We chose GPL v3 specifically because we invested a lot of work in our software, and we did not want others to simply take our work, rebadge it, and commercialize it. We also make the software available under a custom proprietary license, for those who want it”.
因此,我们过滤了与开源许可证的选择无关的回答, 而对于与问卷前述问题观点的重复的内容, 我们将其归到了Q6和Q4的结果之中, 这几名受访者分别在Q6和Q4补充回答中的回复与其在Q11中的回复观点相同.
我们发现, 开发者的开源理念、对利益因素的评估、开发者所在组织的观念、开源社区对许可证的偏好、许可证流行度和复杂度、许可证兼容性、其他项目的影响、开发者对项目特征的评估, 以及许可证选择结果的影响, 都可能在某种情况下影响开发者为项目选择许可证(
Factors influencing the choice of open source license
开源许可证选择的影响因素
本文针对开发者难以根据自身需求选择合适的许可证的现状, 研究了以下问题: ① 开发者为项目选择开源许可证时通常会面临哪些困难? ② 开源许可证的组成要素有哪些? ③ 哪些因素影响开发者选择开源许可证? 我们通过问卷调研200名GitHub开源开发者, 获得了开发者选择开源许可证通常面临的两类困难和9大影响因素, 并通过分析GitHub开源项目中使用最广泛的10种开源许可证, 建立了一个开源许可证框架, 我们还针对开发者普遍关心的项目特征这一影响因素, 通过对项目特征因素拟合次序回归模型, 验证了项目特征与开源许可证选择的关系.
我们建立的开源许可证框架可以帮助开发者理解开源许可证的构成和差异. 刚刚接触开源的开源开发者通常缺乏法律知识背景, 开源小企业可能没有专业的法务团队支持, 开源许可证之间的差异以及条款中包含的法律词汇常常使他们感到困惑, 开源许可证框架可以帮助开发者基于10个条款维度分析开源许可证, 对理解不同开源许可证之间的差异是十分有效的, 例如在专利授权条款中有无对违反专利授权的限制可以体现出该开源许可证对开发者利益保护程度、根据在分发义务条款中对衍生作品分发的限制可以将开源许可证划分为宽松型、弱限制型和限制型等. 开源开发者或开源企业还可以利用开源许可证框架快速构建满足自身需求的开源许可证. 尽管开源社区已有大量不同类型的开源许可证, 这些开源许可证仍然可能无法满足开源开发商的所有需求, 他们试图构建自己的开源许可证, 例如, MongoDB改用一种新的服务器端公共许可证(SSPL)力求堵住一些云提供商利用其开源代码生产数据库的托管商业版本而无需开源的缺口(
我们揭示的影响开源许可证选择的9大因素可以帮助开发者或开源企业从不同角度全面分析自身的需求来指导开源许可证的选择. 不同类型的开源许可证可以带来不同的开源利益, 且一定程度影响贡献者和用户是否参与或接受该项目, 从而对项目的发展带来一定的影响. 开源企业参与开源的目的与其需求直接相关, 他们通常依据自身不同需求针对不同的开源项目在不同的应用场景下选择不同的开源许可证, 例如, 在一篇名为《分析了35家企业75个开源项目》的译文中重提到, 唯一使用相同许可模式的公司只有Palantir (硅谷一家数据挖掘公司)[
此外, 我们的研究结果还可以帮助业界清晰了解开发者选择开源许可证面临的实际困难和影响因素, 采用更好的策略来解决开发者遇到的困难, 例如改进现有的开源许可证选择工具来帮助开发者结合自身需求选择合适的许可证提供决策支持. 目前业界和学术界实现的基于开源许可证条款差异(OSSWATCH Licence Differentiator)、基于简单应用场景(ChooseALicense)、或基于相似项目推荐[
论文的局限性主要体现在数据的有效性、方法的构造性和结论的普适性上面.
第1个局限性是数据的可访问性和一致性. 首先, 本文通过GitHub search API爬取的项目数据只包含有限项目仓库, 我们获取了编程语言流行度排名前十的总共9672个项目仓库, 这些项目仓库包含了近一年的数据, 一些仓库没有公开或者无法通过GitHub search API获得, 在数据清洗过程中, 我们去掉了许可证为空或Other的项目, 因其无法提取项目的许可证信息; 其次, 数据本身可能无法反映实际的情况. 在第5.2节中我们定量分析了项目特征与许可证类型之间的关系, 其中项目的特征仅考虑了编程语言、应用领域、项目规模和项目年龄, 可能存在其他的特征影响着许可证的选择, 例如项目的技术复杂性等. 尽管这可能导致结果分析存在一定的局限性, 但编程语言的流行度与软件开发领域发展和市场热度息息相关, 通常是开发者关注的热点领域, 而对最近一年数据的开源许可证使用情况分析也正好反映开发者选择开源许可证的现状. 因此, 我们认为所获取的数据能够适用于本文研究工作的目的.
第2个局限性是方法的构造性. 首先, 本文主要采用主题分析方法和计划行为理论等定性分析方法对调研结果进行分析, 然而采用定性研究结果指导实践具有一定的局限性; 其次, 在分析开源许可证选择影响因素时, 我们认为行为意向能较好地解释开发者选择开源许可证的行为, 因此借鉴了计划行为理论的3个维度设计调研问卷, 然而从计划行为理论的研究进展可以发现, 计划行为理论的主要变量的概念定义一直是研究者们争论的焦点[
第3个局限性是结论的普适性. 在调研中随机选取的200名开发者作为调研对象不能代表所有开发者的意见, 由于邮件调研的特殊原因, 一部分开发者的邮箱地址为公司客服邮箱或者已注销或不再使用, 难以得到有效的回复, 且开发者容易受到当时环境、心理等因素的影响, 可能存在其他未调研到的实际困难和影响因素, 使研究结果的应用范围和应用程度受到一定的局限. 由于国际邮件调查的回复率普遍较低, 在软件工程领域,邮件回复率通常在6%–36%[
本文首先通过问卷的方式调研了开发者在为项目选择许可证时通常会遇到的两类困难, 即因许可证的相似性和法律复杂性造成开发者难以理解开源许可证之间的差异, 以及开发者对如何全面考虑各方面因素进行最佳决策感到困惑, 从而有助于清晰理解开发者选择开源许可证面临的实际困难. 其次, 我们通过对比分析最广泛使用的十种开源许可证的条款, 将许可证内容划分为10个维度, 并建立起开源许可证框架, 可以帮助开发者清晰认识和理解开源许可证的内容构成, 便于开发者从各个维度出发对比和分析开源许可证之间的差异, 减轻开发者解决上文提到的第一类困难的压力; 同时, 开发者还可以利用开源许可证框架快速构建符合自己特定需求的新开源许可证. 最后, 我们通过对开发者选择开源许可证考虑因素的调研和分析, 得出影响开源许可证选择存在多方面因素, 包括开发者的开源理念、对利益的评估、组织观念和社区偏好的影响、许可证流行度或兼容性问题、其他项目的影响、个人对项目的评估以及许可证选择结果对项目的影响, 为开发者结合自身需求选择合适的许可证提供决策支持和经验参考, 可以帮助开发者解决上文提到的第二类困难, 为实现基于用户需求的许可证选择工具提供借鉴.
Zhang YX, Zhou MH, Mockus A, Jin Z. Companies' participation in OSS Development - An empirical study of OpenStack. IEEE Transactions on Software Engineering, 2019. [doi: 10.1109/TSE.2019.2946156]
https://ir.lib.uwo.ca/csdpub/10]]>
https://www.infoworld.com/article/3112778/linus-torvalds-credits-gpl-with-preventing-linux-fragmentation.html]]>
https://www.oschina.net/news/99271/redis-database-license-change]]>
https://www.oschina.net/news/99271/redis-database-license-change (in Chinese).]]>
程德杰. Android的开源迷雾与中国厂商的机遇. 通信世界, 2013, (7): 11. [doi: 10.13571/j.cnki.cww.2013.07.003]
Cheng DJ. Open source fog of Android and opportunities for Chinese manufacturers. Communications World, 2013, (7): 11 (in Chinese). [doi: 10.13571/j.cnki.cww.2013.07.003]
Lin YH, Ko TM, Chuang TR, Lin KJ. Open source licenses and the creative commons framework: License selection and comparison. Journal of Information Science and Engineering, 2006, 22: 1–17.
Colazo J, Fang YL. Impact of license choice on open source software development activity. Journal of the American Society for Information Science and Technology, 2009, 60(5): 997–1011. [doi: 10.1002/asi.21039]
Sen R, Subramaniam C, Nelson ML. Determinants of the choice of open source software license. Journal of Management Information Systems, 2008, 25(3): 207–240. [doi: 10.2753/MIS0742-1222250306]
10.1109/ICSM.2015.7332449]]]>
10.1007/978-981-13-7099-1_7]]]>
Lerner J, Tirole J. The scope of open source licensing. The Journal of Law, Economics, and Organization, 2005, 21(1): 20–56. [doi: 10.1093/jleo/ewi002]
Stewart KJ, Ammeter AP, Maruping LM. Impacts of license choice and organizational sponsorship on user interest and development activity in open source software projects. Information Systems Research, 2006, 17(2): 126–144. [doi: 10.1287/isre.1060.0082]
Valimaki M. Dual licensing in open source software industry. SSRN Electronic Journal, 2003, 8(1): 63–75. [doi: 10.2139/ssrn.1261644]
10.1109/ICCIT.2009.169]]]>
10.1109/PCI.2010.28]]]>
10.1109/ICPC.2017.7]]]>
10.1109/APSEC.2016.012]]]>
Gacek C, Arief B. The many meanings of open source. IEEE Software, 2004, 21(1): 34–40. [doi: 10.1109/MS.2004.1259206]
10.1007/978-0-387-72486-7_39]]]>
10.1007/978-3-319-17837-0_13]]]>
10.1109/ICSE.2015.245]]]>
10.1007/978-3-642-38928-3_18]]]>
10.1109/WCRE.2011.14]]]>
10.1007/978-3-642-24418-6_12]]]>
10.1007/978-3-319-57735-7_8]]]>
Horne NT. Open source software licensing: Using copyright law to encourage free use. Georgia State University Law Review, 2001, 17(3): 863–892.
Kennedy DM. A primer on open source licensing legal issues: Copyright, copyleft and copyfuture. Saint Louis University Public Law Review, 2001, 20(2): 345–378.
Morin A, Urban J, Sliz P. A quick guide to software licensing for the scientist-programmer. PLoS Computational Biology, 2012, 8(7): e1002598. [doi: 10.1371/journal.pcbi.1002598]
王希光. 几种开源协议的比较研究. 科技资讯, 2010, (14): 20. [doi: 10.16661/j.cnki.1672-3791.2010.14.174]
Wang XG. A comparative study of several open source protocols. Science & Technology Information, 2010, (14): 20 (in Chinese). [doi: 10.16661/j.cnki.1672-3791.2010.14.174]
Comino S, Manenti FM. Dual licensing in open source software markets. Information Economics and Policy, 2011, 23(3–4): 234–242. [doi: 10.1016/J.INFOECOPOL.2011.07.001]
Demil B, Lecocq X. Business model evolution: In search of dynamic consistency. Long Range Planning, 2010, 43(2–3): 227–246. [doi: 10.1016/j.lrp.2010.02.004]
Engelfriet A. Choosing an open source license. IEEE Software, 2010, 27(1): 48–49. [doi: 10.1109/MS.2010.5]
董海军, 朱东星. 社会调查中高质量问卷的设计. 晋阳学刊, 2019, (5): 115–120. [doi: 10.16392/j.cnki.14-1057/c.2019.05.014]
Dong HJ, Zhu DX. The design of the questionnaire with high quality in social investigations. Academic Journal of Jinyang, 2019, (5): 115–120 (in Chinese). [doi: 10.16392/j.cnki.14-1057/c.2019.05.014]
10.1109/ICPC.2015.32]]]>
10.1109/ESEM.2011.36]]]>
10.1109/CHASE.2013.6614738]]]>
段文婷, 江光荣. 计划行为理论述评[J]. 心理科学进展, 2008, 16(2): 315–320.
Duan WT, Jiang GR. A review of the theory of planned behavior. Advances in Psychological Science, 2008, 16(2): 315–320 (in Chinese with English abstract).
Zhou MH, Mockus A. Who will stay in the FLOSS community? Modeling participant’s Initial behavior. IEEE Transactions on Software Engineering, 2015, 41(1): 82–99. [doi: 10.1109/TSE.2014.2349496]
Ajzen I. The theory of planned behaviour: Reactions and reflections. Psychology & Health, 2011, 26(9): 1113–1127. [doi: 10.1080/08870446.2011.613995]
Ajzen I, Fishbein M. Attitude-behavior relations: A theoretical analysis and review of empirical research. Psychological Bulletin, 1977, 84(5): 888–918. [doi: 10.1037/0033-2909.84.5.888]
Gomulkiewicz RW. De-bugging open source software licensing. University of Pittsburgh Law Review, 2002, 64(1): 75–103.
Holtgrewe U, Werle R. De-commodifying software? open source software between business strategy and social movement. Science Studies, 2001, 14(2): 43–65.
http://digitalcommons.law.scu.edu/chtlj/vol33/iss3/3]]>
https://www.oschina.net/news/88307/75-popular-projects-open-source-licenses]]>
https://www.oschina.net/news/88307/75-popular-projects-open-source-licenses (in Chinese).]]>