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 代码不能直接用于闭源项目。
相关推荐
Nueuis1 小时前
微信小程序前端面经
前端·微信小程序·小程序
_r0bin_3 小时前
前端面试准备-7
开发语言·前端·javascript·fetch·跨域·class
IT瘾君3 小时前
JavaWeb:前端工程化-Vue
前端·javascript·vue.js
zhang98800003 小时前
JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
开发语言·javascript·vue.js
potender3 小时前
前端框架Vue
前端·vue.js·前端框架
站在风口的猪11084 小时前
《前端面试题:CSS预处理器(Sass、Less等)》
前端·css·html·less·css3·sass·html5
程序员的世界你不懂4 小时前
(9)-Fiddler抓包-Fiddler如何设置捕获Https会话
前端·https·fiddler
MoFe15 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore
去旅行、在路上5 小时前
chrome使用手机调试触屏web
前端·chrome
Aphasia3116 小时前
模式验证库——zod
前端·react.js