Mozilla 公共许可证 2.0 (MPL 2.0)

概述

Mozilla 公共许可证(Mozilla Public License,MPL)是一个由 Mozilla 基金会开发的开源软件许可证,平衡了 copyleft 和宽松许可证的特点。

版本: 2.0,2012 年 1 月 3 日
官方 URL: https://www.mozilla.org/en-US/MPL/2.0/

核心特点

MPL 2.0 是一个文件级 copyleft许可证,这意味着:

  • 对 MPL 许可的文件的修改必须继续使用 MPL 许可
  • 可以与其他许可证的代码组合使用
  • 比 GPL 更宽松,比 MIT/BSD 更严格

你可以做什么

✅ 使用和分发 (Use & Distribution)

  • 商业使用 - 可以在商业产品中使用
  • 分发 - 可以以源代码或二进制形式分发
  • 修改 - 可以修改 MPL 许可的代码
  • 组合 - 可以与其他许可证的代码结合

✅ 专利保护

  • 专利许可 - 自动获得贡献者的专利许可
  • 专利报复条款 - 如果你起诉任何人侵犯专利,你的许可自动终止

✅ 重新许可

在某些条件下,MPL 代码可以重新许可为:

  • GPL 2.0+ - 如果文件头包含兼容声明
  • LGPL 2.1+ - 如果文件头包含兼容声明
  • AGPL 3.0+ - 如果文件头包含兼容声明

义务和要求

📝 源代码披露

  • 修改的 MPL 文件 - 必须以 MPL 2.0 许可发布源代码
  • 仅限修改的文件 - 只需要发布修改过的 MPL 文件的源代码
  • 其他文件不受影响 - 专有代码可以保持专有

📋 必须保留的信息

  • 许可证头 - 每个 MPL 文件必须保留许可证头
  • 版权声明 - 保留所有版权和许可证声明
  • 变更记录 - 记录对文件的重大修改

🔄 分发要求

分发包含 MPL 代码的软件时:

  • 源代码可用性 - 确保 MPL 文件的源代码可获得
  • 许可证通知 - 包含 MPL 许可证文本
  • 变更说明 - 说明对 MPL 文件的修改

与其他许可证的兼容性

✅ 兼容的许可证

可以与以下许可证组合:

  • MIT/BSD - 宽松许可证
  • Apache 2.0 - 类似的专利条款
  • 专有许可证 - 在单独的文件中

🔄 有条件兼容

  • GPL 2.0+ - 需要兼容声明
  • LGPL 2.1+ - 需要兼容声明
  • AGPL 3.0+ - 需要兼容声明

❌ 不兼容的许可证

  • GPL 2.0 (仅限) - 没有"或更高版本"条款
  • 某些专有许可证 - 可能有冲突条款

文件级 Copyleft 的含义

📁 文件级别的规则

  • 单个文件 - 每个文件独立考虑许可
  • 修改文件 - 修改 MPL 文件必须保持 MPL 许可
  • 新文件 - 新添加的文件可以使用不同许可证

🔗 链接和组合

  • 静态链接 - 允许与专有代码静态链接
  • 动态链接 - 允许与专有代码动态链接
  • 同一可执行文件 - MPL 和专有代码可以在同一程序中

专利条款

⚖️ 专利许可

  • 自动授权 - 贡献者自动授予专利许可
  • 范围 - 仅限于其贡献所必需的专利
  • 防御性 - 保护用户免受专利诉讼

🛡️ 专利报复

如果你对任何人提起专利诉讼,声称 MPL 许可的软件侵犯专利:

  • 你的 MPL 许可立即终止
  • 适用于所有 MPL 2.0 许可的软件,不仅是被诉讼的软件

实际应用场景

✅ 适合 MPL 2.0 的项目

  • 库和框架 - 可以被专有软件使用
  • 开发工具 - 编译器、编辑器等
  • 企业软件组件 - 需要商业友好的 copyleft
  • 混合许可项目 - 部分开源、部分专有

⚠️ 需要考虑的场景

  • 纯开源项目 - GPL 可能更合适
  • 简单工具 - MIT/BSD 可能更简单
  • Web 服务 - AGPL 可能更合适防止服务化规避

合规指南

📦 分发二进制文件时

  1. 包含许可证文本 - 完整的 MPL 2.0 文本
  2. 列出 MPL 文件 - 说明哪些文件使用 MPL 许可
  3. 提供源代码 - 确保 MPL 文件的源代码可获得
  4. 保留通知 - 保留所有版权和许可证通知

💻 分发源代码时

  1. 保留文件头 - 每个 MPL 文件的许可证头
  2. 包含许可证 - 完整的 MPL 2.0 文本
  3. 标记修改 - 清楚标示对文件的修改

🔧 修改 MPL 文件时

  1. 保持 MPL 许可 - 修改的文件必须保持 MPL 2.0
  2. 添加版权 - 为重大修改添加版权声明
  3. 记录变更 - 在文件中或变更日志中记录修改

与其他 Mozilla 项目的关系

🦊 Firefox

Firefox 使用 MPL 2.0,允许:

  • 商业发行版(如企业版本)
  • 专有扩展和插件
  • 嵌入到专有产品中

📧 Thunderbird

类似地,Thunderbird 的 MPL 许可允许商业使用和定制。

常见问题

Q: 我可以在专有软件中使用 MPL 库吗? A: 是的,但必须保持 MPL 文件的 copyleft 性质,并提供这些文件的源代码。

Q: 如果我修改了 MPL 文件,整个项目都必须开源吗? A: 不是,只有修改的 MPL 文件需要开源,其他文件可以保持专有。

Q: MPL 与 GPL 的主要区别是什么? A: MPL 是文件级 copyleft,GPL 是项目级 copyleft。MPL 允许与专有代码更容易地组合。

Q: 我需要为使用 MPL 库支付许可费吗? A: 不需要,MPL 是免费的开源许可证。

最佳实践

📋 许可证管理

  • 维护清单 - 跟踪所有 MPL 文件
  • 自动化检查 - 使用工具检查许可证合规性
  • 培训团队 - 确保开发者理解 MPL 要求

🔍 代码审查

  • 检查新文件 - 确保适当的许可证头
  • 验证修改 - 确保修改的 MPL 文件保持合规
  • 文档化决策 - 记录许可证选择的原因

法律声明

本文档是 MPL 2.0 的简化说明,不具有法律效力。使用前请仔细阅读完整的许可证文本。

Mozilla 基金会不是律师事务所,不提供法律服务。分发、显示或链接到此摘要不会建立律师-客户关系。