下面我来用通俗易懂的方式为你详细介绍主流的开源许可证,包括它们分别允许你干什么(✅ 权利)和限制你干什么(⚠️ 义务/限制)。这对你未来使用或开源项目非常重要。

🧭 总览:开源许可证怎么选?不同的许可证,在“能不能闭源”、“要不要公开修改”、“能不能商用”这些点上差异最大。

许可证

商业可用

闭源可用

修改后是否必须开源

适合谁

MIT

❌ 不强制

开发者、初创

Apache 2.0

❌ 不强制

企业、平台级

BSD 3-Clause

❌ 不强制

教学、研究

GPL v3

✅ 强制

注重自由的开源社区

LGPL v3

✅(限度)

✅ (库级别)

做库的人

MPL 2.0

✅(文件级)

平衡自由和开源

🎯 1. MIT License(最宽松)✅ 权利:

可以免费使用、复制、修改、分发;

可以闭源使用(你修改了也不需要开源);

可以用于商业用途。

⚠️ 义务:

保留原作者的许可证和版权声明;

没有担保,出错作者不负责。

✅ 适合: 快速开发、创业、发库、个人项目。📌 举例:React、jQuery、Vue(早期)都用了 MIT。

🎯 2. Apache License 2.0(商业友好)✅ 权利:

跟 MIT 类似,也可以商用、修改、闭源;

还增加了对专利的保护,大公司更喜欢;

可以再授权给别人使用。

⚠️ 义务:

保留许可证;

说明你有没有修改代码;

不能乱用原作者的商标(比如 Apache Logo);

无担保。

✅ 适合: 公司平台、需要规避专利风险的项目。📌 举例:TensorFlow、Kubernetes、Android 系统核心组件。

🎯 3. BSD License(学术背景)有两种:BSD 2-Clause 和 BSD 3-Clause(多了个“不能用作者名背书”条款)

✅ 权利:

和 MIT 类似,自由使用、修改、商用;

不要求开源修改;

无限制分发。

⚠️ 义务:

保留版权信息和许可条款;

不可使用作者名字为你项目背书。

✅ 适合: 教学科研、低限制应用。📌 举例:FreeBSD、OpenCV、PostgreSQL。

🎯 4. GPL(通用公共许可证)📌 这是最有争议的一个,也是最严格的。

✅ 权利:

免费使用、修改、分发;

强制开源:你修改了,就必须开源出来!

⚠️ 限制:

不能闭源商用:只要你“发布”了修改版软件,就必须把你自己写的部分也一起开源;

用了 GPL 的库,整个软件可能也必须 GPL;

一旦用了,不能悔改闭源。

⚠️ 适合: 重视自由的开源项目,如 GNU 工具、Linux Kernel。📌 举例:GNU、WordPress、Linux Kernel(部分)。

🎯 5. LGPL(宽松版 GPL)✅ 权利:

你可以把 LGPL 开源库嵌入你的闭源应用里;

不影响你的代码闭源,只要库本身不改。

⚠️ 限制:

如果你修改了 LGPL 的库,必须开源你改的部分;

如果只是链接调用,不用开源主项目。

✅ 适合: 做工具库、组件,不想强制别人开源。📌 举例:FFmpeg、glibc。

🎯 6. MPL 2.0(文件级别开源)✅ 权利:

商业友好,可闭源使用;

修改的部分 只要你改了某个文件,就开源那个文件就行(不像 GPL 是整个项目)。

⚠️ 限制:

保留 MPL 文件的许可证;

修改后的文件开源,但其他文件不用。

✅ 适合: 希望部分共享、又希望灵活控制开源范围的项目。📌 举例:Firefox、Thunderbird、Rust 编译器。

✅ 总结一句话记住这些许可证:

许可证

一句话记忆

MIT

“随便用,记得署名”

Apache 2.0

“随便用,别抢我商标”

BSD

“学术界的 MIT”

GPL

“用了我的就都得开源”

LGPL

“我开源,但你可以闭源用”

MPL

“改我,就开我;不改,不开”