开源许可证指南

822 阅读5分钟

关键词:开源许可证、open source license、MIT、BSD、Apache、LGPL、Mozila、MPL、GPL、Github、申请、声明

一、什么是开源许可证?

是什么: 一种法律许可;

作用: 允许用户可以免费的使用、修改、共享版权软件;

目的: 规范软件(受著作权保护的软件)使用或者 分发 行为。

二、开源许可证分类

  • 宽松式许可证(permissive license)
  • Copyleft 许可证

三、常见开源许可证

世界上开源许可证有上百种,常用的有六种 MITBSDApacheLGPLMozillaGPL

分类:

宽松式许可证(permissive license): MITBSDApache

Copyleft 许可证: LGPLMozillaGPL

分析图:

参考乌克兰程序员Paul Bagwell,画了一张分析图,简单清晰的描绘了该如何选择 开源许可证。

开源许可证.png

分析图源地址:开源许可证分析图

四:常见许可证说明:

1. MIT许可证

来源于麻省理工大学,MIT 许可证是史上最为简洁和慷慨(permissive)的开源协议之一。

说明:

  • 没有使用限制 用户可以使用代码,做任何想做的事情。
  • 没有担保 不保证代码质量,用户自担风险。
  • 披露要求 用户必须披露原始作者。
  • 分发 软件时,必须保留原始的许可证声明。

应用案例:

JQueryRailsVueReact等。

2. BSD许可证

来源于大学,BSD可证与MIT差不多,也非常简单、慷慨,只是不能用于促销。

说明:

  • 没有使用限制 用户可以使用代码,做任何想做的事情。
  • 没有担保 不保证代码质量,用户自担风险。
  • 披露要求 用户必须披露原始作者。
  • 软件分发时,不能使用作者的名义促销。

应用案例:

ipwhoiscurl

3. Apache许可证

来自apache,类似MIT许可证,但它重视专利权。

说明:

  • 没有使用限制 用户可以使用代码,做任何想做的事情。
  • 没有担保 不保证代码质量,用户自担风险。
  • 披露要求 用户必须披露原始作者。
  • 用户修改过的文件 -- 必须注明。
  • 用户没有修改过的文件 -- 必须保持许可证不变。

应用案例:

ActivitiTwitter4J

4. LGPL许可证

来源自由软件联盟GNU,可以翻译为更宽松的GPL协议,属于 传染性开源

说明:

  • 如果 分发 二进制格式,必须提供源码。
  • 修改后的源码,必须与修改前保持许可证一致。
  • 不得在原始许可证以外,附加其他限制。
  • 如果项目只是调用该LGPL许可证的库,则该项目可以不用开源。

应用案例:

OpenPDF

5. Mozila许可证

Mozilla公共许可证(英语:Mozilla Public License,简称MPL)是个自由、开源、详细的软件许可证,由Mozilla基金会开发并维护。

说明:

  • 如果 分发 二进制格式,必须提供源码。
  • 修改后的源码,必须与修改前保持许可证一致。
  • 不得在原始许可证以外,附加其他限制。
  • 只要该许可证的代码在单独的文件中,新增的其他文件可以不用开源。

应用案例:

open62541

6. GPL许可证

来源自由软件联盟GNU,也属于 传染性开源

说明:

  • 如果分发二进制格式,必须提供源码。
  • 修改后的源码,必须与修改前保持许可证一致。
  • 不得在原始许可证以外,附加其他限制。
  • 如果项目包含了 GPL 许可证的代码,那么整个项目都必须使用 GPL 许可证。

应用案例:

memorpyproxysql

五、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)提供的只是服务,所以也不算 分发

七、参见

开源许可证指南

开源许可证教程 -- 阮一峰

如何选择开源许可证? -- 阮一峰

开源许可证(Open Source License)详解

开源之道 | Mozilla公共许可证

Choosing the right license

OSCHINA