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 代码不能直接用于闭源项目。
相关推荐
Rverdoser16 分钟前
代理服务器运行速度慢是什么原因
开发语言·前端·php
陌尘(MoCheeen)18 分钟前
技术书籍推荐(002)
java·javascript·c++·python·go
航Hang*34 分钟前
前端项目2-01:个人简介页面
前端·经验分享·html·css3·html5·webstorm
油丶酸萝卜别吃1 小时前
openlayers利用已知的三个经纬度的坐标点 , 绘制一个贝塞尔曲线
javascript
MaisieKim_1 小时前
python与nodejs哪个性能高
前端·python·node.js
Spider Cat 蜘蛛猫1 小时前
【一】浏览器的copy as fetch和copy as bash的区别
javascript·ajax·bash·逆向·fetch
Frankabcdefgh1 小时前
前端进化论·JavaScript 篇 · 数据类型
javascript·安全·面试·数据类型·操作符·初学者·原理解析
水煮白菜王1 小时前
深入理解 Webpack 核心机制与编译流程
前端·webpack·node.js
梦幻通灵1 小时前
Excel分组计算求和的两种实现方案
前端·excel
geovindu2 小时前
vue3: pdf.js 3.4.120 using javascript
开发语言·javascript·vue.js·pdf