第 3 小节:认识开源许可证
一、什么是开源许可证(License)
开源许可证是一种法律许可。通过它,版权拥有人明确允许,用户可以免费地使用、修改、共享版权软件。
当你对你的产品使用开源许可证时,并不意味着你放弃了任何权利,你依然对其拥有原著作权。开源许可证只是授予他们于特定权利来使用你的产品。
版权法默认禁止共享, 也就是说,没有许可证的软件,就等同于保留版权 。虽然开源了,但用户只能查看源码,无法使用,否则就会侵犯版权。所以如果选择开源一款软件,必须明确地授予用户开源许可证。
二、开源许可证的种类
目前,国际公认的开源许可证共有 100 多种。它们的共同特征是,都允许用户免费地使用、修改、共享源码,但是都有各自的使用条件。
如果一种开源许可证没有任何使用条件,连保留作者信息都不需要,那么就等同于放弃版权了。这时,软件可以直接声明进入「公共领域」(public domain)。
根据使用条件的不同,开源许可证分成两大类。
- 宽松式(permissive)许可证
- Copyleft(许可复制权) 许可证
主流开源许可证如下(版权强度由高到低):
宽松式(permissive)许可证 | Copyleft(许可复制权) 许可证 |
---|---|
BSD (Berkeley Software Distribution) MIT Apache 2 |
Affero GPL (AGPL) GPL Lesser GPL (LGPL) Mozilla Public License (MPL) Eclipse Public License (EPL) Common Development and Distribution License (CDDL) |
三、主流的开源许可证简介
1.宽松式许可证
1.1 特点
宽松式许可证(permissive license)是最基本的类型,对用户几乎没有限制。用户可以修改代码后闭源。
它有三个基本特点。
(1)没有使用限制
用户可以使用代码做任何想做的事情。
(2)没有担保
用户自担风险。
(3)披露要求(notice requirement)
用户必须披露原始作者/贡献者。
1.2 常见许可证
常见的宽松式许可证有四种。它们都允许用户任意使用代码,区别在于要求用户遵守的条件不同。
(1)BSD(二条款版)
分发软件时,必须保留原始的许可证声明。
(2) BSD(三条款版)
BSD License 与其他自由软件 License 相比,如 GPL,限制更少。但是请注意到 BSD License 两种版本之间的差别:New BSD License/Modified BSD License 和 Simplified BSD License/FreeBSD License。它们两者都是与 GPL 兼容的自由软件 License。
New BSD License(三条款版)可以用于任何作为版权声明和保证许可的免责声明的目的,可以通过无限长的再分发来得以维持,也就是说如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。它还有一个特殊限制条款:不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
New BSD License 和 Simplified BSD License 的主要区别是,后者忽略了非认可条款。
(3)MIT
MIT 是和 BSD 一样宽松的许可协议,作者只想保留版权,而无任何其他限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。
- 你可以使用,复制和修改软件
- 你可以免费使用软件或出售
- 唯一的限制是,它是必须附有 MIT 授权协议
商业软件可以使用,也可以修改 MIT 协议的代码,甚至可以出售 MIT 协议的代码。
(4)Apache
Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。该协议和 BSD 类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布 (作为开源或商业软件)。
需要满足的条件:
- 需要给代码的用户一份 Apache License。
- 如果你修改了代码,需要在被修改的文件中说明。
- 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
- 如果再发布的产品中包含一个 Notice 文件,则在 Notice 文件中需要带有 Apache License。你可以在 Notice 中增加自己的许可,但不可以表现为对 Apache License 构成更改。
Apache Licence 也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
商业软件可以使用,也可以修改使用 Apache 协议的代码。
2.Copyleft 许可证
2.1 Copyleft 的含义
Copyleft 是 理查德·斯托曼 发明的一个词,作为 Copyright(版权)的反义词。
Copyright 直译是「复制权」,这是版权制度的核心,意为不经许可,用户无权复制。作为反义词,Copyleft 的含义是不经许可,用户可以随意复制。
但是,它带有前提条件,比宽松式许可证的限制要多。
- 如果分发二进制格式,必须提供源码
- 修改后的源码,必须与修改前保持许可证一致
- 不得在原始许可证以外,附加其他限制
上面三个条件的核心就是:修改后的 Copyleft 代码不得闭源。
2.2 常见许可证
常见的 Copyleft 许可证也有四种(对用户的限制从最强到最弱排序)。
(1)Affero GPL (AGPL)
如果云服务(即 SAAS)用到的代码是该许可证,那么云服务的代码也必须开源。
(2)GPL
GNU General Public License(GPL)可能是开源项目最常用的许可证。GPL 赋予和保证了开源项目开发者广泛的权利。基本上,它允许用户合法复制,分发和修改软件。这意味着你可以:
- 复制软件
复制软件到自己的服务器,客户端的服务器,你自己的电脑,几乎任何你想要的地方,而且没有数量限制。
- 发布软件
发布你想要的软件,例如,在你的网站提供下载链接,刻成光盘,打印出来等等。
- 收取费用
如果你想在向别人提供软件时收费,如设置在别人的网站上或者其他用途时。GPL 允许你这么做,但是你必须给客户提供一个 GPL 副本,告诉他们可以在其他地方得到免费版本。当然最好在此之前,告诉客户,你为什么收费。
- 可以任意修改
如果你想添加或删除功能,没问题。如果想在其他项目中使用部分代码,也是可以的,但是唯一的限制是此项目也必须按 GPL 发布。
商业软件不能使用 GPL 协议的代码。
(3)LGPL
GNU Lesser General Public License(LGPL)。比起 GPL 它授予的权限较少。一般来说,LGPL 比较适合连接到非 GPL 或者非开源文件的库文件。由于 GPL 的规定,使用到部分 GPL 代码的软件,必须也使用 GPL,开发人员不能使用 GPL 来开发收费软件或者专有软件。LGPL 则没有这方面的要求,不要求使用与部分代码相同的 License。
商业软件可以使用,但不能修改 LGPL 协议的代码。
如果项目采用动态链接调用该许可证的库,项目可以不用开源。比如一个产品,里面的有一部分功能使用了该许可证的库,则该产品可以将该许可证的库的产品封装成一个动态链接调用的接口,供外部调用,该封装的部分,必须开源。但是该产品的其他部分,仅仅是调用该封装而已,就不要求开源了。
(4)Mozilla(MPL)
MPL 协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件的所有代码的版权都集中在开发发起人的手中。但 MPL 是允许修改,无偿使用的。MPL 软件对链接没有要求。
商业软件可以使用,也可以修改 MPL 协议的代码,但修改后的代码版权归软件的发起者。
(5)EPL
一个与 CPL 相类似的许可证,任何扩展自 Eclipse 源码的代码也必须是开源的。
(6)CDDL
CDDL(Common Development and Distribution License,通用开发与销售许可)开源协议,是 MPL(Mozilla Public License)的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。
商业软件可以使用,也可以修改 CDDL 协议的代码。
3.其它的重要许可证
3.1 Creative Commons
Creative Commons(CC)的许可证不太开放源代码授权,它们通常用于设计项目。 CC 许可证有着宽广的定义,每个定义都会授予一定的权利。它有四个基本部分,可以单独或者组合使用。下面是部分概述:
- 署名
作者必须是作品的原创者。除此之外,作品可以修改,分发,复制和以其他方式使用。
- 相同方式共享
工作可以修改,分发等等,但必须在一个许可证下。
- 非商业
可以修改,分发等,但不用于商业目的。关于什么是「商业」,说法比较含糊(没有提供明确的定义),因此您可能需要在自己的项目中澄清这一点。
- 禁止修改
这意味着您可以复制和分发许可工作,但你不能以任何方式修改,或在原有的基础开发。
商业软件的使用要遵从 CC 协议的具体规定,最严格的许可证将是「署名,非商业,不能修改」的授权。这意味着你可以自由共享的工作,但不能改变它,你必须把它归功于原创者。
3.2 Common Public License 1.0
CPL 是 IBM 提出的开源协议,主要用于 IBM 或跟 IBM 相关的开源软件/项目中(例如,Eclipse、Open Laszlo 等)。已被 EPL 替代。
Common 许可证有一些细节性的规定值得参考:
明确了专利授权。一般的开源软件都明确源代码的版权人将自己的修改权、复制权等版权权利向公众许可,但保留署名权,而 Common 许可证在此基础上还明确假如源代码中含有专利权,源代码专利权人将复制、使用的专有权利向公众许可。
规定可以将源代码及修改过的源代码与其他类型的不受本许可证约束的代码结合,以新产品的形式发布,只要其中经该许可证获得的源代码及修改过的源代码能按该许可证的要求发布即可。
细化了该许可证终止的情形,包括发生专利侵权诉讼。
明确了一个独立承担责任的原则,就是假如按该许可证使用源代码的使用者将获得的源代码应用于商业使用,那么他就要对在商业应用中出现的由于使用该源代码程序而产生的侵权诉讼承担完全责任。这一条规定是比较特殊的,绝大多数开源软件许可证都不这么要求。
商业软件可以使用,也可以修改 Common 协议的代码,但要承担代码产生的侵权责任。
3.3 Mulan Permissive Software License v2 (MulanPSL - 2.0)
木兰宽松许可证是首个来自于中国的开源协议。其 v2 版通过开源促进会(OSI)认证,被批准为国际类别开源许可证,与 Apache 2.0 许可证兼容。
四、开源许可证的约束力
「许可证相当于开源社区的基本法,发展到今天,已经越来越有约束力了。」 — 北京大学法学院教授张平
待补充
五、开源许可证的法律效力
中国第一个关涉 GPL 协议的诉讼案件宣判((2018)京民终 471 号《二审判决书》),认可了 GPL 协议的法律效力,但对 GPL 协议约束的判断规则也存在争议。
待补充
六、怎么选择开源许可证?
可查看开源指北中 启动自己的开源项目/开源许可证的应用 部分
图源阮一峰:如何选择开源许可证:
参考资料
opensource.org:Licenses & Standards
Heather Meeker:Open source licensing: What every technologist should know
Heather Meeker:9 open source license management rules for startups
GitHub:Choose an open source license