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 可能更合适防止服务化规避
合规指南
📦 分发二进制文件时
- 包含许可证文本 - 完整的 MPL 2.0 文本
- 列出 MPL 文件 - 说明哪些文件使用 MPL 许可
- 提供源代码 - 确保 MPL 文件的源代码可获得
- 保留通知 - 保留所有版权和许可证通知
💻 分发源代码时
- 保留文件头 - 每个 MPL 文件的许可证头
- 包含许可证 - 完整的 MPL 2.0 文本
- 标记修改 - 清楚标示对文件的修改
🔧 修改 MPL 文件时
- 保持 MPL 许可 - 修改的文件必须保持 MPL 2.0
- 添加版权 - 为重大修改添加版权声明
- 记录变更 - 在文件中或变更日志中记录修改
与其他 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 基金会不是律师事务所,不提供法律服务。分发、显示或链接到此摘要不会建立律师-客户关系。