完整对比表
| 标准 | MIT | Apache 2.0 | GPL v3 | LGPL | BSD 3 | AGPL | MPL 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 是最兼容的许可证之一 — 它几乎可以与任何其他许可证结合。