一张图看懂开源许可协议
作者:互联网
目录
出处:乌克兰程序员 Paul Bagwell 的分析图:
1. GPL
我希望我的代码能生根发芽(“繁衍”后代),遍地开花
GPL——Copyleft(“反版权”),意味着你可以去掉所有原作的版权信息,只要你保持开源,并且随源代码、二进制版附上GPL的许可证就行,让后人可以很明确地得知此软件的授权信息。
GPL核心理念就是任何衍生作品,也必须在GPL下发布。具有以下特点:
- 使用者循相同的GPL协议进行开源(生生不息,不断衍生)
- 支持商业用途,但必须开源!
GPL-v2支持软件商用,但不允许修改后和衍生的代码作为闭源的商业软件发布和销售。
程序库应当尤为关注GPL——库是大型软件的构建模块:在GPL-v2协议下发布库,你将强制使用该库的任何应用程序也在GPL协议下发布。即,只要引入的某个模块是GPL协议的,它会一直扩展到最上层直到整个项目都强制GPL开源。
GPL协议有点像病毒,一旦被感染,那么就演变成了GPL项目,强制开源(且,再也回不到过去了)!
使用此协议的的开源项目:
- Linux
- GCC
- scapy
1.1. GPL-v3
GPL 3.0 相比 2.0 新增了一些条例:
- 任何向GPL项目贡献的成果将永远以GPL协议发行
- GPL软件设备的用户有权更改软件(DRM)
实际上,Linux内核的维护者们,一直都反对GPL-v3协议,造成GPL在版本2/3上的分裂。
1.2. LGPL
核心在于:如果仅调用lib库,可以避免GPL的“传染性”。
- LGPL允许商业软件通过引用(link)的方式使用LGPL类库,而不需要开放源代码,或使用其他协议
- 但是如果修改或衍生LGPL协议代码,则必须采用LGPL协议
- 如果使用静态库方式链接则退化为GPL授权
例如:
小益使用 LGPL 协议开源了一个 Android 类库,小张做开发时调用了该库。之后小张将项目上架到 GooglePlay 而不开源,是没有违反协议的。但是如果小张引用类库时,是以源码的形式引用的,那就必须要将项目开源了。
1.3. AGPL
更严格的GPL,防止钻空子……通过网络与GPL开源项目交互,也需要提供源代码!
其实socket/http通讯,本质上与过程(函数)调用没有区别。AGPL弥补了这一漏洞。当然,如果你的代码不涉及通讯接口,那么这两种协议对你并无差别。
1.3.1. AGPL限制分发(distribution)漏洞
除了 Affero GPL (AGPL) ,其他许可证都规定只有在"分发"时,才需要遵守许可证。换言之,如果不"分发",就不需要遵守。
简单说,分发就是指将版权作品从一个人转移到另一个人。这意味着,如果你是自己使用,不提供给他人,就没有分发。另外,这里的"人"也指"法人",因此如果使用方是公司,且只在公司内部使用,也不需要遵守许可证。
云服务(SaaS)是否构成"分发"呢?答案是不构成。所以你使用开源软件提供云服务,不必提供源码。但是,Affero GPL (AGPL) 许可证除外,它规定云服务也必须提供源码。
2. MPL(Mozilla Public License)
- 类似GPL,具有传染性
- 类似LGPL,支持模块外的源代码闭源,便于商业软件引用MPL的模块(库)
- 修改后的代码版权归软件的发起者,可以免费使用
例如:
小益使用 MPL 协议开源了一个 Android 类库,小张对源码进行修改以后重新发布,修改后的源码版权也属于小益。
3. Apache
我想保有专利,但你们可以随便用
- 如果修改了代码,需要进行说明
- 必须署名原作者
- 对专利进行保护
Apache 2 的效力与 MIT 近似,区别主要在于前者额外提供了一份简易的专利许可授权,明确禁止商标使用权以及要求明确指明所有修改过的文件(state changes)。
4. BSD
- 可以随意使用
- 必须署名原作者
- 不可以用开源代码的“作者/机构的名字”或“原来产品的名字”做市场推广
5. MIT
我只想安心的写代码(只想保留版权),别人爱怎么搞就怎么搞吧
- 允许别人以任何方式使用(支持商业闭源)
- 必须署名原作者
- 原作者不承担代码使用后的风险
例如:
小益使用 MIT 协议开源了一个 Android 类库,只要小张引用类库时保留包含了许可声明,那后续项目开源与否,都是符合协议的。
6. 常见问题
6.1. 开源软件的专利如何处理?
某些许可证(Apache 2 和 GPL v3)包含明确的条款,授予用户许可,使用软件所包含的所有专利。
另一些许可证(BSD、MIT 和 GPL v2)根本没提到专利。但是一般认为,它们默认给予用户专利许可,不构成侵犯专利。
总得来说,除非有明确的"保留专利"的条款,使用开源软件都不会构成侵犯专利。
6.2. 违反协议的后果
很多公司希望避开GPL条款,既使用GPL软件,又不把自己的专有代码开源。理论上,这是做不到的。因为GPL的设计目的,就是为了防止出现这种情况。
但是实际上,不遵守GPL,最坏情况就是被起诉。如果你向法院表示无法履行GPL的条件,法官只会判决你停止使用GPL代码(法律上叫做"停止侵害"),而不会强制要求你将源码开源,因为《版权法》里面的"违约救济"没有提到违约者必须开源,只提到可以停止侵害和赔偿损失。
7. 总结
有严格到宽松,简单排序:
- AGPL
- GPL
- MPL
- LGPL
- Apache
- BSD
- MIT
标签:GPL,协议,LGPL,许可,专利,开源,图看,使用 来源: https://www.cnblogs.com/brt2/p/13043082.html