跳到主要内容

软件许可证协议详解

· 阅读需 5 分钟
XingHunm
Tech Enthusiast

软件许可证协议(Software License Agreements)是规定软件使用、修改和分发权利的法律文件。对于开发者而言,了解不同协议的区别至关重要,以免陷入法律纠纷。

本文将常见的软件许可证分为三大类:宽松型弱 Copyleft 型强 Copyleft 型,并按限制从少到多的顺序进行介绍。

一、宽松型许可证 (Permissive Licenses)

这类许可证限制最少,通常只要求保留版权声明。它们鼓励代码的广泛采用,允许闭源商业化。

1. MIT License

特点

  • 最简单、最宽松。
  • 允许任意使用、修改、分发、私有化(闭源)。
  • 唯一义务:在软件副本中包含原作者的版权声明和许可声明。

适用场景

  • 希望代码被最大限度地使用,不在意衍生品是否闭源。
  • 如:jQuery, Node.js, React。

2. BSD License

与 MIT 非常相似,主要分为两个版本:

  • BSD 2-Clause:基本等同于 MIT。
  • BSD 3-Clause:多了一条禁止使用原作者名义进行推广的条款。

适用场景

  • 学术界或希望保护声誉的项目。
  • 如:Nginx, Go 语言。

3. Apache License 2.0

特点

  • 在宽松的基础上,增加了专利授权商标保护条款。

  • 明确的专利授权:贡献者自动授予用户专利使用权;若用户发起专利诉讼,授权自动终止。

    示例:若贡献者(如公司 A)向项目贡献了包含专利的代码,则自动授予用户(如公司 B)专利使用权,用户(公司 B)无需担心被起诉侵权。

  • 修改标注:修改后的文件需明确标注。

适用场景

  • 大型企业级开源项目,关注专利风险。
  • 如:Android, Kubernetes, TensorFlow。

二、弱 Copyleft 许可证 (Weak Copyleft Licenses)

这类许可证介于宽松和严格之间,通常要求修改过的文件必须开源,但允许与其他闭源模块链接(Link)。

1. MPL 2.0 (Mozilla Public License)

特点

  • 文件级 Copyleft:如果你修改了现有的源代码文件,该文件必须开源。
  • 混合开发友好:新增的文件或链接的模块可以是闭源的。

适用场景

  • 混合型项目,希望核心代码开源,但允许扩展闭源。
  • 如:Firefox, LibreOffice。

2. LGPL (Lesser GPL)

特点

  • GPL 的妥协版本。
  • 动态链接豁免:如果你的程序只是动态链接(Dynamic Link)到 LGPL 库,你的主程序可以闭源。
  • 若修改了库本身,则修改部分必须开源。

适用场景

  • 通用类库,希望被商业软件使用,但又要改进回馈给库本身。
  • 如:FFmpeg, GLib。

三、强 Copyleft 许可证 (Strong Copyleft Licenses)

这类许可证具有很强的“传染性”,要求衍生作品必须在相同协议下开源

1. GPL (v2 / v3)

特点

  • 传染性:如果你的软件使用了 GPL 代码(包括复制或静态链接),整个软件必须开源。
  • GPLv2 vs GPLv3:v3 增加了以下条款:
    • 反 Tivoization:只要厂商用了自由软件(如 GPLv3),用户就必须能在设备上安装并运行自己改过的版本,不能被硬件限制
    • 专利报复:若用户发起专利诉讼,其获得的专利授权自动终止。

适用场景

  • 坚定的自由软件支持者,防止代码被私有化。
  • 如:Linux Kernel (v2), Git, WordPress。

2. AGPL (Affero GPL)

特点

  • 堵上了“SaaS 漏洞”。
  • 网络分发视为分发:如果通过网络提供服务(如网站),也必须向用户公开源代码。

适用场景

  • 云服务、Web 应用,防止云厂商“白嫖”而不回馈。
  • 如:MongoDB (旧版), Grafana (旧版)。

四、其他特殊类型

1. Unlicense / CC0

  • 特点:放弃所有权利,将代码置于公共领域 (Public Domain)
  • 义务:无任何义务。

2. 专有软件 (Proprietary)

  • 特点:保留所有权利。
  • 形式:EULA(最终用户许可协议),禁止反编译、限制安装设备数等。

3. 商业开源 (Commercial Open Source)

  • 双重许可 (Dual Licensing):同时提供 GPL(免费开源)和商业许可(付费闭源)。如 Qt, MySQL。
  • SSPL:MongoDB 发明的协议,要求云厂商若提供托管服务需开源整个管理栈(不被 OSI 认可为开源协议)。

五、总结与选择指南

序号协议简述商业闭源专利授权传染性
1MIT随便用,保留署名
2Apache 2.0随便用,有专利保护
3BSD随便用,禁借名推广
4MPL修改文件需开源⚠️ (部分)文件级
5LGPL链接库可闭源⚠️ (链接)库级
6GPL必须全部开源v3✅
7AGPL服务端也得开源最强

快速选择建议

  1. 简单、无脑、想被广泛使用 👉 MIT
  2. 大公司、防专利流氓 👉 Apache 2.0
  3. 写库、允许别人闭源链接 👉 LGPL
  4. 强迫症、不仅要代码开源还要你也开源 👉 GPL
  5. 做云服务、防云厂商白嫖 👉 AGPL