关键词:开源许可证、open source license、MIT、BSD、Apache、LGPL、Mozila、MPL、GPL、Github、申请、声明
一、什么是开源许可证?
是什么: 一种法律许可;
作用: 允许用户可以免费的使用、修改、共享版权软件;
目的: 规范软件(受著作权保护的软件)使用或者 分发 行为。
二、开源许可证分类
- 宽松式许可证(permissive license)
- Copyleft 许可证
三、常见开源许可证
世界上开源许可证有上百种,常用的有六种 MIT、BSD、Apache、LGPL、Mozilla、 GPL。
分类:
宽松式许可证(permissive license): MIT、BSD、Apache
Copyleft 许可证: LGPL、Mozilla、 GPL
分析图:
参考乌克兰程序员Paul Bagwell,画了一张分析图,简单清晰的描绘了该如何选择 开源许可证。
分析图源地址:开源许可证分析图
四:常见许可证说明:
1. MIT许可证
来源于麻省理工大学,MIT 许可证是史上最为简洁和慷慨(permissive)的开源协议之一。
说明:
- 没有使用限制 用户可以使用代码,做任何想做的事情。
- 没有担保 不保证代码质量,用户自担风险。
- 披露要求 用户必须披露原始作者。
- 分发 软件时,必须保留原始的许可证声明。
应用案例:
2. BSD许可证
来源于大学,BSD可证与MIT差不多,也非常简单、慷慨,只是不能用于促销。
说明:
- 没有使用限制 用户可以使用代码,做任何想做的事情。
- 没有担保 不保证代码质量,用户自担风险。
- 披露要求 用户必须披露原始作者。
- 软件分发时,不能使用作者的名义促销。
应用案例:
3. Apache许可证
来自apache,类似MIT许可证,但它重视专利权。
说明:
- 没有使用限制 用户可以使用代码,做任何想做的事情。
- 没有担保 不保证代码质量,用户自担风险。
- 披露要求 用户必须披露原始作者。
- 用户修改过的文件 -- 必须注明。
- 用户没有修改过的文件 -- 必须保持许可证不变。
应用案例:
4. LGPL许可证
来源自由软件联盟GNU,可以翻译为更宽松的GPL协议,属于 传染性开源 。
说明:
- 如果 分发 二进制格式,必须提供源码。
- 修改后的源码,必须与修改前保持许可证一致。
- 不得在原始许可证以外,附加其他限制。
- 如果项目只是调用该LGPL许可证的库,则该项目可以不用开源。
应用案例:
5. Mozila许可证
Mozilla公共许可证(英语:Mozilla Public License,简称MPL)是个自由、开源、详细的软件许可证,由Mozilla基金会开发并维护。
说明:
- 如果 分发 二进制格式,必须提供源码。
- 修改后的源码,必须与修改前保持许可证一致。
- 不得在原始许可证以外,附加其他限制。
- 只要该许可证的代码在单独的文件中,新增的其他文件可以不用开源。
应用案例:
6. GPL许可证
来源自由软件联盟GNU,也属于 传染性开源 。
说明:
- 如果分发二进制格式,必须提供源码。
- 修改后的源码,必须与修改前保持许可证一致。
- 不得在原始许可证以外,附加其他限制。
- 如果项目包含了 GPL 许可证的代码,那么整个项目都必须使用 GPL 许可证。
应用案例:
五、Github 许可证查看及申请
查看声明
添加声明
第一种
步骤 | 说明 | 截图 |
---|---|---|
1 | 随便选择一个自己的项目 | |
2 | 复制该项目的github链接 | |
3 | 打开网址choosealicense.com/,并且选择一种你想要声明的许可证这里以 MIT 为例。 | |
4 | 把 github 项目的链接粘贴进去,回车。 | |
5 | 可以直接提交,也可以在侧边栏选择其他的许可证。 | |
6 | 下拉滚动到下面,填一下信息,然后提交,我这里啥也没填。 | |
7 | 选一个分支,填一下MR说明,然后点击提交。 | |
8 | 点击合并 |
第二种
步骤 | 说明 | 截图 |
---|---|---|
1 | 随便选择一个自己的项目 | |
2 | 点击进入 Insights 。 | |
3 | 点击侧边栏,进入 Community Standards 。 | |
4 | 点击 Add 按钮,添加声明。 | |
5 | 可以在侧边栏选择需要的许可证。 | |
6 | 然后直接提交。 | |
7 | 下拉滚动到下面,填一下信息,然后提交,我这里啥也没填。 | |
8 | 选一个分支,填一下MR说明,然后点击提交。 | |
9 | 点击合并 |
六、FAQ
1. 没有声明开源许可证会如何处理?
没有声明许可证的内容是默认会被版权保护的,也就是说,你虽然开源了,但是其他人不能用,只能干看着,用了就侵犯版权了。
2. 什么是「传染性开源」?
GPL 许可证规定,如果项目包含了 GPL 许可证的代码,那么整个项目都必须使用 GPL 许可证。就类似于病毒🦠,谁用谁被传染。
3. 什么是「分发」?
拿别人声明了许可证的项目,然后我们自己使用,没有提供给其他人使用,就不算是 分发 。
举个例子:云服务(SaaS)提供的只是服务,所以也不算 分发