编程进阶网 编程进阶网
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机组成原理
  • 操作系统原理
  • 网络协议原理
  • 数据库系统原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机组成原理
  • 操作系统原理
  • 网络协议原理
  • 数据库系统原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • 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 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.

翻译:未经许可,你不能说"本产品由 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:文件级传染,改了哪个文件,哪个文件必须开源

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

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

关键规则:

  • 你添加的文件 → 可以用任何协议(包括闭源)
  • 你修改了 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章) ← 极强传染

# 四、如何选择 BSD / MPL

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

# 五、总结

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

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

最近更新
01
科学方法实践论法
06-28
02
辩证思维矛盾论法
06-28
03
毛选中的调查观念
06-28
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 鄂ICP备2024073355号-1 | 鄂ICP备2024073355号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式