
直接在 GitHub 网页上创建
-
进入你的 GitHub 仓库
xml<ul> <li> <p>打开你的项目仓库页面(如 <code>https://github.com/用户名/仓库名</code>)。</p> </li> </ul> </li> <li> <p><strong>点击 "Add file" → "Create new file"</strong></p> <ul> <li> <p>在仓库主页,点击右上角的 <strong>"Add file"</strong> 按钮,然后选择 <strong>"Create new file"</strong>。</p> </li> </ul> </li> <li> <p><strong>输入文件名 <code>LICENSE</code>(或 <code>LICENSE.md</code>)</strong></p> <ul> <li> <p>在文件名输入框输入 <code>LICENSE</code>(全部大写),GitHub 会自动识别它是一个许可证文件。</p> </li> </ul> </li> <li> <p><strong>选择 MIT License 模板</strong></p> <ul> <li> <p>GitHub 提供了常见许可证的模板。在输入文件名后,你会看到一个按钮 <strong>"Choose a license template"</strong>,点击它。</p> </li> <li> <p>在弹出窗口中选择 <strong>"MIT License"</strong>。</p> </li> <li> <p>修改 <code>[year]</code> 为当前年份(如 <code>2024</code>),<code>[fullname]</code> 为你的名字或组织名(如 <code>Your Name</code> 或 <code>Your Organization</code>)。</p> </li> </ul> </li> <li> <p><strong>提交更改</strong></p> <ul> <li> <p>点击 <strong>"Commit changes"</strong>,填写提交信息(如 <code>Add MIT License</code>),然后确认提交。</p> </li> </ul> </li>
开源协议
开源协议(Open Source License)种类繁多,每种协议对代码的使用、修改、分发等都有不同的要求和限制。以下是常见的开源协议及其主要区别:
1. 宽松型协议(Permissive Licenses)
允许用户自由使用、修改、分发代码,几乎无限制,通常只需保留版权声明和许可协议。
常见协议:
-
MIT License
css<ul> <li><strong>特点</strong>:简单、宽松,允许商用、修改、私有化,只需保留版权声明和许可文件。</li> <li><strong>适用场景</strong>:个人项目、小型开源库(如 jQuery、React)。</li> </ul> </li> <li> <p><strong>Apache License 2.0</strong></p> <ul> <li><strong>特点</strong>:类似 MIT,但明确授予专利授权,并要求修改文件需标注变更说明。</li> <li><strong>适用场景</strong>:大型开源项目(如 Android、Kubernetes)。</li> </ul> </li> <li> <p><strong>BSD 2-Clause/3-Clause</strong></p> <ul> <li><strong>特点</strong>:与 MIT 类似,3-Clause 版禁止用作者名义推广衍生作品。</li> <li><strong>适用场景</strong>:学术或商业项目(如 FreeBSD)。</li> </ul> </li>
2. Copyleft 协议(强保护型协议)
要求衍生作品必须以相同协议开源,确保代码自由性不被私有化。
常见协议:
-
GNU GPL (General Public License)
css<ul> <li><strong>GPLv2</strong>:衍生作品必须开源,且整体项目需遵循 GPL(如 Linux 内核)。</li> <li><strong>GPLv3</strong>:新增对专利和硬件限制的条款(如 Bash)。</li> </ul> </li> <li> <p><strong>AGPL (Affero GPL)</strong></p> <ul> <li><strong>特点</strong>:GPL 的加强版,要求网络服务(SaaS)也必须开源代码(如 MongoDB 曾使用)。</li> </ul> </li> <li> <p><strong>LGPL (Lesser GPL)</strong></p> <ul> <li><strong>特点</strong>:宽松版 GPL,允许动态链接闭源软件(如 GTK 库)。</li> </ul> </li>
3. 其他常见协议
-
Mozilla Public License 2.0 (MPL)
css<ul> <li><strong>特点</strong>:介于宽松和 Copyleft 之间,要求文件级开源,但可组合闭源代码(如 Firefox)。</li> </ul> </li> <li> <p><strong>Eclipse Public License 2.0 (EPL)</strong></p> <ul> <li><strong>特点</strong>:类似 MPL,但衍生作品需开源(如 Eclipse IDE)。</li> </ul> </li> <li> <p><strong>Creative Commons (CC)</strong></p> <ul> <li><strong>非软件协议</strong>,用于文档、艺术作品(如 CC BY-SA 要求署名且相同方式共享)。</li> </ul> </li>
核心区别对比
协议类型 | 允许闭源 | 要求衍生作品开源 | 专利授权 | 典型代表 |
---|---|---|---|---|
MIT | ✅ | ❌ | ❌ | React, Ruby on Rails |
Apache 2.0 | ✅ | ❌ | ✅ | Android, Kafka |
GPL | ❌ | ✅(整体项目) | ✅ | Linux, GIMP |
AGPL | ❌ | ✅(含 SaaS) | ✅ | MongoDB(旧版) |
LGPL | ✅(动态链接) | ❌(仅修改部分) | ✅ | GTK, FFmpeg |
如何选择?
- 希望代码自由使用:选 MIT/BSD/Apache。
- 防止代码被私有化:选 GPL/AGPL。
- 库或工具开发:宽松协议(MIT)或弱 Copyleft(LGPL)。
- 注意兼容性:GPL 代码不能直接用于闭源项目。