第四章

开源许可证:用别人代码的规矩

第三层 · GPL/MIT/Apache/Copyleft 用了开源库,差点把整个公司“免费”出去

一、开源不是"免费随便用"

"小陈,你知道'开源软件'是什么意思吗?"林薇问。

"免费、开放源码、可以随便用?"

"大错特错。"林薇严肃地说,"'开源'的意思是'开放源代码',但开放≠免费随便用。每一款开源软件都带着一张'许可证(License)',它规定了你能做什么、不能做什么。 你用了别人的开源代码,就等于签了这份合同——不遵守,就是违约侵权。"

"很多程序员以为'开源=免费=随便用',结果把 GPL 协议的代码写进商业软件,最后被要求'把你的整个软件开源'——用了 100 行免费代码,赔上了整个公司几百万元的软件。 这不是段子,是真实发生过的诉讼。"


二、开源许可证的"光谱":从宽松到严格

林薇画了一条光谱:

开源许可证光谱(从宽松到严格):

  MIT / BSD / Apache  ── 宽松(permissive)── 随便用
  LGPL              ── 温和                ── 用了要小心
  GPL / AGPL        ── 严格(copyleft)    ── 传染性

宽松 vs 严格,核心区别一句话:
  宽松:你可以把代码"关起来"(闭源商用)没问题
  严格:你的软件"沾了"它,可能也要开源(传染)

"宽松类(MIT/BSD/Apache):几乎什么都能干——商用、改、闭源都行,只要保留版权声明。这是现代互联网公司最爱用的类型(React、Spring、Kubernetes 都是 Apache 协议)。"

"严格类(GPL):有'传染性'——只要你的软件链接/整合了 GPL 代码,整个软件可能都要以 GPL 开源。Linux 内核是 GPL,所以所有基于它的发行版都要开源。"


三、五种常见许可证,一表看懂

许可证对照表(云间书店内部速查):

  MIT              :最宽松,保留版权声明即可,可商用闭源
  BSD-3-Clause     :类似 MIT,多了"不得用作者名义做广告"条款
  Apache-2.0       :宽松 + 明确专利授权 + 兼容性好(企业最爱)
  LGPL            :修改 LGPL 库要开源修改部分,动态链接可闭源
  GPL-3.0         :传染性,整合即开源(商用要小心!)
  AGPL-3.0        :GPL 加强版,连"通过网络提供服务"也算分发
                    (SaaS 用它=你的整个 SaaS 都要开源!)

云间书店的选型原则:
  ✅ 能用宽松(MIT/Apache)就用宽松
  ⚠️ GPL/LGPL 谨慎:要么不碰,要么用"进程隔离"方式调用
  ❌ AGPL:SaaS 产品绝对不碰(除非你想开源)

"重点说 AGPL: 普通 GPL 管'分发软件',AGPL 管'通过网络提供软件服务'。你们做 SaaS——如果后端用了 AGPL 的库,整个 SaaS 的代码都可能要开源。这是 SaaS 公司最大的开源陷阱。"


四、合规使用开源代码:三件事必须做

"那咱们到底怎么合规地用开源?"小陈问。林薇给出操作清单:

开源合规三板斧:
  ① 记录(SBOM - 软件物料清单):
     每个开源组件:名字、版本、许可证类型 → 登记造册
     (第九章详细讲 SBOM)
  ② 保留声明:
     保留开源代码的 LICENSE 文件、版权声明
     → 违反"保留声明"是最常见的开源违约
  ③ 审查依赖:
     引入新库前,先查它的许可证
     工具:GitHub 上直接看 LICENSE 文件
           或用扫描工具(FOSSA、Black Duck)

云间书店整改行动:
  1. 扫描现有 37 个开源组件 → 列出许可证清单
  2. 发现 2 个 GPL 组件 → 评估:
     a. 替换成 MIT/Apache 的替代品
     b. 或隔离调用(独立进程/微服务,避免"整合")
  3. 从今天起:新引入组件一律先查证再使用

"记住:'反正免费,用了再说'是软件公司的头号合规炸弹。 免费的是代码,不是责任。"


五、常见误解:5 个"我以为"

林薇列了几个高频误解:

开源常见误解澄清:
  ❌ "开源=免费" → 免费的是使用费,义务一样不少
  ❌ "我改了代码,就是我的了" → 你的修改也受原许可证约束
  ❌ "GPL 只是针对 Linux" → 任何 GPL 代码都有传染性
  ❌ "内部使用不算分发" → 某些场景内部使用也受限(AGPL 更严)
  ❌ "开源项目没人追究" → 近年来开源维权诉讼越来越多
     著名案例:VMware 因使用 GPL 的 Linux 代码被诉
              最终与原告和解(涉及巨额赔偿风险)

一句话:开源不是"法外之地",是"有规则的共享"。

六、云间书店的开源策略:既要合规矩,也要保护自己

老周补充了技术侧的配合:

云间书店开源管理规范(技术 + 法务联动):
  ① 技术:建立"开源组件白名单/黑名单"
     ✅ 白名单:MIT / Apache-2.0 / BSD
     ⚠️ 观察:LGPL(动态链接可接受,记录在案)
     ❌ 黑名单:AGPL(SaaS 禁用)、GPL(慎用,需法务审批)
  ② 技术:CI 流水线加"许可证扫描"关卡
     → 引入违规组件,构建直接红灯(第九章自动化)
  ③ 法务:公司自己的开源政策文档 + 员工培训
  ④ 反向:我们自己的开源项目,选好许可证再发布
     (想别人随便用就 MIT;想保护生态就 Apache-2.0)

"开源合规不是法务一个人的事,是'技术扫描 + 法务把关 + 制度约束'三合一。 云间书店既然做 SaaS,就把 AGPL 拉黑、GPL 慎用这条铁律写进开发规范。"


七、章末:林薇的第三层总结

第三层:开源许可证
├── 开源≠免费随便用,每款开源软件都带"合同"(License)
├── 光谱:宽松(MIT/BSD/Apache)→ 严格(GPL/AGPL)
├── AGPL 是 SaaS 公司最大陷阱(用了整个 SaaS 要开源)
├── 合规三板斧:SBOM 记录 / 保留声明 / 依赖审查
├── 澄清误解:改了也不是你的、内部使用也受限
└── 策略:白名单/黑名单 + CI 扫描 + 制度约束
第五层(预告):商业秘密 —— 离开的同事,带走了什么

"小陈,开源这一课,差点让我们公司'裸奔'。好在发现得早。"林薇合上笔记本,"但接下来这件事,比开源更棘手——那个离职同事下载的整个代码库。 代码还在他手里,说不定已经交给了新公司。怎么追?靠什么法律?靠什么证据?——下一章,商业秘密。这是软件公司最贴身、最要命的一道防线。"

✌ 语言