为什么开源软件会存在许可证,许可证的起源与产生目的是为了解决什么问题?许可证的定义又是怎样的?什么是Copyleft,与Copyright有何区别?开源软件常见的许可证有哪些?这些许可证都有什么特点?接下来博主就逐一介绍。
1. 开源许可证的定义
开源许可证是一种法律协议,它规定了软件代码可以被如何使用、修改和分发。其中,著作权是指对于软件代码的创作者所拥有的法律权利,包括复制、发布、演绎等权利。分发是指分发指软件作者向他人提供软件源代码或二进制代码或二者的副本。
著作权法默认禁止共享,没有许可证的软件就不能免费地使用、修改、共享。
在开源许可证中,通常会涉及到著作权许可授权的问题。这些许可协议可以分为两大类:强制性许可证和非强制性许可证。强制性许可证要求使用该软件的用户必须遵守特定的协议,否则将面临诉讼风险。而非强制性许可证则允许用户根据自己的需要使用、修改和分发软件。
开源许可证存在的法律特性:合同性质和知识产权性质(著作权、专利权、商标权)
常见的开源许可证包括GNU通用公共许可证(GPL)、MIT许可证、Apache许可证等。每种许可证都有自己的特点和适用范围,使用者需要根据自己的需求选择合适的许可证。
2. 开源许可证的起源
开源许可证的起源可以追溯到20世纪90年代早期,当时自由软件运动和Linux系统的兴起促进了开源软件的发展。1991年,GNU通用公共许可证(GPL)首次发布,这是第一个被广泛采用的开源许可证之一。GPL被设计为保障软件自由和开放性,它要求任何使用或修改受保护软件的人必须在其发布时公开代码,并且不得限制代码的再分发。
1998年,开源软件运动的领袖Eric Raymond和Bruce Perens共同创立了Open Source Initiative(OSI),以推广和支持开源软件的发展。OSI创建了一个开源定义(Open Source Definition),并认证了符合该定义的许可证。这些许可证包括GPL、BSD、MIT、Apache等。
在自由软件运动之后,出现了大量优秀的开源软件,而商业软件开发商无情的窃取着革命的果实,商业软件在开源软件的基础上开发新的软件,实际上基于著作权法其开发的软件属于衍生作品,该作品依然为著作权法所保护,不同的是,商业软件开发商所开发的衍生软件一般不会再以开源软件的形式出现。于是就产生了接下来的著佐权。
3. 著佐权(Copyleft)
著佐权是一个由自由软件运动所发展的概念,是一种利用现有著作权体制来保护所有用户和二次开发者的自由的授权方式。在自由软件授权方式中增加著佐权条款之后,该自由软件除了允许使用者自由使用、散布、修改之外,著佐权许可证更要求使用者修改后的衍生作品必须要以同等的授权方式释出以回馈社会。
著佐权(Copyleft)机制与著作权(Copyright)相对应
著佐权,是弥补著作权(Copyright,复制传播的权利)不足的版权授权。它的授权方式与常用的版权授权方式并不相同。另有译为反版权”、版权属左”、左版”、版权所无”、版权左派”,或版责”,这些译名可能有其意义上的偏差,比较贴切的翻译应该是版责”或者左版”,使用版责”(即:传播的责任)因为 Copyleft 虽然与常见的著作权模式不同,但不反对著作权的基本体制。
4. 开源许可证两大目的
- 保护开源软件贡献者: 规范受著作权保护的软件的使用或者分发行为;
- 保护开源软件使用者:使用者按照许可证条款使用开源软件,避免因侵犯贡献者的利益产生纠纷。
5. 开源许可证认证机构及分类
5.1. 认证机构
-
OSI: OSI(Open Source Initiative,开放源代码促进会)是一个旨在推广开源软件的非营利组织,它制定了一套开源软件的定义和准则,像BSD、MIT和Apache协议就被OSI收录。
OSI根据OSD(开放源代码定义)对开源许可证进行审核。
-
FSF:FSF(Free Software Foundation)也是一个非营利组织,致力于推广自由软件理念,并维护用户权益;
FSF根据FSD(自由软件定义)对开源许可证进行审核
-
SPDX:SPDX(Software Package Data Exchange)是一个旨在标准化软件组件和许可证信息的组织。
5.2. 分类
-
著佐权型许可证:著佐权许可证更要求使用者修改后的衍生作品必须要以同等的授权方式(除非许可证或者版权声明里面例外条款所规定的外)释出以回馈社会。
- 强著佐权型许可证:GPL(General Public License)衍生作品也需要以GPL许可证发布,不允许修改后和衍生的代码作为闭源商业软件发布和销售
- 弱著佐权型许可证:LGPL(Lesser General Public License)比GPL许可证宽松,允许商业软件通过类库引用方式使用LGPL类库而不需要开源商业软件的代码,但是如果修改LGPL许可证的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL许可证。
一般将使用著佐权型许可证的开源软件称之为Copyleft软件
-
宽松型许可证:宽松型许可证是一种保证使用、修改、再分发的自由,同时授权将衍生软件专有化的许可证。
宽松型许可证限制较少,通常仅要求开源软件使用者保留指定的声明信息。Apache许可证和BSD许可证就是宽松型许可证,允许使用者在开源代码基础上进行二次开发并闭源销售,对商业十分友好。
6. 八大主流开源许可证
6.1. 强著佐权型许可证 GPL 2.0(GNU General Public License 2.0)
- 分发GPLv2软件或其衍生作品时,必须提供源代码或者提供获取源代码的途径;
- 任何基于GPLv2软件的衍生作品必须在GPLv2下发布,确保衍生作品也保持开源;
- GPLv2具有较强的copyleft特性,与其他许可证的兼容性有限。例如,它与后来的GPLv3在某些条款上不兼容,除非明确指出“GPLv2或任何后来的版本”。
6.2. 强著佐权型许可证 GPL 3.0(GNU General Public License 3.0)
- 在分发GPLv3许可的软件时,必须提供源代码或者提供获取源代码的途径;
- GPLv3明确禁止任何尝试使用软件专利来限制其他用户运行和分发软件的行为;
- GPLv3包含特定的条款来防止“数字版权管理”(DRM)技术限制GPLv3软件的使用。要求分发有硬件限制的GPL软件时,必须提供必要的“安装信息”,以便用户能够运行软件的修改版本。
6.3. 著佐权型许可证 AGPL 3.0(Affero General Public License 3.0)
- 为了Copyleft条款能应用于在网络上运行的应用程式(如Web应用),从而避免有人以应用服务提供商方式逃避GNU通用公众特许条款;
- 如果软件通过网络作为服务提供给用户,服务提供者必须提供软件的源代码。
6.4. 弱著佐权型许可证 LGPL 3.0(Lesser General Public License LGPL 3.0)
- 是GNU为了得到更多的甚至是商用软件开发商的支持而提出的;
- 允许商业软件通过类库引用方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售;
- 但是如果修改LGPL下的软件代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL许可证。
6.5. 弱著佐权型许可证 MPL(The Mozilla Public License)
Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益,于是申请了MPL许可证:
- MPL允许免费重发布、免费修改,但要求修改后的代码著作权权归软件的创建者;
- 对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。
6.6. 宽松型型许可证 Apache License
由Apache软件基金会发布,主要特点如下:
- 复制或发布衍生作品时,需要提供许可证副本,修改声明,先前作品的著作权、专利、商标的权属声明等文件。对修改过的文件进行声明;
- 使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
6.7. 宽松型型许可证 BSD(Berkly Software Distribution)
- BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售;
- 二次发布时需要保留原来代码的著作权声明和许可证原文以及免责声明;
- 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
6.8. 宽松型型许可证 MIT(Massachusetts Institute of Technology)
- 作者只想保留著作权,无其他任何限制。
- 必须在你的发行版里包含原许可证的声明,无论你是以二进制发布的还是以源代码发布的。
见到使用了 Apache、BSD、MIT协议类型的开源软件,闭上眼选就对了!(哈哈,当然是开玩笑了:也要考虑下软件的活跃度,以及有无公开高危漏洞因素)
7. 参考
[1] 迈向开源世界:如何正确看待开源软件,避免六大误区
[2] 最高人民法院知识产权法庭裁判要旨摘要(2023)
推荐阅读:
- 迈向开源世界:如何正确看待开源软件,避免六大误区
- 供应链安全项目in-toto开源框架详解
- 从SLSA看软件供应链面临哪些威胁及对应解决方案
- 解读 | Synopsys发布2024年开源安全和风险分析报告OSSRA
- 剖析Google SLSA供应链完整性框架
- 「 网络安全常用术语解读 」软件物料清单SBOM详解
- 「 网络安全常用术语解读 」SBOM主流格式CycloneDX详解
- 「 网络安全常用术语解读 」SBOM主流格式SPDX详解
- 「 网络安全常用术语解读 」SBOM主流格式CycloneDX详解
- 「 网络安全常用术语解读 」软件物料清单SBOM详解
- 「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐