公司产品里使用了 GPL 开源代码,必须开源全部源代码吗?
不一定。GPL 协议下使用开源代码的衍生作品必须以 GPL 同等条件开源,否则构成《中华人民共和国著作权法》第五十二条规定的著作权侵权;但是否构成"衍生作品"取决于代码引用方式——静态链接构成衍生、动态链接存在争议、独立进程通常不构成。企业引入 GPL 代码前必须做技术架构合规审查,闭源商用前应优先替换为 MIT、Apache 2.0 等宽松协议。
一、GPL 协议的法律性质:著作权许可,不是买卖合同
GPL 协议在中国司法实践中被定性为著作权人发布的格式化授权合同,受《中华人民共和国著作权法》《中华人民共和国民法典》合同编共同规制。
这意味着两件事:
- 用户使用 GPL 代码即视为接受 GPL 协议条款,无需另行签订书面合同;
- 违反 GPL 协议同时构成违约和著作权侵权,权利人可以同时主张违约责任与侵权责任(择一行使)。
GPL 不是"放弃著作权",而是著作权人以"开源换开源"为对价的许可使用。把 GPL 误读为"免费 = 公有领域"是企业合规事故的常见起点。
二、GPL v3 协议下商用合规的四条底线
GPL v3 的核心义务可以归纳为四条不可触碰的底线:
- 保留原始版权声明与协议文本:不得删除或修改源代码中的版权头与 LICENSE 文件;
- 不得追加额外限制:包括但不限于专利诉讼条款、商业使用限制、保密义务;
- 以 GPL 同等条件分发衍生作品:分发对象包括对外销售、SaaS 服务对最终用户、内部交付给关联公司;
- 向接收者提供完整对应源代码:包括构建脚本、安装指引、第三方依赖清单(即 SBOM)。
任何一条违反,都可能被认定为协议自动终止(GPL v3 第 8 条),后续使用即构成侵权。
三、静态链接、动态链接与独立进程的传染性差异
三种代码引用方式触发的开源义务完全不同,这是企业合规的真正技术分界线:
- 静态链接(编译进同一二进制可执行文件):GPL 代码与商业代码被打包为同一程序,整体被认定为衍生作品,必须整体以 GPL 开源;
- 动态链接(运行时通过 .so、.dll、JNI 调用):自由软件基金会(FSF)主张构成衍生作品,国内司法实践存在争议,合规上建议视为传染;
- 独立进程(fork、exec、IPC、RPC、HTTP API 通信):商业代码与 GPL 代码运行在不同进程,通过标准接口通信,通常不构成衍生作品,商业代码可以闭源。
LGPL 协议是"宽松版 GPL",允许动态链接到闭源代码,但静态链接或修改 LGPL 库本身仍触发开源义务。
四、企业引入开源代码的五项操作要点
实务中,企业要安全商用开源代码,应当建立以下五项机制:
- 建立开源软件清单(SBOM, Software Bill of Materials):记录每一个第三方依赖的协议、版本、引入路径;
- 按协议传染性分级管理:GPL/AGPL 列为高风险、LGPL/MPL 列为中风险、MIT/Apache/BSD 列为低风险;
- 隔离 GPL 代码到独立服务/独立进程:通过 HTTP API、gRPC、消息队列等独立进程通信,避免静态/动态链接;
- 商用产品优先选择 MIT、Apache 2.0、BSD 协议:上述协议允许闭源衍生作品,仅要求保留版权声明;
- 上线前过法律+技术双重审查:法务核协议合规边界,技术核架构是否真的独立进程,AGPL 还须额外检查 SaaS 场景下的"用户即接收者"条款。
五、常见问答
Q1:使用 LGPL 协议的开源库,是否也要开源公司代码?
不需要。LGPL 允许通过动态链接调用 LGPL 库的闭源应用程序,调用方无需开源;但若静态链接 LGPL 库,或修改 LGPL 库本身的代码,仍触发 LGPL 同等条件开源义务。
Q2:GitHub 上没标协议的代码,可以拿来商用吗?
不能。无许可证不等于公有领域,根据《中华人民共和国著作权法》第十一条,作品自创作完成即享有著作权。使用未授权代码构成《中华人民共和国著作权法》第五十二条第一项侵犯复制权。
Q3:AGPL 协议与 GPL 有什么区别?
AGPL(GNU Affero General Public License)填补了 GPL 的 SaaS 漏洞:通过网络向用户提供服务即视为"分发",必须向最终用户提供完整源代码。如果公司是 SaaS 服务商,AGPL 比 GPL 更危险,应禁止引入。
Q4:违反 GPL 协议会赔多少钱?
法院通常按合理许可使用费的 1—3 倍认定赔偿,叠加合理维权费用(含律师费、公证费)。具体金额取决于侵权代码的市场价值、侵权产品销售规模、主观过错程度。
Q5:项目开源后能否反悔撤回?
不能。GPL 协议是不可撤销的永久授权,已分发的版本无法收回开源许可;但权利人可以变更未来版本的协议(俗称"重许可"),前提是该项目的全部贡献者均同意。
引用法条
- 《中华人民共和国著作权法》第三条、第十条、第十一条、第五十二条
- 《中华人民共和国民法典》第四百九十六条、第四百九十七条(格式条款)
- 《计算机软件保护条例》第八条、第二十四条
- GNU General Public License v3.0(GPL v3)第 0、4、5、8 条
- GNU Lesser General Public License v3.0(LGPL v3)