Linux FAQ A
1 开源许可证
开源许可证(Open Source License)是开源软件生态系统的基础,可以促进软件的协同开发。
我们接触的开源软件一般都有对应的开源许可证对软件的使用、复制、修改和再发布进行限制。许可证即授权条款,开源许可证就是保证开源挼案件这些限制的法律文件,目的在于规范受著作权的软件的使用或者分发行为。
1.1 开源许可证分类
开源许可证大致分为两大类:宽松自由软件许可协议(Permissive Free Software Licence)和著佐权许可(Copyleft License)。此外,还有一类是知识共享协议(Creative Commons,CC),严格意义上说该协议并不能说是真正的开源协议。
1.1.1 宽松自由软件许可协议
宽松自由软件许可协议是一种对软件的转散发方式有最低需求的类型。
这种许可协议将不保证被使用软件的派生版会继续保持自由软件的形式。一些较广为人知的宽松自由软件许可协议条款包括了MIT许可证、BSD许可证等,可参考如下许可证:
- GNU 全权许可证
- Apache 许可证(Apache License)
- MIT许可协议(Massachusetts Institute of Technology, MIT),又称X11协议。
- BSD许可协议(Berkeley Software Distribution,BSD)
1.1.2 Copyleft License
Copyleft License是一种利用现有著作权体制来保障用户软件自由使用权利的许可方式,可以了解为允许他人使用、传播但加了一些少规则。
相关说明:与Copyleft相对的Copyright是指软件的版权和其它一切权利归软件作者所私有,用户只有使用权,没有其它如复制、重新修改发布等权利。常使用的方式为©2001~2020表示授权的使用年限。
Copyleft是一个让程序或其他作品自由的通用方法,并且要求该程序所有的修改及延伸版本也都必须保持自由。在自由软件许可证中增加Copyleft条款之后,该自由软件除了允许用户自由使用、散布、改作以外,Copyleft条款更要求作者所许可的人对改作后的派生作品要使用相同许可证授予作者,以保障其后续所有派生作品都能被任何人自由使用。常见的Copyleft许可证如下。
- GNU 通用公共许可证(GNU General Public License):典型的Copyleft许可证。
- GNU 宽通用公共许可证(GNU Lesser General Public License):非严格的Copyleft许可证。
- GNU Affero 通用公共许可证(GNU Affero General Public License):非严格的Copyleft许可证。
- Mozilla公共许可证(Mozilla Public License,MPL):非严格的Copyleft许可证。
1.1.3 两类许可证的对比
属性 | Permissive Free Software Licence | Copyleft License |
---|---|---|
限制他人对源代码的访问权 | 允许 | 不允许 |
是否具有保护伞且互惠的作用 | 不具有 | 具有 |
衍生软件能够变成商用 | 允许 | 不允许 |
1.1.4 知识共享协议
CC 协议种类繁多,每一种都授权特定的权利。
大多数的比较严格的 CC 协议会声明 “署名权,非商业用途,禁止衍生” 条款,这意味着你可以自由的分享这个作品,但你不能改变它和对其收费,而且必须声明作品的归属。这个许可协议非常的有用,它可以让你的作品传播出去,但又可以对作品的使用保留部分或完全的控制。最少限制的 CC 协议类型当属 “署名” 协议,这意味着只要人们能维护你的名誉,他们对你的作品怎么使用都行。
1.2 开源许可协议的详细说明和对比
1.2.1 主流开源许可认证
主流开源许协议有:GPL、MPL、LGPL、BSD、MIT、Apache License。
通过对开源许可认证/协议分类,已经对不同类型的开源许可认证有所了解。我们大致对开源许可认证有一个基础的了解,接下来我们会对每个协议进行详细的解释,并对不同的协议进行比较说明,更好的认识到不同协议的特征。通过开源协议的自由程度,可参考下图进行一个大致的梳理和了解。
1.2.2 GPL协议
本章节主要介绍GPL协议的概念、版本、协议特征、以及权利和义务。
概念
GPL是被广泛使用的自由软件许可证,给予了终端用户运行、学习、共享和修改软件的自由。是由自由软件基金会(FSF)公布的自由软件许可证。
版本变化
-
GPLv3:建议大多数软件使用该许可证, GPLv3 本身和 GPLv2 并不兼容,不过,大多数使用 GPLv2 发布的软件也允许使用 GPL 的以后版本。这样的话,你就能够按照 GPLv3 做合理的代码合并。如果需要了解 GNU 许可证 GNU 许可证之间的兼容性,请参看 GNU 许可证常见问题。
-
GPLv2:1991年6月发布。
-
GPLv1:1989年2月25日发布。
协议特点
严格的Copyleft类型许可证,必须保证开源,并且对于许可证有强制继承的要求。所以就形成