github开源项目添加开源协议,使用很简单

直接在 GitHub 网页上创建

  1. 进入你的 GitHub 仓库

    xml 复制代码
    <ul>
    	<li>
    	<p>打开你的项目仓库页面(如&nbsp;<code>https://github.com/用户名/仓库名</code>)。</p>
    	</li>
    </ul>
    </li>
    <li>
    <p><strong>点击 &quot;Add file&quot; &rarr; &quot;Create new file&quot;</strong></p>
    
    <ul>
    	<li>
    	<p>在仓库主页,点击右上角的&nbsp;<strong>&quot;Add file&quot;</strong>&nbsp;按钮,然后选择&nbsp;<strong>&quot;Create new file&quot;</strong>。</p>
    	</li>
    </ul>
    </li>
    <li>
    <p><strong>输入文件名&nbsp;<code>LICENSE</code>(或&nbsp;<code>LICENSE.md</code>)</strong></p>
    
    <ul>
    	<li>
    	<p>在文件名输入框输入&nbsp;<code>LICENSE</code>(全部大写),GitHub 会自动识别它是一个许可证文件。</p>
    	</li>
    </ul>
    </li>
    <li>
    <p><strong>选择 MIT License 模板</strong></p>
    
    <ul>
    	<li>
    	<p>GitHub 提供了常见许可证的模板。在输入文件名后,你会看到一个按钮&nbsp;<strong>&quot;Choose a license template&quot;</strong>,点击它。</p>
    	</li>
    	<li>
    	<p>在弹出窗口中选择&nbsp;<strong>&quot;MIT License&quot;</strong>。</p>
    	</li>
    	<li>
    	<p>修改&nbsp;<code>[year]</code>&nbsp;为当前年份(如&nbsp;<code>2024</code>),<code>[fullname]</code>&nbsp;为你的名字或组织名(如&nbsp;<code>Your Name</code>&nbsp;或&nbsp;<code>Your Organization</code>)。</p>
    	</li>
    </ul>
    </li>
    <li>
    <p><strong>提交更改</strong></p>
    
    <ul>
    	<li>
    	<p>点击&nbsp;<strong>&quot;Commit changes&quot;</strong>,填写提交信息(如&nbsp;<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

如何选择?

  1. 希望代码自由使用:选 MIT/BSD/Apache。
  2. 防止代码被私有化:选 GPL/AGPL。
  3. 库或工具开发:宽松协议(MIT)或弱 Copyleft(LGPL)。
  4. 注意兼容性:GPL 代码不能直接用于闭源项目。
相关推荐
boooooooom几秒前
Vue3 provide/inject 跨层级通信:最佳实践与避坑指南
前端·vue.js
一颗烂土豆几秒前
Vue 3 + Three.js 打造轻量级 3D 图表库 —— chart3
前端·vue.js·数据可视化
青莲8431 分钟前
Android 动画机制完整详解
android·前端·面试
iReachers4 分钟前
HTML打包APK(安卓APP)中下载功能常见问题和详细介绍
前端·javascript·html·html打包apk·网页打包app·下载功能
颜酱6 分钟前
前端算法必备:双指针从入门到很熟练(快慢指针+相向指针+滑动窗口)
前端·后端·算法
lichenyang4537 分钟前
从零开始:使用 Docker 部署 React 前端项目完整实战
前端
明月_清风9 分钟前
【开源项目推荐】Biome:让前端代码质量工具链快到飞起来
前端
愈努力俞幸运9 分钟前
vue3 demo教程(Vue Devtools)
前端·javascript·vue.js
持续前行10 分钟前
在 Vue3 中使用 LogicFlow 更新节点名称
前端·javascript·vue.js
Anita_Sun10 分钟前
Underscore.js 整体设计思路与架构分析
前端·javascript