跳至内容
GPL-3.0、AGPL-3.0、LGPL-3.0 这些有什么区别

GPL-3.0、AGPL-3.0、LGPL-3.0 这些有什么区别

GPL-3.0、AGPL-3.0 和 LGPL-3.0 都是 GNU 家族的“著佐权”(copyleft)开源许可证,由自由软件基金会(FSF)发布,目标都是保障用户运行、研究、修改和分发软件的自由。但它们在开源义务的范围和强度上有显著区别。

下面从核心差异、使用场景、商业影响等角度为你清晰对比:


✅ 一句话总结区别

协议 核心特点 开源“传染”范围
GPL-3.0 经典强著佐权 整个衍生作品必须开源(只要分发二进制)
AGPL-3.0 GPL + 网络服务触发开源 只要通过网络提供服务,就必须开源(即使不分发软件)
LGPL-3.0 弱著佐权,专为库设计 仅库本身需开源,调用程序可闭源

🔍 详细对比

1. GPL-3.0(GNU General Public License v3)

  • 适用场景:通用软件(如编译器、命令行工具、桌面应用)
  • 核心规则
    • 如果你分发(distribution)基于 GPL-3.0 的软件(包括修改版),必须公开整个项目的完整源代码,并以 GPL-3.0 发布。
    • 内部使用或 SaaS 不分发?→ 无需开源(这是关键漏洞)。
  • 商业影响
    • ❌ 不能将 GPL 代码集成到闭源商业软件中(除非不对外分发);
    • ✅ 可用于内部系统、SaaS(只要不把软件“分发”给客户)。

📌 例子:你用 GPL 软件搭建一个 Web 服务,用户只通过浏览器访问 → 不需要开源你的代码(因为没“分发”软件副本)。


2. AGPL-3.0(GNU Affero General Public License v3)

  • 适用场景网络应用 / SaaS / 云服务
  • 核心规则
    • 在 GPL-3.0 基础上,新增第13条

      “如果你通过网络让用户与软件交互(如 Web 服务),即使没有分发软件,也必须向用户提供源代码。”

    • 这堵住了 GPL 在 SaaS 场景下的“漏洞”。
  • 商业影响
    • 任何基于 AGPL 的 SaaS 服务都必须开源
    • ❌ 几乎无法用于闭源商业产品(除非完全隔离,如通过 API 且不衍生)。

📌 例子:你修改了 AGPL 的 Nextcloud 并部署成网盘服务 → 必须向所有用户提供你修改后的完整源码


3. LGPL-3.0(GNU Lesser General Public License v3)

  • 适用场景共享库(.so/.dll/.jar 等)
  • 核心规则
    • 仅对库本身有 copyleft 要求
    • 如果你的程序动态链接(dynamic linking)LGPL 库,主程序可以闭源、商用、任意许可证
    • 如果静态链接修改了库代码,则修改后的库必须以 LGPL 开源。
  • 商业影响
    • 非常适合商业软件集成开源库(如 Qt、GTK+);
    • 开发者只需开放对 LGPL 库本身的修改,业务逻辑可保密。

📌 例子:你在闭源 App 中调用 LGPL 的 FFmpeg 解码视频 → 合法!只需说明用了 FFmpeg 并提供其 LGPL 源码链接


📊 对比表:关键维度

特性 GPL-3.0 AGPL-3.0 LGPL-3.0
是否允许闭源衍生作品? ❌ 否 ❌ 否 ✅ 是(主程序可闭源)
SaaS/网络服务是否触发开源? ❌ 否 ✅ 是 ⚠️ 仅当修改/分发库本身
适合做库(library)吗? ❌ 不推荐 ❌ 不推荐 专门为此设计
商业友好度 极低 中高
典型项目 Bash, GIMP, GCC MongoDB(旧版)、Nextcloud、Odoo FFmpeg, GTK+, Qt(可选)

💡 如何选择?

你的目标 推荐协议
希望所有衍生作品必须开源(坚定自由软件理念) GPL-3.0
开发 SaaS/云服务,且希望强制用户获得源码 AGPL-3.0
发布一个,希望被商业软件广泛采用 LGPL-3.0
完全不想限制使用者(包括闭源商用) ❌ 别选这三个 → 改用 MIT/Apache-2.0

⚠️ 重要提醒

  • AGPL 的“网络交互”定义较宽:即使只是提供 API 服务,也可能被认定为“远程网络交互”,从而触发开源义务。
  • GPL/LGPL 的“衍生作品”判断复杂:如果代码深度耦合(如直接嵌入、静态链接),可能被认定为整体作品,导致整个项目需开源。
  • 三者之间兼容性
    • AGPL-3.0 与 GPL-3.0 可通过第13条互操作
    • LGPL-3.0 可被“升级”为 GPL-3.0 使用。

✅ 总结

  • GPL-3.0:传统强开源,防闭源分发;
  • AGPL-3.0:GPL 的“云时代升级版”,防 SaaS 闭源;
  • LGPL-3.0:为库设计的“温和版”,鼓励商业采用。

选择哪个,取决于你想在多大程度上强制他人开源,以及你的项目是应用、服务还是库

最后更新于