编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • 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协议详解
    • 开源协议企业实战与常见误区
  • 博客部署

  • 技术招聘

  • 测试经验

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

开源协议完全指南

# 开源协议完全指南

选择正确的开源协议是每个开发者的必修课——一份协议决定了你的代码将如何被他人使用。

# 协议速查表

协议 商用 修改 分发 闭源 专利 传染性
MIT ✅ ✅ ✅ ✅ ❌ 无
Apache 2.0 ✅ ✅ ✅ ✅ ✅ 无
BSD ✅ ✅ ✅ ✅ ❌ 无
GPL ✅ ✅ ✅ ❌ ❌ 强
LGPL ✅ ✅ ✅ ✅ ❌ 弱
MPL ✅ ✅ ✅ ✅ ❌ 文件级
AGPL ✅ ✅ ✅ ❌ ❌ 网络强

# 学习路线

01.MIT → 02.Apache → 03.GPL/LGPL → 04.BSD/MPL → 05.企业实战
1
编号 文章 核心内容
01 MIT开源协议详解 最宽松协议/Vue/React/jQuery 都在用
02 Apache开源协议详解 含专利保护/Kubernetes/Android 的选择
03 GPL与LGPL协议详解 传染性强弱对比/Linux/FFmpeg 的使用
04 BSD与MPL协议详解 中间地带/文件级 copyleft
05 企业开源实战与误区 GitHub添加/package.json声明/依赖扫描/常见误区

# 一句话选协议

你的需求 推荐
"随便用,不需要署名" MIT / 公共领域
"随便用,但保留专利权利" Apache 2.0
"用了我的代码,你的代码也要开源" GPL
"除了我家的库,其他代码可以闭源" LGPL
"改了我家的文件就开源,其他随意" MPL

# 常见误区

  1. "开源就是免费" - 开源 ≠ 免费,GPL 要求衍生作品也必须开源
  2. "没写协议就安全" - 没写协议默认保留所有权利,别人不能用
  3. "GitHub 上的代码随便用" - 没有 License 就默认 All Rights Reserved
  4. "MIT 不需要署名" - MIT 要求保留版权声明
  5. "商用项目不能用 GPL 代码" - 可以用,但整个项目必须 GPL 开源

# 选择决策树

你的目标是什么?
│
├── 个人小工具,无所谓别人怎么用
│   → MIT(02.MIT详解)
│
├── 公司项目,需要专利保护
│   → Apache 2.0(03.Apache详解)
│
├── 核心产品,不想被竞品闭源复制
│   → GPL v3(04.GPL/LGPL详解)
│
├── 基础库,既想保护又想商业可用
│   → LGPL 或 MPL 2.0(04-05章)
│
├── 完全放弃所有权利
│   → Unlicense
│
└── 不确定 → 默认选 MIT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

核心原则:选协议前先想清楚——你希望别人怎么用你的代码?你愿意承受怎样的限制?

#开源协议
上次更新: 2026/06/07, 21:36:05
Mermaid 综合实战
MIT开源协议详解 协议详解

← Mermaid 综合实战 MIT开源协议详解 协议详解→

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