2. 开源许可证基础与义务触发

开源许可证不是“免责声明”,而是一份具有法律约束力的授权合同。它授予你复制、修改、分发软件的权利,同时附加条件;一旦你行使了被授予的权利却未满足条件,授权即自动终止,此前的使用行为就可能构成侵权。理解许可证的关键,不在于背诵条文,而在于搞清楚三件事:它要求你做什么(核心义务)、什么行为会激活这些义务(触发条件)、怎样才算违规(判定逻辑)。

一、两类许可证:宽松型与传染型

常见许可证可先按“义务强度”分为两大阵营。宽松型(Permissive)以 MIT、BSD、Apache-2.0 为代表,核心义务是保留版权声明和许可证文本,基本不限制你如何分发衍生作品;传染型(Copyleft)以 GPL、LGPL、AGPL 为代表,要求衍生作品在分发时同样以相同许可证开放源代码。

需要特别注意的是,触发点几乎都落在“分发(Distribution)”上。仅在组织内部使用、不向外部提供副本,通常不触发 GPL 的源码开放义务;而一旦把二进制交付给客户、发布到应用商店、或通过网络提供服务,情况就完全不同。

二、各许可证的核心义务与触发条件

许可证核心义务关键触发条件
MIT / BSD保留版权声明与许可证全文分发(含二进制)
Apache-2.0保留声明、NOTICE 文件、标明修改;含专利授权与终止条款分发;发起专利诉讼即终止授权
LGPL允许动态链接闭源;修改库本身须开放该库源码分发修改后的库,或静态链接
GPL-2.0/3.0衍生作品整体以 GPL 开放源码,提供对应源码分发衍生作品(含二进制)
AGPL-3.0在 GPL 基础上,网络交互服务也须提供源码通过网络向用户提供服务

Apache-2.0 的专利条款值得单独说明:它向使用者授予专利许可,但如果使用者就该项目发起专利诉讼,其专利授权自动终止。这是许多企业法务在评估 Apache 组件时重点核查的条款。

三、违规判定逻辑:从行为到结论

判定是否违规,可以按一条清晰的推理链推进:先确认是否发生分发或网络服务行为,再确认是否形成衍生作品,最后核对义务是否被履行。以 GPL 为例,若某公司把基于 GPL 库开发的闭源模块编译进产品并对外销售,且未提供源码,则同时满足“分发”与“衍生作品”两个条件,义务未履行,构成违规。反之,若该模块仅在公司内网服务器上运行、不对外分发,则不触发 GPL 的分发义务。

LGPL 的判定更依赖链接方式:动态链接调用 LGPL 库,通常不要求开放调用方源码;但若把 LGPL 库静态链接进闭源程序,则必须提供目标文件或源码,使用户能够重新链接。这一区别是实务中最容易踩坑的地方。

AGPL 的“网络服务即分发”是很多 SaaS 团队的盲区。只要用户能通过网络与 AGPL 程序交互,即使没有交付任何二进制文件,也视为触发源码提供义务。

四、义务触发与违规判定全景

下图把“使用行为—触发条件—义务—判定结果”串成一条可对照的推理路径,帮助你在实际项目中快速定位风险点。

开源许可证义务触发与违规判定路径 使用行为 复制 / 修改 / 链接 / 分发 是否对外分发? 交付二进制 / 发布 / 网络服务 是否形成衍生作品? 修改 / 静态链接 / 紧密集成 宽松型 MIT / BSD / Apache-2.0 传染型 GPL / LGPL / AGPL 弱传染型 LGPL(动态链接例外) 义务 保留版权声明 保留许可证文本 / NOTICE 义务 衍生作品整体开源 提供对应源码 义务 修改库须开源该库 静态链接须提供目标文件 合规 声明完整即满足 违规 未开源即侵权 条件合规 视链接方式而定 判定核心:先看是否分发/提供服务,再看是否衍生,最后核对义务履行情况

五、实务中的判定要点

把上述逻辑落到日常工作中,可以归纳为几个必须回答的问题:

  • 是否分发? 对外交付、上架、SaaS 网络服务都算;纯内部使用通常不算。
  • 是否衍生? 修改源码、静态链接、把库代码复制进自有模块,通常构成衍生;动态链接调用 LGPL 库一般不构成。
  • 义务是否履行? 宽松型看声明与 NOTICE 是否保留;传染型看源码是否随二进制一并提供,且许可证是否保持一致。
  • 是否存在特殊条款? Apache-2.0 的专利终止、AGPL 的网络服务条款,都是独立于常规分发的额外触发点。
建议在引入任何开源组件时,同步记录“组件名—版本—许可证—链接方式—是否修改—分发方式”六项信息。这份台账是后续违规判定与整改的基础,缺失任何一项都可能导致判定失准。