200字
四大GNU协议深度解析:GPL、LGPL、AGPL与GFDL的核心区别
2026-02-01
2026-02-01

四大GNU协议深度解析:GPL、LGPL、AGPL与GFDL的核心区别

在开源世界中,GNU系列许可证是保障软件自由的基石。但GPL、LGPL、AGPL、GFDL这四种协议常被混淆,本文用一张表+关键场景帮你快速厘清差异。

一、核心定位对比

协议全称适用对象著佐权强度核心特点
GPLGNU General Public License通用软件⭐⭐⭐ 强衍生作品必须开源
LGPLGNU Lesser General Public License库/框架⭐⭐ 中允许专有软件动态链接
AGPLGNU Affero General Public License网络服务软件⭐⭐⭐⭐ 极强网络使用也触发开源义务
GFDLGNU Free Documentation License文档/手册⭐⭐⭐ 强专为文字内容设计

关键区别:前三者用于软件,GFDL专用于文档(如维基百科早期采用)

二、场景化解读

场景1:我想用开源库开发商业软件
  • 选LGPL:动态链接LGPL库时,你的专有代码无需开源(但需允许用户替换该库)
  • 避GPL:静态/动态链接GPL库 → 整个软件必须按GPL开源
场景2:我提供SaaS服务(如在线工具)
  • GPL陷阱:仅用GPL软件提供网络服务 → 无需开源修改版(GPL漏洞)
  • AGPL补丁:用AGPL软件 → 必须公开修改后的源码,堵住SaaS规避路径
场景3:编写技术文档
  • 用GFDL:要求衍生文档保留"不变章节"(如作者声明),但允许商业再分发
  • 注意:GFDL与软件许可证不兼容,不能用于代码

三、关键条款对比

GPL v3
├─ 衍生作品必须开源(包括静态/动态链接)
├─ 专利授权自动授予用户
└─ 禁止附加限制性条款

LGPL v3
├─ 允许专有软件通过"动态链接"使用库
├─ 修改库本身仍需开源
└─ 本质是"GPL + 链接例外"

AGPL v3
├─ 继承GPL所有条款
├─ 新增:通过网络交互即视为"分发" → 触发开源义务
└─ 专治"云服务不开源"问题

GFDL 1.3
├─ 要求保留"透明副本"(可编辑格式)
├─ 允许设置"不变章节"保护作者声明
└─ 与CC-BY-SA 3.0双向兼容(2009年后)

四、避坑指南

误区正解
"LGPL比GPL宽松=可以闭源"仅链接时宽松,修改LGPL库本身仍需开源
"AGPL是LGPL的网络版"AGPL基于GPL,无链接例外,比GPL更严格
"GFDL可用于软件"专为文档设计,代码应选GPL/LGPL/AGPL
"GPL软件不能商用"允许商业使用,但衍生品必须开源

五、选型建议

  • 开发通用工具 → GPL(保障生态开源)
  • 开发基础库 → LGPL(促进广泛采用)
  • 开发云服务 → 谨慎使用AGPL(避免强制开源核心逻辑)
  • 编写手册/教材 → GFDL或CC-BY-SA(现代更推荐后者)

2026年趋势:AGPL在AI/云服务领域争议加剧(如MongoDB、Elasticsearch改用SSPL),企业需提前评估合规风险

许可证是开源项目的"宪法"。选错协议可能导致法律风险或生态分裂——在LICENSE文件落笔前,务必明确你的分发场景与商业目标。

四大GNU协议深度解析:GPL、LGPL、AGPL与GFDL的核心区别
作者
WuQingYang
发表于
2026-02-01
License
CC BY-NC-SA 4.0