主流的开源协议(MIT,Apache,GPL v2/v3)
文章目录
- 1. MIT 协议 (MIT License)
- 2. Apache 2.0 协议 (Apache License 2.0)
- 3. GPL v2 协议 (GNU General Public License v2)
“开源协议选择指南”的流程图
flowchart TDA[开始选择开源协议] --> B{是否要求修改后必须开源?<br>(是否具有 传染性?)};B -- 是(强Copyleft) --> C{GPL家族};C --> C1[GPL v2/ v3<br>要求派生代码必须使用相同许可证开源];B -- 否(宽松/弱Copyleft)--> D{是否需要专利授权?};D -- 是 --> E{Apache 2.0<br>宽松且提供明确的专利授权};D -- 否 --> F{MIT<br>最宽松,仅要求保留版权声明};B -- 否(宽松) --> G{是否要求与闭源软件兼容?};G -- 是 --> E;G -- 否 --> F;
1. MIT 协议 (MIT License)
-
特点: 这是最宽松的开源协议之一。你可以理解为“几乎没有任何限制”。
-
核心要求:
-
在你的软件副本或重要部分中,必须保留原始的版权声明和许可声明。
-
允许行为:
-
自由使用、复制、修改、合并、发布、分发、再授权、销售软件。
-
你可以将使用 MIT 协议的代码放入你的闭源商业软件中,作为专有软件的一部分进行发布和销售。
-
-
常见项目: jQuery, Node.js, Ruby on Rails, React (早期版本)。
-
一句话总结: 想怎么用就怎么用,只要注明来源。
2. Apache 2.0 协议 (Apache License 2.0)
比 MIT 多了一个专利授权。
- 特点: 一个对商业应用非常友好的宽松协议,比 MIT 多了关于专利的明确条款。
- 核心要求:
1、和 MIT 一样,需要保留版权和许可声明。
2、如果修改了文件,需要在修改过的文件中明确说明。
3、(重要)明确授予用户永久性的、全球性的、免专利费的专利许可。
4、商标权不被授予。 - 与 MIT 的主要区别: 提供了明确的专利贡献和保护条款,防止贡献者或使用者通过专利诉讼来攻击项目。
- 常见项目: Apache 系列项目, Android, Kubernetes, Swift。
- 一句话总结: 和 MIT 一样宽松,但多了专利保护,更安全。
3. GPL v2 协议 (GNU General Public License v2)
具有“传染性”的强 Copyleft 协议。
- 特点: 强 Copyleft(著佐权) 协议,具有“病毒式”的传染性。
- 核心要求:
1、如果你的项目包含了或者修改了GPL 授权的代码,那么你的整个项目必须也以 GPL 协议开源。
2、必须提供源代码。
3、所有基于 GPL 代码的衍生作品也必须使用 GPL 协议。 - “传染性”体现: 这意味着你不能将 GPL 授权的代码用于你的闭源商业软件中。只要你用了,你的软件整个都必须变成开源的。
- 常见项目: Linux 内核, Git, MySQL。
- 一句话总结: 用了我的代码,你的代码也必须开源。
特性 | MIT | Apache 2.0 | GPL v2 | LGPL |
---|---|---|---|---|
宽松度 | 极宽松 | 宽松 | 严格(Copyleft) | 较弱(Copyleft) |
要求保留版权 | ✅ | ✅ | ✅ | ✅ |
要求修改声明 | ❌ | ✅ | ✅ | ✅ |
专利授权 | 隐含 | 明确授予 | 无明确条款 | 无明确条款 |
代码传染性 | ❌ | ❌ | ✅(强) | ✅(弱,仅限库本身) |
允许闭源商业使用 | ✅ | ✅ | ❌ | ✅(仅动态链接时) |