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 代码不能直接用于闭源项目。
相关推荐
PBitW7 分钟前
工作中突然发现零宽字符串的作用了!
前端·javascript·vue.js
VeryCool8 分钟前
React Native新架构升级实战【从 0.62 到 0.72】
前端·javascript·架构
小小小小宇9 分钟前
JS匹配两数组中全相等对象
前端
xixixin_12 分钟前
【uniapp】uni.setClipboardData 方法失效 bug 解决方案
java·前端·uni-app
狂炫一碗大米饭12 分钟前
大厂一面,刨析题型,把握趋势🔭💯
前端·javascript·面试
星空寻流年18 分钟前
css3新特性第五章(web字体)
前端·css·css3
加油乐24 分钟前
JS计算两个地理坐标点之间的距离(支持米与公里/千米)
前端·javascript
小小小小宇25 分钟前
前端在 WebView 和 H5 环境下的缓存问题
前端
懒羊羊我小弟28 分钟前
React JSX 语法深度解析与最佳实践
前端·react.js·前端框架
冷冷清清中的风风火火32 分钟前
关于敏感文件或备份 安全配置错误 禁止通过 URL 访问 Vue 项目打包后的 .gz 压缩文件
前端·vue.js·安全