一个开源项目一定需要一个开源协议,开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什么,不可以做什么。所以,开源规范的第一条规范就是选择一个合适的开源协议。那么有哪些开源协议,如何选择呢?接下来,我来详细介绍下。
开源协议
常见的开源协议
-
MIT 许可证
- 最宽松的许可证之一
- 允许自由使用、修改、分发,甚至用于商业用途
- 只要保留版权和许可声明即可
-
Apache 许可证 2.0
- 类似 MIT,但提供了专利授权的相关条款
- 要求保留版权和许可声明
- 声明对文件的修改
-
GNU 通用公共许可证 (GPL)
- 强制要求开源
- 使用 GPL 的软件的衍生作品必须以相同的许可证发布
- 分为 v2 和 v3 版本,v3 增加了更多限制
-
BSD 许可证
- 较为宽松,类似 MIT
- 有多个版本(2-Clause, 3-Clause),主要区别在于对原作者的署名要求
-
Mozilla 公共许可证 (MPL)
- 介于 GPL 和宽松许可证之间
- 允许将 MPL 代码与专有代码结合
- 修改的 MPL 代码部分必须继续使用 MPL
-
GNU 宽松通用公共许可证 (LGPL)
- GPL 的变体,主要用于代码库
- 允许非 GPL 软件链接 LGPL 库而不需要开源
-
Creative Commons (CC) 许可证
- 主要用于创意作品,不建议用于软件
- 有多种组合,如 CC BY(署名), CC BY-SA(署名-相同方式共享)等
| 协议类型 | 可以商用 | 必须开源 | 可以闭源 | 专利保护 |
|---|---|---|---|---|
| MIT | ✓ | ✗ | ✓ | ✗ |
| Apache | ✓ | ✗ | ✓ | ✓ |
| GPL | ✓ | ✓ | ✗ | ✗ |
| LGPL | ✓ | △ | ✓ | ✗ |
| BSD | ✓ | ✗ | ✓ | ✗ |
选择建议
个人项目
- 建议使用 MIT 协议
- 简单、宽松、易理解、易传播
企业项目
- 建议使用 Apache License 2.0
- 提供专利保护
- 商业友好
核心代码保护
- 考虑使用 GPL
- 确保代码持续开源