常用的开源协定
Table of Contents
1. 开源定义
- 自由再分发 。许可证不应该限制其他方出售或者分发该软件,当该软件作为包含多个不同源码程序的集成软件的一部分。许可证不应该要求专利费或其他销售费用。
- 源代码 。程序必须包含源代码,需要有完整的源代码和可编译的形式。程序的某一部分如果不是来自这份源代码,那必须有一个不需要费时费财的公共方式获得源代码或者从网络上下载过来。源代码需要以易修改的形式呈现。不能故意模糊源代码,也不能只发布预处理器或编译器的输出文件。
- 衍生作业 。许可证必须允许修改和衍生作业,需要像原来的许可证那样发布。
- 作者源代码的完整性 。仅当许可证允许使用源代码分发“补丁文件”以便在构建时修改程序时,许可证才可以限制源代码以修改的形式分发。 许可证必须明确允许分发由修改后的源代码构建的软件。许可证可能要求派生作品带有与原始软件不同的名称或版本号。
- 不歧视个人或团体 。许可证不能歧视任何个人或团体。
- 不歧视领域 。许可证不能限制任何人将程序用在某个特定的领域。例如,不能要求人们不可以把程序用在商业领域或者基因研究。
- 许可证的分发 。该程序所附带的权利必须适用于该程序再分配的所有人,而无需由分配方执行额外的许可。
- 许可证不能对一个产品特化 。附加到程序的权利不得取决于程序是特定软件分发的一部分。如果程序是从该分发中提取并在程序许可的条款中使用或分发的,则程序重新分发的所有各方应具有与原始软件分发相同的权限。
- 许可证不能限制其他软件 。许可证不得对与许可软件一起分发的其他软件施加限制。例如,许可证不得坚持在同一介质上分发的所有其他程序必须是开源软件。
- 许可证必须是技术中立的 。许可证的提供不得基于任何单独的技术或界面风格。
2. GPL 家族
2.1. GPL 协定
GNU 组织的 general public licence 协定,是一种 copyleft 许可类型 ( 主要目的是跟商业协定 copyright 即著作权,唱反调 )。GPL 授予程序接受人以下权利:
- 基于任何目的,按你的意愿运行软件的自由 ( 自由之零 )。
- 学习软件如何工作的自由,按你的意愿修改软件以符合你的计算的自由 ( 自由之一 )。可访问源代码是此项自由的先决条件。
- 分发软件副本的自由,因此你可以帮助你的好友 ( 自由之二 )。
- 将你修改过的软件版本再分发给其他人的自由 ( 自由之三 )。这样可以让整个社区有机会共享你对软件的改动。可访问源代码是此项自由的先决条件
任何软件只要遵循 GPL 协定,那么软件的版权属于 GPL,给予了终端用户 运行、学习、共享和修改软件 的自由。
任何程序只要内置了 GPL 代码,那么该程序必须遵循 GPL 协定 ( 这是 copyleft 的属性 )。
copyleft 是一种利用现有著作权 ( copyright ) 体制来保障用户软件自由使用权利的许可方式。
相反地,对于有著作权的软件的最终用户来说,他们的许可证几乎没有任何权利 ( 除了使用权 ),甚至可能限制一些法律允许的行为,比如逆向工程。
2.2. LGPL 协定
lesser GPL 即更宽松的 GPL 协定。基于库接口调用的开发可以是不用开源的。
3. Apache
单使用 Apache 许可时,可以不遵循 copyleft,但对于程序中未修改的部分,依旧要使用相同许可证。
每一个被修改了的文件都必须要包括版权说明以及更改了什么。
兼容于第三版 GPL 许可,不兼容于第一版和第二版 GPL 许可。
4. BSD
Berkeley Software Distribution license BSD 许可证被认为是介于 copyright 与 copyleft 之间的 copycenter ( 中间著作权 )。
Take it down to the copy center and make as many copies as you want
可以说,GPL 强迫后续版本必须一样是自由软件,BSD 的后续版本可以选择要继续是 BSD 或其他自由软件条款或封闭软件等等。
不可用程序作者的名字进行宣传。