前置知识: GitHub

开源许可证选择

3 minBeginner2026/6/14

开源许可证对比与选择:MIT、Apache、GPL等许可证的核心区别与适用场景。

1. 开源许可证概述

1.1 为什么需要许可证

没有许可证的代码默认受版权保护,他人无权使用、修改或分发。开源许可证明确授予这些权利。

1.2 许可证分

开源许可证
├── 宽松型(Permissive)
│   ├── MIT
│   ├── Apache 2.0
│   └── BSD
└── 传染型(Copyleft)
    ├── GPL v2
    ├── GPL v3
    └── AGPL

2. 主要许可证对比

特性MITApache 2.0GPL v3AGPL v3
商业使用
修改
分发
专利授权
闭源使用
必须开源
网络使用需开源
保留版权声明
声明变更

3. 许可证详解

3.1 MIT License

最流行的宽松许可证,几乎无限制

  • 可商业使用、修改、分发
  • 可闭源使用
  • 不提供专利保护
  • 要求:保留版权声明和许可证文本

适用:希望最大程度推广的项目、库和工具

3.2 Apache License 2.0

比 MIT 更完善的宽松许可证:

  • 所有 MIT 的权利
  • 专利授权:贡献者自动授予专利许可
  • 商标保护:不授予商标权
  • 要求:保留版权声明、声明变更、包含 NOTICE 文件

适用:企业级项目、需要专利保护的项目

3.3 GPL v3

最流行的传染型许可证:

  • 商业使用、修改、分发
  • 不能闭源分发:分发时必须提供源代码
  • 专利授权
  • 反 DRM(Tivoization)
  • 传染性:衍生作品必须使用 GPL

适用:希望确保代码永远开源的项目

3.4 AGPL v3

GPL 的网络增强版:

  • 所有 GPL v3 的条款
  • 网络使用也算分发:通过网络提供服务也必须开源
  • 适用:SaaS 场景,防止云厂商闭源使用

4. 选择决策

4.1 决策树

你希望别人如何使用你的代码?
├── 任意使用(包括闭源)→ MIT
├── 任意使用但需专利保护 → Apache 2.0
├── 衍生作品必须开源 → GPL v3
└── 网络服务也必须开源 → AGPL v3

4.2 按项目型选择

项目推荐许可证理由
工具库MIT最大程度推广
框架MIT / Apache 2.0便于商业采用
应用程序GPL v3保护开源生态
SaaS 服务AGPL v3防止闭源服务
企业项目Apache 2.0专利保护

5. 在 GitHub 上添加许可证

5.1 通过 GitHub 界面

  1. 仓库 → Add file → Create new file
  2. 输入 LICENSE
  3. GitHub 提供模板选择
  4. 选择许可证并提交

5.2 通过命令行

# 下载 MIT 许可证
curl -o LICENSE https://raw.githubusercontent.com/github/choosealicense.com/gh-pages/_licenses/mit.txt

# 编辑填入年份和姓名

5.3 package.json 中声明

{
  "license": "MIT"
}