开源许可证比较

MIT vs Apache 2.0 vs GPL v3 vs BSD vs AGPL — 详细对比表帮你选择合适的许可证

完整对比表

标准MITApache 2.0GPL v3LGPLBSD 3AGPLMPL 2.0
商业用途
闭源代码✅*✅**
修改代码
署名要求
专利保护
传染性🔴 强🟡 弱🔴 + 网络🟡 文件
再许可
许可证长度📗 短📙 中📕 长📕 长📗 短📕 长📙 中

* LGPL 允许闭源,如果库是动态链接的 ** MPL 2.0 允许闭源,针对不受 MPL 覆盖的文件


许可证说明

MIT — 宽松的标准

最简洁最宽松的许可证。一个条件:保留版权声明。 最适合:库、工具、任何你希望获得最大采用的项目。

Apache 2.0 — MIT + 专利保护

类似 MIT,但增加了贡献者的明确专利授权。 最适合:企业友好的项目,当专利保护重要时。

GPL v3 — 强传染性

如果你分发 GPL 软件,你必须在 GPL 下开源源代码。 最适合:当你想确保衍生作品保持开源时。

LGPL — 弱传染性

类似 GPL,但允许专有代码动态链接而无需传染性要求。 最适合:希望在专有应用中使用的库。

BSD 3-Clause — MIT + 非认可条款

增加条款:你不能用项目名推广你的产品。 最适合:来自大学或基金会的项目。

AGPL — GPL + 网络使用

关闭了 GPL 的"SaaS 漏洞":如果作为服务运行 AGPL 软件,你必须开源。 最适合:希望保持开源的网络应用。

MPL 2.0 — 文件级传染性

传染性按文件应用:MPL 文件保持开源,你的文件可以是专有的。 最适合:希望文件级传染而无需完整 GPL 义务时。


如何选择 — 决策树

你想允许在专有/闭源产品中使用吗?
├── 是 → 需要专利保护吗?
│       ├── 是 → Apache 2.0
│       └── 否 → 简洁性重要吗?
│               ├── 是 → MIT
│               └── 否 → BSD 3-Clause
└── 否 → 是服务端应用(SaaS)吗?
        ├── 是 → AGPL
        └── 否 → 是库吗?
                ├── 是 → LGPL
                └── 否 → GPL v3

MIT vs Apache 2.0 — 如何选择

选择 MIT 如果…选择 Apache 2.0 如果…
你想要最大的简洁性专利保护很重要
构建小型库企业/公司环境
贡献者是个人贡献者可能持有专利
不担心专利你想要正式的专利授权语言

与 MIT 的兼容性

MIT 代码能与其他许可证结合吗?

许可证能使用 MIT 代码?说明
Apache 2.0✅ 能结果是 Apache 2.0
GPL v3✅ 能结果是 GPL v3
GPL v2✅ 能结果是 GPL v2
BSD✅ 能兼容
AGPL✅ 能结果是 AGPL
专有✅ 能只需保留许可证

MIT 是最兼容的许可证之一 — 它几乎可以与任何其他许可证结合。