编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 质量保障

  • 产品思考

  • 软实力

  • 开发流程

  • Git应用

  • 技术模版

  • 技术规范

  • markdown

  • mermaid

  • license

    • 开源协议完全指南
    • MIT开源协议详解 协议详解
    • Apache开源协议详解 2.0 协议详解
    • GPL与LGPL协议详解 与 LGPL 协议详解
    • BSD与MPL协议详解
      • 一、BSD 协议:比 MIT 多一句话
        • 1.1 三个版本的差异
        • 1.2 BSD 3-Clause 禁止背书条款
        • 1.3 MIT vs BSD 实际区别
        • 1.4 代表项目
      • 二、MPL 2.0:文件级传染
        • 2.1 MPL 解决了什么问题
        • 2.2 文件级传染的实际效果
        • 2.3 MPL 2.0 的其他特点
        • 2.4 代表项目
      • 三、BSD vs MPL vs GPL vs Apache 一图对比
      • 四、如何选择 BSD / MPL
      • 五、总结
    • 开源协议企业实战与常见误区
  • 博客部署

  • 技术招聘

  • 测试经验

  • 技术
  • license
杨充
2025-06-06
目录

BSD与MPL协议详解

# BSD 与 MPL 协议详解

# 一、BSD 协议:比 MIT 多一句话

BSD(Berkeley Software Distribution)是加州大学伯克利分校在 1980 年代发布的。它和 MIT 出自同一时代,目标一致:尽可能宽松,让代码被更多人使用。

# 1.1 三个版本的差异

BSD 2-Clause(简化版):
1. 保留版权声明
2. 保留免责声明
→ 和 MIT 几乎一模一样

BSD 3-Clause(修订版):
1. 保留版权声明
2. 保留免责声明
3. 禁止用作者/机构名义做背书
→ = MIT + "禁止拿我名字做推广"

BSD 4-Clause(原始版,已废弃):
1. 保留版权声明
2. 保留免责声明
3. 禁止用作者/机构名义做背书
4. 所有广告材料必须致谢原作者 ← 这条让很多商业公司不爽,已不再使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 1.2 BSD 3-Clause 禁止背书条款

Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
1
2
3

翻译:未经许可,你不能说"本产品由 XX 大学/机构支持"。

# 1.3 MIT vs BSD 实际区别

MIT BSD 3-Clause
自由度 极高 极高
署名要求 ✅ ✅
禁止背书 ❌ ✅
文本长度 2 段 3 段
实际使用差别 几乎没有 几乎没有

绝大多数场景下 MIT 和 BSD 3-Clause 可以互换。 Go 语言用 BSD 3-Clause,Node.js 用 MIT——只是为了遵循各自的历史惯例。

# 1.4 代表项目

项目 协议
Go BSD 3-Clause
FreeBSD BSD 2-Clause
Nginx BSD 2-Clause
Flutter BSD 3-Clause
React Native (部分) BSD

# 二、MPL 2.0:文件级传染

# 2.1 MPL 解决了什么问题

Mozilla Public License 由 Mozilla 基金会设计,目标是在 MIT 和 GPL 之间找到一个中间点。

MIT:    完全不传染,改了可以闭源
GPL:    强传染,整个项目必须开源
MPL 2.0:文件级传染,改了哪个文件,哪个文件必须开源
1
2
3

# 2.2 文件级传染的实际效果

my-project/
├── src/
│   ├── my-code.js           ← 闭源,OK
│   ├── mpl-library.js       ← MPL 库,你改了一行
│   │                           → 这个文件必须开源(MPL)
│   └── another-file.js      ← 闭源,OK(没用 MPL 代码)
1
2
3
4
5
6

关键规则:

  • 你添加的文件 → 可以用任何协议(包括闭源)
  • 你修改了 MPL 文件 → 该文件必须用 MPL 开源
  • 你的项目里混合了 MPL 和闭源代码 → 合法 ✅

# 2.3 MPL 2.0 的其他特点

特点 说明
专利授权 ✅ 显式授予(类似 Apache 2.0)
兼容 GPL ✅ 与 GPL v2/v3 兼容
兼容 Apache ✅
商标保护 ✅ 类似 Apache 2.0
通知义务 修改过的文件需要标注

# 2.4 代表项目

项目 说明
Firefox Mozilla 自己的浏览器
Thunderbird Mozilla 邮件客户端
Rust 标准库 部分用 MPL 2.0
LibreOffice MPL v2.0(双重授权)

# 三、BSD vs MPL vs GPL vs Apache 一图对比

传染性从无到强:

Unlicense     ─── 放弃一切权利
MIT          ─── 只需保留版权(第2章)
BSD 2/3      ─── MIT + 可选禁止背书(本章)
Apache 2.0   ─── MIT + 专利 + NOTICE(第3章)
MPL 2.0      ─── 改了谁,谁开源(本章)        ← 文件级传染
LGPL         ─── 动态链接不传染(第4章)       ← 温和传染
GPL v3       ─── 整个项目必须开源(第4章)     ← 强传染
AGPL         ─── GPL v3 + SaaS 也传染(第4章) ← 极强传染
1
2
3
4
5
6
7
8
9
10

# 四、如何选择 BSD / MPL

你的需求是什么?
│
├── 和 MIT 一样宽松,但不想别人拿你名字推广
│   → BSD 3-Clause
│
├── 和 MIT 一样宽松,不介意任何推广
│   → BSD 2-Clause 或 MIT
│
├── 想在商业产品中混合开源和闭源代码
│   → MPL 2.0
│
├── 希望修改你代码的人必须回馈修改
│   但不想传染整个项目
│   → MPL 2.0
│
└── Go 语言项目 → 继续用 BSD 3-Clause(惯例)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 五、总结

协议 核心特点 适合场景
BSD 2-Clause 与 MIT 等价 个人项目,无所谓
BSD 3-Clause MIT + 禁止背书 学术机构、重视名誉
MPL 2.0 文件级传染 + 专利授权 商业/开源混合项目
#BSD#MPL#开源协议
上次更新: 2026/06/07, 21:36:05
GPL与LGPL协议详解 与 LGPL 协议详解
开源协议企业实战与常见误区

← GPL与LGPL协议详解 与 LGPL 协议详解 开源协议企业实战与常见误区→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式