主流开源协议的对比及适用场景

主流开源协议的对比及适用场景

1. 宽松型协议(Permissive Licenses)

(1) MIT License

核心条款:

允许任意使用(商用、修改、私有化),仅需保留原许可声明。

无专利授权条款,不承担代码使用风险。

适用场景:

个人或企业希望代码被广泛采用(如 jQuery、React)。

不介意他人闭源使用你的代码。

(2) Apache License 2.0

核心条款:

允许商用和闭源,但需保留版权/专利声明。

明确授予专利使用权(贡献者不可通过专利诉讼限制用户)。

修改文件需标注变更说明。

适用场景:

企业项目需专利保护(如 Android、Kubernetes)。

希望代码被集成到商业产品中。

(3) BSD License

变种:BSD 2-Clause(简化版)、BSD 3-Clause(禁止用作者名推广)。

核心条款:

类似 MIT,但 BSD 3-Clause 禁止用作者名义为衍生品背书。

适用场景:

学术或科研项目(如 FreeBSD、Nginx 早期版本)。

2. Copyleft 协议(严格传染型)

(1) GPL(GNU General Public License)

核心条款:

任何分发或修改后的代码必须开源,并采用相同协议(GPL)。

动态链接 GPL 代码的软件也需遵循 GPL(如 Linux 内核)。

适用场景:

强制开源生态(如 Git、GIMP),防止代码被闭源商用。

(2) LGPL(GNU Lesser General Public License)

核心条款:

允许动态链接闭源代码(如库文件),但修改 LGPL 部分仍需开源。

静态链接时需提供闭源程序的兼容接口。

适用场景:

开源库希望被闭源软件广泛使用(如 GLib、FFmpeg)。

(3) AGPL(GNU Affero General Public License)

核心条款:

网络服务(SaaS)使用 AGPL 代码时,必须公开修改后的源码。

适用场景:

防止云服务商闭源使用开源项目(如 MongoDB、Nextcloud)。

3. 其他协议

(1) MPL(Mozilla Public License)

核心条款:

文件级 Copyleft:修改后的文件需开源,但可与其他闭源代码组合。

适用场景:

平衡商业友好与开源要求(如 Firefox、Thunderbird)。

(2) SSPL(Server Side Public License)

核心条款:

若将代码用于提供云服务,需开源服务端整体代码(争议条款)。

适用场景:

开源项目对抗云厂商(如 MongoDB、Elasticsearch)。

4. 协议对比表

协议

允许闭源

要求衍生作品开源

专利授权

典型项目

MIT

React, Rails

Apache 2.0

Android, Kafka

BSD

FreeBSD, Nginx

GPL

✅(传染)

Linux, GIMP

LGPL

✅(动态链接)

✅(修改部分)

FFmpeg, GTK

AGPL

✅(含 SaaS)

MongoDB, Nextcloud

5. 如何选择?

个人/小项目:优先选择 MIT(简单、易推广)。

企业/专利敏感:选择 Apache 2.0(专利保护)。

强制开源生态:使用 GPL/AGPL(防止代码被闭源)。

库/工具开发:考虑 LGPL 或 MPL(平衡商业友好性)。

注意:混合协议需谨慎(如 GPL 代码不可与 MIT 代码直接混合),建议咨询法律专家。

相关推荐