许可·条件·限制一览
条件
- 公开源代码分发时必须提供源代码。
- 版权与许可声明分发时必须附上许可证副本和版权声明。
- 相同许可证(文件级)对现有文件的修改部分必须以相同许可证分发。
限制
- 责任限制明确声明不对损害承担责任。
- 商标使用明确声明不授予商标权。
- 无担保明确声明不提供任何担保。
许可·条件·限制分类来源:choosealicense.com(GitHub,MIT 许可证)数据。
这是什么样的许可证
MPL 2.0 由 Mozilla 基金会于 2012 年 1 月发布。Firefox、Thunderbird 等 Mozilla 产品都在使用,其特点是将著佐权的范围限定在文件级别。适用 MPL 的文件(及对该文件的修改)必须以 MPL 公开源代码,但新编写的独立文件可以采用其他许可证,与 MPL 代码合并而成的「Larger Work」(第 3.3 条)整体可以按自己想要的条件分发。它还包含明确的专利许可以及专利诉讼时许可终止的条款。
分发时须遵守的事项
- 以可执行文件分发时,告知获取适用 MPL 文件的源代码的方式(第 3.2 条)。
- 不得删除或更改 MPL 文件的许可声明。
- 如果修改了 MPL 文件,该文件须继续以 MPL-2.0 分发。
Secondary License 与 GPL 兼容性
MPL-2.0 第 1.12 条将 GPL-2.0、LGPL-2.1、AGPL-3.0 及其以后版本定义为「Secondary License」。根据第 3.3 条,将 MPL 代码与 GNU 许可证代码结合而成的 Larger Work 可以按 GNU 许可证分发。但如果原作者在文件中附加了 Exhibit B(「Incompatible With Secondary Licenses」) 声明,则不适用这一兼容性。MPL-1.1 没有这种机制,因此与 GPL 不兼容,2.0 对此进行了改进。
常见误解
- 「使用 MPL 库,我的应用也会变成 MPL」 — 不是。我新编写的文件可以不采用 MPL。
- 「MPL 不能与 GPL 混用」 — 从 2.0 起,只要没有 Exhibit B 就可以。
- 「把 MPL 文件的代码复制粘贴到我的文件里,我的文件仍然自由」 — 移植过来的 MPL 代码部分仍然是 MPL。文件边界就是义务的边界,因此不要混合代码,按文件分开更安全。
如何应用
建议将原文放在 LICENSE 中,并在每个源文件顶部加上 Exhibit A 声明(「This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0…」)。如果难以放进文件中,也可以放在接收者可能查找的地方,比如该目录的 LICENSE 文件。SPDX 标识符为 MPL-2.0(带有 Exhibit B 时为 MPL-2.0-no-copyleft-exception)。
适用场景
当你希望收回对库或引擎本身的改进、又不想限制使用它的产品的许可证时,这是一个很好的折中方案。它的条件比 LGPL 简单,也没有静态链接问题。2023 年 HashiCorp 将 Terraform 从 MPL-2.0 改为 BUSL 后,社区将 MPL-2.0 版本分叉为 OpenTofu,这也是一个案例。
MPL-2.0 代码能放进其他项目吗?
以下是将以此许可证发布的代码合并到下列许可证的项目中一起发布时的一般判定。 在兼容性检查器中查看其他组合 →
| 目标项目 | 判定 | 备注 |
|---|---|---|
| 专有(商业)软件 | 有条件可以 | MPL 文件须按文件保持 MPL-2.0,并提供这些文件的源代码。其余代码可以使用其他许可证。 |
| MIT | 有条件可以 | MPL 文件须按文件保持 MPL-2.0,并提供这些文件的源代码。其余代码可以使用其他许可证。 |
| Apache-2.0 | 有条件可以 | MPL 文件须按文件保持 MPL-2.0,并提供这些文件的源代码。其余代码可以使用其他许可证。 |
| LGPL-2.1 | 有条件可以 | MPL-2.0 将 GPL-2.0 及以上、LGPL-2.1 及以上、AGPL-3.0 及以上认定为「Secondary License」,因此组合作品可以按 GNU 许可证发布。但如果原作者附加了「Incompatible With Secondary Licenses」(Exhibit B),则不可以。 |
| LGPL-3.0 | 有条件可以 | MPL-2.0 将 GPL-2.0 及以上、LGPL-2.1 及以上、AGPL-3.0 及以上认定为「Secondary License」,因此组合作品可以按 GNU 许可证发布。但如果原作者附加了「Incompatible With Secondary Licenses」(Exhibit B),则不可以。 |
| GPL-2.0 | 有条件可以 | MPL-2.0 将 GPL-2.0 及以上、LGPL-2.1 及以上、AGPL-3.0 及以上认定为「Secondary License」,因此组合作品可以按 GNU 许可证发布。但如果原作者附加了「Incompatible With Secondary Licenses」(Exhibit B),则不可以。 |
| GPL-3.0 | 有条件可以 | MPL-2.0 将 GPL-2.0 及以上、LGPL-2.1 及以上、AGPL-3.0 及以上认定为「Secondary License」,因此组合作品可以按 GNU 许可证发布。但如果原作者附加了「Incompatible With Secondary Licenses」(Exhibit B),则不可以。 |
| AGPL-3.0 | 有条件可以 | MPL-2.0 将 GPL-2.0 及以上、LGPL-2.1 及以上、AGPL-3.0 及以上认定为「Secondary License」,因此组合作品可以按 GNU 许可证发布。但如果原作者附加了「Incompatible With Secondary Licenses」(Exhibit B),则不可以。 |
本网站内容仅为一般信息,不构成法律意见。实际发布、合同或纠纷的判断,请咨询律师等专业人士。