开源协议完整分类详解

laoluo
laoluo
laoluo
管理员
155
文章
0
粉丝
教程评论5阅读模式

开源协议是约束开源代码使用、修改、分发、商用的法律许可文件,核心分为宽松型、强 Copyleft(传染型)、弱 Copyleft、专有免费四大类。

一、宽松协议(Permissive,无传染,推荐商用)

特点:可商用、可闭源、修改后无需开源,仅保留版权声明。

1. MIT(最常用)

  • 规则:随便用、改、卖,只需要保留原版权声明,无其他义务。
  • 代表:React、Vue、Node.js、Rust、jQuery
  • 适合:企业内部项目、闭源商业产品集成。

2. Apache 2.0

  • 比 MIT 多两点:
    1. 明确授予专利授权(原作者不能拿专利告使用者)
    2. 修改文件必须标注变更记录
  • 代表:Android、Spring、TensorFlow、Apache 全系列
  • 优势:专利保护,大厂首选。

3. BSD(2 条款 / 3 条款)

  • 2 条款 BSD:极简,类似 MIT;
  • 3 条款 BSD:禁止用作者名义做商业宣传;
  • 代表:FreeBSD、Nginx、Python 早期版本。

二、强 Copyleft(GPL 传染型,限制最严)

核心规则:只要程序对外分发 / 发布(线上服务不算),整体代码必须全部开源

1. GPLv3 / GPLv2

  • 传染逻辑:你的软件只要链接 / 嵌入 GPL 代码并对外发布,整个项目强制开源,商用产品必须公开源码。
  • v3 新增:反 Tivo 化、专利防御条款;v2 无专利条款。
  • 代表:Linux 内核(GPLv2)、GCC、MySQL 社区版。
  • 禁忌:商用闭源软件直接集成 GPL 代码,极易侵权。

2. AGPLv3(网络 GPL)

GPL 升级版,补上漏洞:哪怕只作为线上网站 / 云服务对外提供,也必须公开全部源码
代表:MongoDB、Nextcloud、Gitea
适合:不想别人拿开源代码做 SaaS 闭源盈利的项目。

三、弱 Copyleft(LGPL,库专用,折中方案)

修改库本身需要开源;你的主程序可以闭源商用。

LGPLv3 / LGPLv2.1

两种使用场景:

  1. 动态链接(dll/so):主程序完全闭源,无需开源;
  2. 静态链接 / 修改库源码:库的修改部分必须开源。
    代表:FFmpeg、Qt 库、GNU 标准库
    适合:想做闭源软件,但依赖开源第三方库的场景。

四、特殊开源协议

1. MPL 2.0(Mozilla)

文件级 Copyleft:仅修改过的文件开源,未改动文件可闭源。
代表:Firefox、Rust 早期
折中:比 LGPL 宽松,比 MIT 严格。

2. CC0(公共领域)

放弃所有版权,等同于无版权,可任意使用、修改、商用,无需标注。
多用于图片、字体、小型工具代码。

五、商业限制类(非纯开源,慎用)

  1. SSPL(MongoDB 旧协议):衍生商用数据库必须开源全部业务代码,被 OSI 拒收,不属于标准开源;
  2. Business Source License(BSL):短期开源,到期转为 GPL,中间商用付费;
  3. 禁止军事 / 禁止云商用协议:自定义限制,不符合 OSI 开源标准。

六、快速选型对照表

协议 可商用闭源 修改后需开源 线上 SaaS 是否强制开源 专利保护
MIT ✅ 完全
Apache2.0 ✅ 完全
BSD ✅ 完全
LGPL ✅ 动态链接 仅库文件 ✅(v3)
GPLv3 ❌ 分发即开源 整个项目
AGPLv3 整个项目
MPL2.0 ✅ 未改文件 仅修改文件

七、常见避坑要点

  1. 内核 Linux 是 GPLv2,静态编译进闭源程序分发会违规;
  2. AGPL 项目做云服务必须开源,内网自用不对外则没事;
  3. Apache2.0 代码可迁移到 MIT,但 MIT 不能加专利条款;
  4. 混合协议项目:以最严格协议约束整体(比如 MIT+GPL 合并分发,整体遵循 GPL)。

 
laoluo
  • 本文由 laoluo 发表于2026年7月5日 06:35:27
  • 转载请务必保留本文链接:https://www.mydata-api.com/tutorials/354.html
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证