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

浙公网安备 33010602011771号