1312 字
7 分钟
开源协议是什么?几分钟带你了解几种最常见的开源协议!

在讲开源协议之前,我们先要弄清楚一个问题:什么是开源?

开源,最基本的含义就是公开源码,任何人都可以查看,修改,使用。

开源代码给了用户便利,也给了开发者好处。用户可以随便用开源的代码,也可以为源码修bug,提交新功能。总之,开源似乎是个一举两得的做法。

所以开源其实就是一种互助,我允许你用我的代码,你也可以为我的代码提交新功能。

目前你可以去全球比较知名的网站Github查看或发布开源工程,它的网址是Github.com(很多时候都登不上,可能需要科学上网)

开源协议#

可以看下面这张图,用一张逻辑图简介了各种开源协议的区别及作用(协议其实就是许可证,这里统称协议)

从右到左依次介绍一下:

Apache协议#

你拿走我的源码,可以把你的成果封起来不让别人用,但你必须放一个版权说明。

Apache 软件基金会(ASF)发布的一种开源许可证。它为用户和开发者提供了广泛的权利,使他们可以自由地使用、修改和分发软件。

协议名称允许商用允许修改必须公开修改源码衍生作品协议要求主要作用典型项目示例
Apache否(但需保留修改记录)必须使用相同协议强调专利授权,保护贡献者权益,适合商业公司参与的开源项目Apache Hadoop、Spark

Apache是一个比较宽松的协议,它既允许你商用,也允许你闭源。但必须标清楚哪里修改了源代码,且你用了使用Apache的源码生产的作品也必须使用Apache协议

MIT协议#

我的源码你随便用,商用闭源都无所谓,只要保留我的版权就行了。

协议名称允许商用允许修改必须公开修改源码衍生作品协议要求主要作用典型项目示例
MIT可使用不同协议宽松授权,允许自由使用、修改和分发,适合希望最大程度推广作品的场景React、Node.js

MIT是很宽松的协议,基本上你什么都可以干。这种源码是活菩萨一般的存在,也是Github上使用率较高的协议。

BSD协议#

我的源码你随便用,但是不能蹭我的流量。

协议名称允许商用允许修改必须公开修改源码衍生作品协议要求主要作用典型项目示例
BSD需保留原版权声明,不得用原作者名义推广宽松授权,比 MIT 多一项广告限制,适合学术或非商业主导的开源项目FreeBSD、NetBSD

也是很宽松的协议,但是不能用原作者的名字推广自己的作品想蹭流量是不可能的

GPL协议#

我都开源了你也得开源,而且也要和我用一样的协议

协议名称允许商用允许修改必须公开修改源码衍生作品协议要求主要作用典型项目示例
GPL是(修改后分发必须公开源码)必须使用相同协议保证软件及其衍生作品的开源性,防止被闭源商用,适合核心开源基础设施Linux 内核、GCC

比较严格的协议。首先它禁止了衍生作品的闭源,其次用GPL协议的开源项目完成的作品必须使用GPL协议。

LGPL,Mozilla协议#

这两个比较冷门,唯一的区别就是是否要对你在源码上修改的地方加说明。这里不再赘述了。好吧其实是因为我懒得写了

各大协议表格#

最后,把完整的表格列出来,方便读者阅览

协议名称允许商用允许修改必须公开修改源码衍生作品协议要求主要作用典型项目示例
MIT可使用不同协议宽松授权,允许自由使用、修改和分发,适合希望最大程度推广作品的场景React、Node.js
Apache否(但需保留修改记录)必须使用相同协议强调专利授权,保护贡献者权益,适合商业公司参与的开源项目Apache Hadoop、Spark
GPL是(修改后分发必须公开源码)必须使用相同协议保证软件及其衍生作品的开源性,防止被闭源商用,适合核心开源基础设施Linux 内核、GCC
LGPL是(仅修改库本身时需公开)库本身需用 LGPL,应用可自由选择允许闭源软件链接使用该库,平衡开源与商业需求,适合通用类库Qt(部分模块)、GNU C 库
BSD需保留原版权声明,不得用原作者名义推广宽松授权,比 MIT 多一项广告限制,适合学术或非商业主导的开源项目FreeBSD、NetBSD
开源协议是什么?几分钟带你了解几种最常见的开源协议!
https://fuwari.vercel.app/posts/cv0006/
作者
丘比女王
发布于
2025-08-12
许可协议
CC BY-NC-SA 4.0