对衍生品的要求 | Apache2 | MIT | GPL | LGPL | BSD | 说明 |
---|---|---|---|---|---|---|
传染性 | 不允许 | 允许 | 不允许 | 库不允许 App 允许 | 允许 | 是否允许衍生品更改 License? |
许可条款 | 允许 | 允许 | 允许 | 允许 | 允许 | 是否允许修改、分发原项目的源代码? |
保留原始版权声明 | 必须 | 无需 | 必须 | 库必须 | 各版本不一致 | 是否在修复、分发、衍生品中保留 License? |
开源要求 | 强制开源 | 不要求 | 强制开源 | 库强制开源 App 可选 | 各版本不一致 | 衍生代码是否必须开源? |
专利许可 | 授予 | 不授予 | 不授予 | 不授予 | 不授予 | 是否允许衍生品免费使用原开源项目的专利? |
附加条款 | 允许 | 不允许 | 不允许 | 不允许 | 各版本不一致 | 是否允许衍生品增加个性化条款? |
是否可商用 | 允许 | 允许 | 允许 | 允许 | 允许 | 开源都可用于商用,概念其实不相关 |
- 粗体仅表示与同行不一致。
- BSD 有 FreeBSD、NetBSD 等多个差异化较大的版本,不像 GPL 等虽然版本也升级,但继承性较好。
- 不使用 X、√ 来表示,因为担心误导为错误、正确,每种 License 都有自己的规约,没有对错之分。
- 希望项目得到广泛应用和贡献: 考虑 Apache、MIT —— 简单而宽松的要求可以 让项目快速拓展用户,形成生态。
- 希望项目得到分享和改进:考虑 GPL —— 能够始终保持项目的凝聚力,汇聚想为项目本身贡献力量的群体,而不是伸手党。
- LGPL 即 Lesser GPL,是 GPL 的宽松版,是为基于 Linux 开源底层开发闭源上层(APP、Framework 等)而设计的
- 开发库代码,希望与衍生品(应用程序、二创等)代码保持解耦。
- 有实力的公司或组织可以底层开源一部分,上层闭源收银子,自建生态。
- Apache 项目请仔细阅读是否原作者添加了附加条款,以免掉到坑里。
github 创建了一个网站 https://choosealicense.com,专为 License 选择困难症患者解答问题,https://choosealicense.com/licenses/ 上有多个主流 License 的更多对比项和说明,值得认真阅读。
列举几个著名项目的 License:
项目 | 许可证 |
---|---|
Linux 内核 | GPLv2 |
Mozilla Firefox | MPL 2.0 |
Chromium | BSD 3-Clause |
Nginx | BSD 2-Clause |
Git | GPLv2 |
TensorFlow | Apache 2.0 |
React | MIT |
Vue.js | MIT |
jQuery | MIT |