Open source license FQA

开源许可证常见问题解答

更多细节查看:https://github.com/osslab-pku/OpenSourceLicense-FQA

当前热点问题

问:CLA、DCO与开源许可证的区别?

特征 CLA DCO 开源license
签署方式 与社区一次性签署 每次提交的commit中签署 伴随源码
内容 社区或组织可自行定义 由Linux Foundation提出并定义,全文仅4条内容 由许可证发布方定义
目标 明确参与贡献的有关法律义务,是开源license的补充 确保贡献者遵守开源license 明确开源项目中授予的权利和义务

问:开源软件会断供吗?

  软件一旦开源(如图中v1),社区便存在该软件的开源版本,即使该软件在将来某个版本闭源(如图中v4),也不影响之前的开源版本,即您可以使用v1、v2、v3版本的源码并遵循其所采用的开源许可证。
  因此,开源软件因闭源而断供,断的“供”仅指闭源版本(相较于开源版本)的新功能或新改进,您仍然可以基于往期的开源版本进行开发。 image

问:什么是EAR?美国出口管理条例对开源是否有限制?

答:出口管理条例 (EAR) 是一套由美国商务部工业和安全局 (BIS) 制定的美国政府法规。这些法规涉及商业和双用途商品、软件和技术的出口和再出口。您可以在 BIS 网站上找到有关 EAR 的更多信息。您可以在商业控制列表 (CCL) 中找到受 EAR 约束的商品,并且每个商品都分配有唯一的出口控制分类编号 (ECCN)。 根据EAR的规定,”出口 “一词具有广泛的含义。出口不仅包括将实物产品从美国境内转移到外部地点,还包括其他行为。向美国境内的美国公民或合法永久居民以外的人发布技术的简单行为被视为出口,为美国境外的个人提供可接收的电子传输软件也是如此。 这对开源社区来说似乎令人震惊,但好消息是,向全世界公布和公开提供的开源技术不受EAR的限制。

以下的典型情况(包括但不限于此)不受EAR的限制: 公开发表的开源软件(Open source software)不受EAR的约束。 公开发表的开源规范(Open source specifications)不受EAR的约束。 公开发表的描述硬件设计的开源文件不受EAR的约束。 公开发表的开源软件二进制文件不受EAR的约束。

问:什么叫做将代码放入公共领域?

  “公共领域”或者说“公有领域”是在著作权法理论中被广泛使用的概念。著作权法保护的著作权是一种专有权,在这种专有权之外的部分则处于公有领域—通常是指没有被著作权法纳入保护范围的作品、保护期限届满的作品以及权利人已放弃的著作权。
  有2种情况软件可以进入到公共领域:1、软件超过了著作权保护的时限(作者有生之年及死亡后50年);2、作者声明软件放入公共领域(例如CC0、Unlicense等,作者通过对特定作品声明,在法律允许的最大范围内,放弃其在该作品上的全部著作权和邻接权,将作品贡献于公共领域)。

关于GPL的传染性

问:用GPL的编译器编译代码,该代码必须用GPL吗?

  GPL的传染是基于“衍生作品”的。“如何证明不是衍生作品” 唯一被认可的方式是建立 address space boundary。被承认的 ASD 包括:
  (1)基于 MMU 的内存空间隔离(进程隔离,用户态,内核态隔离)。
  (2)程序、数据隔离。比如 GCC 不会感染被编译的源文件。
  (3)虚拟机隔离。两种语言并不使用同样的 IP(instruction counter)。比如 Lua 虚拟机和其上的 Lua 代码,JVM 和 Java byte code。VM 使用硬件的 IP,而 byte code 采用 VM 提供的虚拟 IP。Byte code 到 VM 之间的控制权切换并不是简单的 IP 附值。

问:用GPL的编译器编译后的代码,需要遵循什么样的许可要求?

  这须要检查编译器生成的可执行代码a的源码A是在哪一种开源许可证下,例如:A在Apache-2.0下,它要求其源码和可执行代码都要添加修改声明。有少数的开源许可证对可执行代码没有要求,如MPL-2.0。

问:我有参与另外一个开源项目叫ST,LICENSE是MPL或者GPLv2。有个人给ST提了Patch,但看起来是从glibc中拷贝的一段代码,glibc是LGPL。请问这个Patch有违反glibc的协议么?

  • Patch:https://github.com/ossrs/state-threads/pull/25
  • Glibc的代码:https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/riscv/setjmp.S;h=0b92016b311b11aa9eeb62b38c670a262f1924c9;hb=1d9764aba8c00754fbf8299e48afbe222245ee3e
  • ST的授权:https://github.com/ossrs/srs/wiki/LicenseMixing#state-threads
  • GLIBC: https://en.wikipedia.org/wiki/Glibc

  如果patch的代码是复制glibc(而非调用),ST可以合并该patch,但合并后的ST须要遵循GPLv2+(只能选择双重许可中的GPLv2+来分发后续版本)。原因:ST采用双重授权,后续版本可以采用MPL或GPLv2+中任一许可证授权,glibc采用LGPL-2.1+授权,LGPLv2.1 允许把代码重新按照 GPLv2 及新版本发布,因此合并该patch的后续版本只能选择GPLv2+.

问:我们要开源一个Linux内核工具,其中用到了GPL的开源项目。使用木兰协议的哪一个版本比较合适?华为的欧拉是基于Linux内核项目,为什么可以用木兰?

  Linux内核的GPL传染性有个特例,可以通过系统调用的方式隔离,这是因为Linux 内核的作者 Linus Torvalds 在Linux内核源码文件中澄清了普通系统调用为非 GPL 的作用范围。这个“Linux内核工具”使用的GPL组件如果不属于上述情况,须要证明该工具不是GPL组件的衍生作品,否则只能用GPL,因为GPL还没有兼容木兰协议。

关于木兰宽松开源许可证

问:木兰宽松许可证,第2版(Mulan PSL v2)与业界主流许可证兼容情况如何?

  许可证的兼容性评判并无统一标准。我们从Mulan PSL v2的条款及目的出发,认为Mulan PSL v2与BSD类许可证类似,兼容性很好。BSD、MIT类宽松许可证兼容Mulan PSL v2许可证;Mulan PSL v2兼容Apache License v2.0、L/GPLv2、L/GPLv3等许可证。即,许可在BSD、MIT类许可证下的代码可以贡献到Mulan PSL v2的项目中,许可在Mulan PSL v2下的代码可以贡献到Apache License V2.0、L/GPLv2或L/GPLv3等的项目中。
  注意,许可证A兼容许可证B(A许可证是B许可证 Compatible)是指,A授权的作品与B授权的作品经过修改或合并,可以使用B对作品的整体进行授权。兼容性是有方向的,A兼容B,但B不一定兼容A。

问:一个软件用Apache license,直接替换成MulanPSL v2可以吗?

  如果这个软件没有其他贡献者,软件的作者可以直接将许可证由Apache替换为MulanPSL v2;
  如果软件有其他贡献者,需要征得所有贡献者同意,软件的作者才能将软件的许可证由Apache替换为MulanPSL v2;
  如果贡献者修改软件或者将软件集成到自己项目中,可以使用MulanPSL v2对衍生软件的整体进行授权(因为Apache组合兼容MulanPSL v2),但需要满足衍生软件中原Apache授权部分仍然遵循Apache的约束。

问:Mulan PSL v2通过OSI认证的意义?

  2020年2 月 14 日,开源促进会(OSI,Open Source Initiative)将木兰开源许可证第二版(MulanPSL v2)批准为“国际类别(International)”开源许可证,同时OSI 许可证审查委员会表示“中文版开源许可证可以鼓励中国社区参与开源,同时也是对已批准许可证列表的宝贵补充”。
  木兰许可正式成为一个国际化开源软件许可证。这意味着中国现在拥有了具有国际通用性、可被任一国际开源基金会或开源社区支持采用,并为任一开源项目提供服务的开源许可证。,这是中国开源社区对国际开源社区的贡献。而这也正如 OSI 所言,将会极大地鼓励华人开发者参与开源。另一方面,木兰协议是首个由中国开源产业界联合编制并通过 OSI 认证的开源软件许可证,这标志着我国开源界立足中国推进开源取得的进展,加强了我们持续推进开源的信心。

问:木兰许可证的取名由来?

  《木兰辞》有言:万里赴戎机,关山度若飞。翱翔着翻越关隘和山岭,或许这正是木兰协议团队当时以“木兰”为名的原因。

问:木兰许可证制定的时代背景?

  国内此前也有一批个人/公司发起自己的“国产开源协议”,但是并没有像木兰推出时引起的轰动,纠其原因主要有两点,一是木兰协议的出身背景,二是国际形势使然。
  木兰协议作为国家重点研发计划“云计算和大数据开源社区生态系统”的子任务,由北京大学牵头,依托全国信标委云计算标准工作组和中国开源云联盟,联合国内开源生态圈产学研各界优势团队、开源社区以及拥有丰富知识产权相关经验的众多律师,共同研制而成。
  国际形势方面,主要关注当时两大引爆事件:

  • 全球最大的开源软件基金会 ASF(Apache 软件基金会)的管理办法中明确说明其遵循美国出口法律,所以它旗下的所有项目亦受到美国出口法律的管制。而 ASF 旗下开源项目的名单中有许多耳熟能详的项目,比如 Kafka、Solr、Hadoop 与 Spark 等;
  • 全球最大源码托管平台 GitHub 表示:GitHub.com、GitHub Enterprise Server 以及您上传到任一产品的信息可能受美国出口管制法律的约束,包括美国出口管理条例(EAR)。并且实际上其已经对古巴与朝鲜等地实施限制。

  消息一出,国际国内开源界议论纷纷,关于开源生态如何自立,做到在逼不得已无法与国际接轨的情况下能够健康发展的措施也被提上议程。于是我们看到华为在加快国产开源操作系统鸿蒙的研发,看到国内第一个开源软件基金会在紧急筹备,也看到了第一个国产开源协议木兰的诞生。

问:制定木兰许可证面临的主要困难和挑战?

  MulanPSL v2完成了申请与认证的过程,需要有大量的前期准备工作。首先,木兰许可证的制定必须建立在对现有开源许可证的充分理解之上,而对现有开源许可证的准确分析是比较困难且耗时的,北大、西南大学与中科院软件所等参与协议制定的老师与同学为此贡献了很多时间和精力。其次,木兰许可证制定的初衷是推出一个便于开发者理解、保护开发者利益且广泛使用的中国本土开源许可证,因此如何充分保护开发者利益以及如何突显中国特色也是制定木兰许可证的难点。国内企业的法务专家为该项目提供了非常好的咨询。
  木兰许可证面临的另一大挑战是,制定木兰协议原本是希望它能服务于广大开源社区和开源项目,包括国内与国际,这不仅需要首先获得中文社区的认同,还需要与国际接轨,否则将难以获得普遍信任。而这也正是此次进行 OSI 认证的一大动力。
  此外,开发者还普遍关注木兰许可证与其它知名开源软件协议的兼容性,而这需要进一步与相关开源软件基金会沟通确认。

问: OSI 创始人 BrucePerens 曾表示,目前只需要 AGPLv3、LGPLv3 与 Apache v2 这三个必要的开源协议就已足够(虽然 Bruce 已经退出 OSI),那木兰为什么能通过 OSI 认证?

答:Mulan PSL v2 能被 OSI 认证通过取决于几点:
  首先,木兰协议团队在提交申请之前做了非常细致的工作,有大量贡献者的付出,包括法律专家和技术专家,以及国家电子标准研究院的有力支撑。
  其次,开源社区和国家与个人身份在这其中也促成了此次认证。OSI 社区是开放的,邮件列表中并没有对 Mulan PSL 的本质(是否满足开源十条定义)提出质疑,相反,大家对如何完善该许可证给出了很好的建议,木兰协议团队也正是基于这些建议,对 Mulan PSL v1 进行修订,以更好符合国际化标准。
  此外,中国目前在全球的经济发展情况及地位让全世界人民对我们中国的需求有一份尊重。且木兰许可证牵头人周明辉作为北京大学教授的身份,也让 OSI 社区对协议的质量多了一份信任。

问:木兰许可证与现有其他许可证协议相比,有什么优势?

  与众多开源协议相比,Mulan PSL 的主要优势在于更完善的专利授权。具体来说,Mulan PSL 在其它协议的基础上进行了以下优化:

  • 许可证内容以中英文双语表述,中英文版本具有同等法律效力,方便更多的开源参与者阅读使用,简化了中国使用者进行法律解释时的复杂度。
  • 明确授予用户永久性、全球性、免费的、非独占的、不可撤销的版权和专利许可,并针对目前专利联盟存在的互诉漏洞问题,明确规定禁止“贡献者”或“关联实体”直接或间接地(通过代理、专利被许可人或受让人)进行专利诉讼或其它维权行动,否则终止专利授权。
  • 明确不提供对“贡献者”的商品名称、商标、服务标志等的商标许可,保护“贡献者”的切身利益。
  • 木兰协议经技术专家和法律专家共同修订,在明确合同双方行为约束的前提下尽可能地精简条款、优化表述,降低产生法律纠纷的风险。
      正是这些更加明确和精简的特性以及中文特色,触动了 OSI,最终将木兰协议加入认证列表。

问:Mulan PSL v2与Mulan PSL v 1的差异及改进?MulanPSL v2 版本通过 OSI 认证,是否意味着 v1 本身就不符合开源定义,在开源生态中不具有实际意义?

  Mulan PSL v2 与 Mulan PSL v1 本质上没有区别,Mulan PSL v2 是在 Mulan PSL v1 基础上的进一步完善。认证过程中,OSI 及社区其他专家并没有表示 Mulan PSL v1 不符合开源定义,仅对规范语言和部分英文表述问题给出了相关建议。Mulan PSL v2相较于Mulan PSL v 1,有如下特点:

  • 增加“语言”条款,声明了“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本任何冲突不一致,以中文版为准。
  • 为适应一些国家对担保免责条款的显著性要求,MulanPSL v2 在英文版中采用大写突显担保免责条款。
  • 为了减少英文表述产生的歧义问题和语言习惯问题,MulanPSL v2 修订了“软件”(Software)和“关联实体”(Affiliates)的定义,以及“授予专利许可”(Grant of Patent License)条款的相关表述。

问:Mulan PSL 采用中英双语,但两种语言的解释可能冲突从而存在潜在风险,木兰如何解决两种语言的解释冲突问题?

  Mulan PSL v2,该版本增加了语言条款,声明中文为规范语言,也就是在与英文版本发生冲突时以中文为准。

问:木兰宽松许可证的发展历史及应用现状?

  开源(Open Source)是人类在互联网发展进程中探索出的一种面向全球的大规模协作生产方式,它以开放共享、合作共赢为宗旨,有效地推进了全球化进程。当前,我国开发者和企业参与开源的热情不断高涨,开源产业也逐步完善。然而,我国面向开源的环境、技术、人才、生态等方面还存在诸多问题。推动国内外开源的交流与合作,促进产学研用结合,保护广大开源参与者的利益,造就有影响力、可持续发展的开源生态系统,是相关行业当前的一项重要任务。
  开源许可证是对开源软件的使用、复制、修改和分发等行为进行规范和约束的一种具有法律效力的格式合同,是开源运动的基石。目前,经开源促进会(OSI)认证的开源软件许可证共有 80 多个,它们都由国外或国际组织机构使用英文发布。对于来自世界各地的广大开源参与者而言,现有许可证中的条款的表述比较晦涩,容易因理解有误而违约。同时,很多许可证对被许可方责任和义务的表述不够完善,容易导致难以解决的法律纠纷。此外,当前国际形势需要来自全球不同地方的更多声音和力量来倡导开源。
  基于以上考虑,北京大学作为国家重点研发计划“云计算和大数据开源社区生态系统”的子任务牵头单位,依托全国信标委云计算标准工作组和中国开源云联盟,联合国内开源生态圈产学研各界优势团队、开源社区以及拥有丰富知识产权相关经验的众多律师,在对现有主流开源协议全面分析的基础上,共同起草、修订并发布了木兰系列开源许可证。《木兰宽松许可证,第 1 版》(Mulan PSL v1)于2019年8月5日在中国开源云联盟官网正式上线,码云 Gitee平台率先支持Mulan PSL v1。随后,Mulan PSL v1得到Linux基金会和开源中国在内的多个国内外代表性开源社区的支持,以及包括华为方舟编译器在内的超过1700个开源项目中的落地应用,同时 Tweet 上也有不少评论表明国外个人开发者对木兰协议的喜爱与支持。
  为了增强国内国际开发者对木兰宽松许可证的信任,促进木兰宽松许可证的广泛应用,2019年12月3日,木兰协议牵头人周明辉向开源促进会(OSI)提出Mulan PSL v1的认证申请。OSI 社区在邮件列表中对木兰展开了公开讨论,主要集中在两点:一是Mulan PSL v1 与现有协议之间的区别,如 BSD+patents;二是多语言问题,Mulan PSL 采用中英双语,但两种语言的解释可能冲突从而存在潜在风险。在与OSI社区深入讨论的同时,木兰协议团队针对专家提到的建议,对Mulan PSL v1进行了多轮迭代修改,在Mulan PSL v2中增加了语言条款,声明中文为规范语言,并修改了可能引起歧义的表述,调整英文版语言条款和免责条款的格式,并于2019年12月30日和2020年1月6日,先后两次向开源促进会(OSI)提交修改后的Mulan PSL v2认证申请。2020年2月11日,OSI 许可证审查委员会发出邮件,建议将 Mulan PSL v2 批准为“国际类别(International)”开源许可证,同时表示“中文版开源许可证可以鼓励中国社区参与开源,同时也是对已批准许可证列表的宝贵补充”。2020年2月14日,OSI 董事会正式发出邮件,批准《木兰宽松许可证,第2版》(Mulan PSL v2)为国际类别开源许可证(International licenses)。
  《木兰宽松许可证,第2版》(Mulan PSL v2)通过OSI认证,成为全球首个我国主导的中英双语开源许可证,打破国内许可证方面的空白,成为中国开源项目在世界开源领域参与互动与法律纠纷方面的重要基石。在此之前,《木兰宽松许可证,第 2 版》(Mulan PSL v2)已于2020年2月13日在中国开源云联盟官网正式上线,而日本开源组织OSGJ(Open Source Group Japan)也于2021年3月24日翻译并发布了木兰宽松许可证日文版。Mulan PSL v2上线期间正值抗击新冠肺炎疫情的关键时期,自上线以来,已得到包括“疫战2020疫情防护语料库”、“出入人员登记系统”等疫情防控信息化开源项目的支持采用,为抗击新冠肺炎疫情的信息化工作提供支持保障。截至2022年6月,木兰宽松许可证已得到Linux基金会、Apache基金会、华为、阿里、开源中国、CSDN等开源组织、公司和代码托管平台的支持,已有10万余项开源代码仓应用木兰宽松许可证,项目类型涵盖包括云计算、大数据、人工智能、开发框架等应用软件,以及操作系统、数据库等基础软件和中间件。

问:木兰宽松许可证申请OSI的认证过程?

木兰认证过程 - 时间轴

问:木兰发展前景?

  木兰也只是个开源许可证,核心产出还需要体现在开源项目和技术上,以及相关的开源生态上。木兰相关生态的一些规划主要有两点:
  - 基于木兰开源社区,继续推广木兰协议的使用;
  - 加强与其它国际开源社区沟通合作,真正将木兰协议推向国际化;同时以此为契机,将继续推进开源开发技术和开源治理策略的发展。

常见开源软件的授权与使用

Linux kernel的使用?

答:Linux内核采用GPL-2.0授权,基于(全部或部分)Linux内核代码的程序(与linux内核代码运行在同个进程地址空间)须要根据GPL-2.0开源。但有一种例外情况,即如果程序是通过系统调用的方式使用了Linux内核代码,则该程序不需要根据GPL-2.0开源(https://docs.kernel.org/process/license-rules.html)。然而,该例外仅针对Linux内核(Linus在Linux内核的COPYING文件中作出的澄清),不包括其他根据GPL-2.0授权的软件。
image

mySQL的使用?

答:mySQL采用双重授权(dual license)(https://dev.mysql.com/doc/refman/8.0/en/what-is-mysql.html)。MySQL社区版使用GPL-2.0 授权,意味着任何人都可以使用和修改软件,而无需支付任何费用,您还可以研究源代码并更改它以满足您的需要。如果您对GPL不满意,或者需要将MySQL代码嵌入到一个商业应用程序中,您可以购买一个商业许可证版本(http://www.mysql.com/company/legal/licensing/oem/)。

mongDB的使用?

答:MongoDB 社区版在2018年10月16日之后发布的所有版本采用SSPL授权;MongoDB社区版在2018年10月16日之前发布的版本仍采用AGPL-3.0授权(https://www.mongodb.com/community/licensing)。
  SSPL-1.0与AGPL-3.0都规定,如果使用MongoDB软件或使用基于MongoDB源码制作的软件,通过交互的方式为第三方提供服务,则必须根据其授权条款,通过网络下载向每个人免费提供该服务源代码(即MongoDB软件或基于MongoDB源码制作的软件)。
  不同的是,SSPL-1.0的13条还规定,向第三方提供服务,当该服务的价值全部或主要来源于MongoDB(或基于MongoDB制作的软件),或者该服务是为第三方使用MongoDB(或基于MongoDB制作的软件)提供帮助,那么该服务的源码也须要根据SSPL-1.0免费提供(https://www.mongodb.com/licensing/server-side-public-license)。
  也就是说,AGPL-3.0对提供SAAS的程序具有免费公开源码的限制性,而SSPL-1.0对提供SAAS、PAAS、IAAS的程序都有免费公开源码的限制性(只要该服务的价值主要源于SSPL-1.0授权的软件)。
  值得注意的是,SSPL-1.0未经OSI认证通过。

常见开源许可证的官网FQA?

Copyright (c) 2022 osslab-pku, [email protected]. All rights reserved.
OpenSourceLicense-repo is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.