ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一张图看懂开源许可协议

2020-06-04 14:03:54  阅读:1790  来源: 互联网

标签:GPL 协议 LGPL 许可 专利 开源 图看 使用


目录

出处:乌克兰程序员 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

我只想安心的写代码(只想保留版权),别人爱怎么搞就怎么搞吧

  1. 允许别人以任何方式使用(支持商业闭源)
  2. 必须署名原作者
  3. 原作者不承担代码使用后的风险

例如:

小益使用 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有