不单调 發表於 2025-11-18 10:50:00

开源许可协议介绍

<p>开源许可协议(Open Source License)是一种法律文件,它定义了别人可以如何使用、修改、复制、分发你的开源软件(或开源硬件、文档等)。简单来说就是你把代码公开了,但不是随便谁想干嘛就干嘛,而是通过许可协议告诉大家允许你做什么、不允许你做什么。只有符合 OSI(Open Source Initiative) 批准的许可协议,才被正式认定为“开源许可”。目前 OSI 官方认可的大约有 100 多种,但真正常用的只有十来种。</p>
<blockquote>
<p>开源不等于免费,开源只管使用权,不限制收费。</p>
</blockquote>
<p>最常见的几类开源许可协议</p>
<table>
<thead>
<tr>
<th>许可类型</th>
<th>代表许可</th>
<th>核心特点(简单说)</th>
</tr>
</thead>
<tbody>
<tr>
<td>宽松许可(Permissive)</td>
<td>MIT</td>
<td>几乎无限制,只要保留版权声明就行</td>
</tr>
<tr>
<td></td>
<td>Apache 2.0</td>
<td>宽松 + 要求注明修改 + 专利授权</td>
</tr>
<tr>
<td></td>
<td>BSD (2/3/4-clause)</td>
<td>和 MIT 差不多,BSD-3 要删掉不背书条款</td>
</tr>
<tr>
<td>继承式/传染性许可(Copyleft)</td>
<td>GPL 家族(GPLv2、GPLv3、AGPLv3)</td>
<td>必须以相同许可开源衍生作品(“传染”)</td>
</tr>
<tr>
<td></td>
<td>LGPL(Lesser GPL)</td>
<td>允许被闭源软件以动态链接方式使用</td>
</tr>
<tr>
<td></td>
<td>MPL 2.0</td>
<td>文件级 copyleft(只改了的文件要开源)</td>
</tr>
<tr>
<td>商业+开源双许可</td>
<td>BSL(Business Source License)</td>
<td>几年后自动转为开源(如 MariaDB、Sentry)</td>
</tr>
</tbody>
</table>
<ul>
<li>MIT:几乎最宽松的开源协议,允许商业使用、修改、再发布、闭源,要求只保留版权声明和许可证文本。这是企业最喜欢的协议。嵌入式项目常见,比如 RT-Thread,一些驱动库等。</li>
<li>BSD:与 MIT 类似的宽松协议,已被 FreeBSD、OpenBSD、NetBSD 大量使用,适用于网络栈,系统层驱动,协议栈等。比如嵌入式中lwIP 使用 BSD。</li>
<li>Apache 2.0:允许闭源商业使用,明确了专利授权,企业尤其喜欢,因为减少了专利风险。适合涉及算法,通讯协议,有风险的项目。</li>
<li>GPLv2:凡是使用 GPL 代码的项目,分发时必须开源。适合想要求别人开源的项目。Linux kernel 是 GPLv2 → 所以大量嵌入式 Linux 项目必须按照 GPL 要求公布修改部分。</li>
<li>LGPL:是较为温和的GPL,链接库(动态库)可以闭源,修改库的部分才需要开源,常用于嵌入式库、C 库、协议栈等。</li>
<li>MPL 2.0:只要求你修改的文件开源,不要求整个工程开源,被 Mozilla、NXP、各种嵌入式工具使用。适合希望“微弱开源”,不想别人完全闭源但也不想 GPL 那么严格。</li>
</ul>
<h2 id="项目协议选择">项目协议选择</h2>
<table>
<thead>
<tr>
<th>需求</th>
<th>推荐协议</th>
</tr>
</thead>
<tbody>
<tr>
<td>想最简单地开源、别人随便用</td>
<td><strong>MIT</strong></td>
</tr>
<tr>
<td>想要企业级、更正式、带专利保护</td>
<td><strong>Apache 2.0</strong></td>
</tr>
<tr>
<td>想要求别人使用你的代码时必须开源</td>
<td><strong>GPLv3 / GPLv2</strong></td>
</tr>
<tr>
<td>想要求“部分文件开源”</td>
<td><strong>MPL 2.0 / LGPL</strong></td>
</tr>
</tbody>
</table>
<h2 id="发布个人嵌入式项目的开源声明示例">发布个人嵌入式项目的开源声明示例</h2>
<pre><code class="language-text">├── README.md
├── LICENSE          ← 你自己代码用 MIT(或 GPL)
└── COPYING          ← 直接放 Linux kernel 的 GPLv2 文本(必须)
</code></pre>
<blockquote>
<p>如果发布了固件二进制文件(.img / .bin / 刷机包等)</p>
<p>必须加一条获取源码的途径:如在 readme.md 文件中添加</p>
<p>本项目包含 GPLv2 代码(Linux kernel 等)。<br>
完整对应源代码已放在本仓库,直接下载本仓库即为完整源码。<br>
如需单独的源码包,可下载:https://github.com/你的用户名/你的项目/archive/refs/heads/main.zip</p>
</blockquote>
<ul>
<li>
<p>README.md</p>
<pre><code class="language-markdown"># MyLittleRouter

这是一个基于 Linux kernel 的个人嵌入式项目。

- Linux kernel 部分遵守 GNU GPLv2(见 COPYING 文件)
- 我自己写的代码(驱动、Web、脚本等)采用 MIT License(见 LICENSE 文件)
- 完整源码已全部上传本仓库,符合 GPLv2 要求
</code></pre>
</li>
<li>
<p>LICENSE</p>
<pre><code class="language-text">MIT License

Copyright (c) 2025 Your Name

Permission is hereby granted, free of charge, to any person obtaining a copy...
(标准 MIT 全文,复制粘贴即可)

或者如果使用 GPL:
This project is licensed under the GPLv2. See COPYING for details.
</code></pre>
</li>
<li>
<p>COPYING</p>
<pre><code class="language-text">GPL 协议全文
</code></pre>
</li>
<li>
<p>*NOTICE</p>
<p>附加法律声明,在某些复杂的许可证(如 Apache 2.0)或包含大量第三方依赖的项目中需要。它通常包含额外的版权声明和/或第三方依赖的许可信息。</p>
</li>
</ul><br><br>
来源:https://www.cnblogs.com/ayuan01/p/19236361/open-source-Protocol
頁: [1]
查看完整版本: 开源许可协议介绍