常见的开源协议区别

1. MIT License (麻省理工学院许可证)

  • 特点: 非常宽松的许可证,允许你做几乎任何事情,只要你保留原始的版权声明和许可声明。
  • 核心条款:
    • 允许: 使用、修改、分发、商业使用、私有使用。
    • 限制: 必须保留原始版权声明和许可声明。
    • 免责声明: 提供“按原样”的软件,不承担任何担保责任。
  • Copyleft: 无,属于“Permissive License”(宽松许可证)。 允许基于 MIT 许可的代码构建的软件闭源。
  • 适用场景: 适合希望最大程度地促进代码的自由使用,允许代码被用于闭源项目的场景。很多流行的库和框架都采用 MIT 协议。
  • 优点:
    • 简单易懂。
    • 与许多其他开源协议兼容。
    • 非常自由,几乎没有限制。
  • 缺点:
    • 没有明确的专利授权。
    • 对贡献者保护不足。
  • 典型应用: jQuery, Ruby on Rails, React, Node.js

2. Apache License 2.0 (Apache 许可证 2.0 版)

  • 特点: 宽松的许可证,类似于 MIT 许可证,但更详细,明确包含了专利授权,并对贡献者提供了一定的保护。
  • 核心条款:
    • 允许: 使用、修改、分发、商业使用、私有使用。
    • 限制: 必须保留原始版权声明,并包含 Apache 许可协议的副本。
    • 专利授权: 明确授予专利授权。如果用户侵犯了你的专利,授权将会终止。
    • 贡献者保护: 提供保护,以避免因贡献代码而引起的诉讼。
    • 免责声明: 提供“按原样”的软件,不承担任何担保责任。
  • Copyleft: 无,属于“Permissive License”。允许基于 Apache 2.0 许可的代码构建的软件闭源。
  • 适用场景: 适合希望提供明确的专利授权,并对贡献者提供一定保护的场景。很多大型项目采用 Apache 2.0 协议。
  • 优点:
    • 明确的专利授权,降低了潜在的专利侵权风险。
    • 对贡献者提供保护,鼓励更多人参与项目。
    • 与许多其他开源协议兼容。
  • 缺点:
    • 相对 MIT 协议较为复杂。
  • 典型应用: Apache HTTP Server, Android, Hadoop, TensorFlow

3. GNU General Public License v3.0 (GPLv3,GNU 通用公共许可证 3.0 版)

  • 特点: 强 Copyleft 许可证,要求任何基于 GPLv3 许可的代码的衍生作品都必须以 GPLv3 许可发布,并且必须提供源代码。
  • 核心条款:
    • 允许: 使用、修改、分发、商业使用、私有使用。
    • 限制: 必须以 GPLv3 许可发布衍生作品,并提供源代码。
    • Copyleft: 强 Copyleft,任何衍生作品都必须继承 GPLv3 许可。
    • 专利授权: 包含专利授权,但如果用户试图利用专利限制他人使用软件,该授权可能会被撤销。
    • 免责声明: 提供“按原样”的软件,不承担任何担保责任。
  • Copyleft: 强 Copyleft。不允许基于 GPLv3 许可的代码构建的软件闭源。
  • 适用场景: 适合希望确保软件及其衍生版本都保持开源和自由,防止被私有化的场景。
  • 优点:
    • 确保软件的自由,防止被私有化。
    • 鼓励社区贡献。
  • 缺点:
    • 与一些其他开源协议不兼容,特别是 Permissive License。
    • 限制性较强,可能会影响软件的商业应用。
  • 典型应用: Linux kernel, GNU Compiler Collection (GCC), GNU Emacs

4. GNU Lesser General Public License (LGPL,GNU 较宽松通用公共许可证)

  • 特点: 比 GPLv3 宽松的 Copyleft 许可证。它允许将 LGPL 许可的库链接到专有软件中,而不需要将整个专有软件以 LGPL 许可发布。 但是,对 LGPL 库本身的修改,以及包含 LGPL 库的软件的源代码,仍然需要以 LGPL 许可发布。
  • 核心条款: 类似于 GPL,但允许与非自由软件链接。
  • Copyleft: 弱 Copyleft。
  • 适用场景: 主要用于库文件,允许其他程序(包括商业程序)使用该库而无需开源自己的代码。
  • 典型应用: 一些 GNU 库。

5. BSD License (伯克利软件发布协议)

  • 特点: 类似于 MIT 许可证,非常宽松,允许自由使用、修改和分发代码,只需要保留原始版权声明。 有多个变体,例如 2-clause BSD License 和 3-clause BSD License。
  • 核心条款:
    • 允许: 使用、修改、分发、商业使用、私有使用。
    • 限制: 必须保留原始版权声明。 某些 BSD 变体可能包含其他限制,例如禁止使用原始作者的姓名进行推广。
    • 免责声明: 提供“按原样”的软件,不承担任何担保责任。
  • Copyleft: 无,属于“Permissive License”。 允许基于 BSD 许可的代码构建的软件闭源。
  • 适用场景: 类似于 MIT 许可证,适合希望最大程度地促进代码的自由使用,允许代码被用于闭源项目的场景。
  • 优点: 非常简单,与 MIT 类似。
  • 缺点: 类似于 MIT,没有明确的专利授权,对贡献者保护不足。
  • 典型应用: FreeBSD, OpenBSD, NetBSD

6. Mozilla Public License 2.0 (MPL 2.0,Mozilla 公共许可证 2.0 版)

  • 特点: 介于宽松许可证和强 Copyleft 许可证之间的一种许可证。它允许将 MPL 许可的代码与其他许可证的代码混合使用,但对 MPL 许可的代码的修改必须以 MPL 许可发布。
  • 核心条款:
    • 允许与其他许可证的代码混合使用。
    • 对 MPL 许可的代码的修改必须以 MPL 许可发布。
  • Copyleft: 弱 Copyleft,只对 MPL 许可的代码有影响。
  • 适用场景: 适用于希望允许代码被用于闭源项目,但又希望保护部分代码的开源性的场景。
  • 典型应用: Mozilla Firefox, Mozilla Thunderbird

如何选择开源许可证?

选择哪个开源许可证取决于你的具体需求和目标。以下是一些需要考虑的因素:

  • 你希望如何保护你的代码? 如果你希望确保你的代码及其衍生版本都保持开源和自由,那么 GPLv3 或 AGPL 协议可能更合适。 如果你希望允许你的代码被用于闭源项目,那么 MIT 协议、Apache 2.0 协议或 BSD 协议可能更合适。
  • 你是否需要专利授权? 如果你担心潜在的专利侵权问题,那么 Apache 2.0 协议可能是一个更好的选择,因为它明确授予了专利授权。
  • 你希望如何保护你的贡献者? 如果你希望保护你的贡献者免受因他们的贡献而引起的诉讼,那么 Apache 2.0 协议可能更合适。
  • 你与其他开源项目的兼容性如何? 不同的开源协议之间可能存在兼容性问题。 在选择许可证之前,请务必考虑你与其他开源项目的兼容性。

总结:

许可证 类型 Copyleft 强度 专利授权 主要特点
MIT Permissive 隐式 非常宽松,允许闭源,易于使用。
Apache 2.0 Permissive 明确 宽松,允许闭源,包含专利授权,对贡献者提供保护。
GPLv3 Strong 明确 强制开源所有衍生作品,确保软件自由。
LGPL Weak 明确 允许链接到非自由软件,但对库本身的修改必须开源。
BSD Permissive 隐式 非常宽松,允许闭源,与 MIT 类似。
MPL 2.0 Weak 明确 允许与其他许可证的代码混合使用,但对 MPL 许可的代码的修改必须以 MPL 许可发布。

建议在选择开源许可证之前仔细阅读每个许可证的条款,并咨询法律专业人士的意见。也可以参考一些开源许可证的比较网站,例如 choosealicense.com,来帮助做出决定。


常见的开源协议区别
https://schrodingerfish.github.io/2025/06/18/Web/常见的开源协议区别/
作者
Johnson
发布于
2025年6月18日
许可协议