开源许可协议
概述
开源许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议。通常,许可协议会在其条款中明确是否允许专利使用、修改、分发、商业用途、私人使用等。
常用开源协议
如果您想快速选择以下常见开源协议,可借助 常用开源协议选择器。
如何选择开源协议
我们该如何选择合适的开源协议呢?
开源协议特点和区别
首先,我们需要明白这些常见开源协议有何特点和区别。一般会从权限、条件和限制三个方面考虑,我们制作了图表进行了对比展示,以供参考。
许可协议 | 专利 | 修改 | 分发 | 商用 | 私用 | 公开源码 | 变更记录 | 相同许可证 | 网络公开 | 许可和版权声明 | 商标 |
---|---|---|---|---|---|---|---|---|---|---|---|
MIT | √ | √ | √ | √ | √ | ||||||
Apache-2.0 | √ | √ | √ | √ | √ | √ | √ | × | |||
BSD-2 | √ | √ | √ | √ | √ | ||||||
BSD-3 | √ | √ | √ | √ | √ | ||||||
ISC | √ | √ | √ | √ | √ | ||||||
GPL-2.0 | √ | √ | √ | √ | √ | √ | √ | √ | |||
GPL-3.0 | √ | √ | √ | √ | √ | √ | √ | √ | √ | ||
AGPL-3.0 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | |
LGPL-2.1 | √ | √ | √ | √ | √ | √ | √1 | √ | |||
LGPL-3.0 | √ | √ | √ | √ | √ | √ | √ | √1 | √ | ||
MPL-2.0 | √ | √ | √ | √ | √ | √ | √2 | √ | × | ||
表中相关图示说明如下:
1.权限包括:
- 专利:
- √:该许可证提供了明确的专利权授予权力。
- ×:该许可证明确声明它不授予贡献者专利的任何权利。
- 修改:
- √:许可材料可以被修改。
- 分发:
- √:许可材料可以分发。
- 商用:
- √:许可的材料和衍生物可用于商业目的。
- 私用:
- √:许可的材料可以私下使用和修改。
2.条件包括:
- 公开源码:
- √:分发许可材料时,必须提供源代码。
- 变更记录:
- √:对许可材料所做的更改必须记录在案。
- 相同许可证:
- √:分发许可材料时,必须在同一许可下发布修改。在某些情况下,可以使用类似或相关的许可证。
- 相同许可证(库):
- √1:分发许可材料时,必须在同一许可下发布修改。在某些情况下,可能会使用类似或相关的许可,或者该条件可能不适用于将许可材料用作库的作品。
- 相同许可证(文件):
- √2:分发许可材料时,必须在同一许可下发布对现有文件的修改。在某些情况下,可以使用类似或相关的许可证。
- 网络公开:
- √:通过网络与许可材料进行交互的用户被授予接收源代码副本的权利。
- 许可和版权声明:
- √:许可和版权声明的副本必须包含在许可材料中。
3.限制包括:
- 商标:
- ×:该许可证明确声明它不授予商标权,即使没有此类声明的许可证也可能不授予任何隐含的商标权。
选择建议
1.源码公开:从上表中,可以看出GPL、AGPL、LGPL协议要求公开分发材料的源码,在使用相关库或代码时请谨慎选择。
2.商标使用:在修改、分发Apache-2.0、MPL-2.0许可的材料时不能直接使用原来的商标名称。
3.专利使用:如果你比较关注专利使用方面,Apache-2.0 许可协议比较受青睐,有较多的组织和开发者使用该协议,并且应用在了较多的流行项目中。
4.宽松使用:其他宽松类协议(MIT、BSD、ISC)应用较为广泛。比如,在前端项目,尤其是npm包项目中,比较偏爱采用 MIT 和 ISC 协议。
总体来说,MIT 和 Apache-2.0 是目前最普遍的许可协议选择。