大部分程序员都不了解,各种LICENSE开源许可证的区别

前言

大家好,我是haibin。以前在创建github仓库的时候在License这一项要么选择MIT许可证,要么选择Apache许可证。压根不知道它们到底有啥区别,只是单纯的知道这两种开源许可证比较常用。

当我这一次再来创建github仓库的时候,还是一脸懵逼样😲
感慨之余😤还是决定来好好研究下这里各种开源许可证的功能到底有啥区别,以及我们到底怎么来选择?

有哪些类型的开源许可证?

创建git项目时已经开门见山地告诉你License文件的功能:
A license tells others what they can and can't do with your code.
许可证告诉其他人他们可以用您的代码做什么和不能做什么。

我们这里来罗列一下它给的选项

  • Apache License 2.0
  • MIT License
  • GNU General Public License v2.0
  • GNU General Public License v3.0
  • GNU Affero General Public License v3.0
  • GNU Lesser General Public License v2.1
  • BSD 2-Clause "Simplified" License
  • BSD 3-Clause "New" or "Revised" License
  • Boost Software License 1.0
  • Creative Commons Zero v1.0 Universal
  • Eclipse Public License 2.0
  • Mozilla Public License 2.0
  • The Unlicense

需要关注的点有哪些?

在研究协议之前,我们应该先罗列出协议能提供哪些我们想要关注的信息,或者说我们需要关注的点有哪些?

关注点可以大致分为三大类:

  • 权限 - 源码可以怎么被使用
  1. 商业用途: 可材料和衍生品可用于商业目的。
  2. 分发: 许可材料可以分发。
  3. 修改: 许可材料可能会被修改。
  4. 专利使用: 许可明确授予贡献者的专利权。
  5. 私人使用: 许可材料可以私下使用和修改。
  • 条件 - 使用必须遵守的条件
  1. 披露来源: 分发许可材料时必须提供来源。
  2. 许可和版权声明: 许可和版权声明的副本必须包含在许可材料中。
  3. 网络使用即分发: 通过网络与许可材料交互的用户有权获得源代码的副本。
  4. 使用类似许可证: 分发时必须使用类似或相关的许可证。
  5. 内容变化记录: 必须记录对许可材料所做的更改。
  • 限制 - 不承担的风险
  1. 不负任何责任: 许可包括责任限制。
  2. 不授予商标权: 许可明确声明它不授予商标权。
  3. 不提供任何保证: 许可明确声明它不提供任何保证。

各类许可证的权限对比

协议 商业用途 分发 修改 专利使用 私人使用
Apache License 2.0
MIT License
GNU General Public License v2.0
GNU General Public License v3.0
GNU Affero General Public License v3.0
GNU Lesser General Public License v2.1
BSD 2-Clause "Simplified" License
BSD 3-Clause "New" or "Revised" License
Boost Software License 1.0
Creative Commons Zero v1.0 Universal
Eclipse Public License 2.0
Mozilla Public License 2.0
The Unlicense

这里可以看出所有许可证都提供除了专利使用以外的权限,我们只需关注这一个关注点即可。

各类许可证的条件对比

协议 披露来源 许可和版权声明 网络使用即分发 使用类似许可证 内容变化记录
Apache License 2.0
MIT License
GNU General Public License v2.0
GNU General Public License v3.0
GNU Affero General Public License v3.0
GNU Lesser General Public License v2.1
BSD 2-Clause "Simplified" License
BSD 3-Clause "New" or "Revised" License
Boost Software License 1.0
Creative Commons Zero v1.0 Universal
Eclipse Public License 2.0
Mozilla Public License 2.0
The Unlicense

使用条件这里则是五花八门,我们可以根据自身的需求来挑选。

例如MIT License只需保留许可和版权声明即可,而Apache License 2.0则还需内容变化记录这一项。

各类许可证的限制对比

协议 不负任何责任 不授予商标权 不提供任何保证
Apache License 2.0
MIT License
GNU General Public License v2.0
GNU General Public License v3.0
GNU Affero General Public License v3.0
GNU Lesser General Public License v2.1
BSD 2-Clause "Simplified" License
BSD 3-Clause "New" or "Revised" License
Boost Software License 1.0
Creative Commons Zero v1.0 Universal
Eclipse Public License 2.0
Mozilla Public License 2.0
The Unlicense

哈哈,不出意料不负任何责任不提供任何保证这两项所有协议都声明了,唯有不授予商标权这一项部分声明了。

总结

这里可以根据一名乌克兰程序员(Paul Bagwell)提供的图来帮助我们进行选择:


协议 简述
Apache 允许他人修改源代码后再闭源,但是必须对每个修改过的文件做版权说明
GPL3 无论以何种方式修改或者使用代码,都需要开源
MIT 允许他人修改源代码后再闭源,不用对修改过的文件做说明,且二次开发的软件可以使用原作者的名字做营销
BSD2/BSD3 和上面一条类似,但未经事先书面许可,不得使用版权所有者的姓名或其贡献者的姓名来推广
BSL 和GPL类似,但不需要复制版权信息
CCZ 放弃创作的作品版权权益,并将其奉献给大众,不对代码做任何担保
EPL 与GPL类似,有权使用、修改、复制与发布软件原始版本和修改后版本,但在某些情况下则必须将修改内容一并释出
AGPL GPL拓展,使用在线网络服务的也需要开源
GPL2 和GPL3相比,如果使用代码作为服务提供,而不分发软件,则不需要开源
LGPL 和GPL相比,LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码
Mozilla 与LGPL类似,但是需要对修改过的源码内容做说明
Unlicense 与CCZ相似,且开放商标和所用的专利授权
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容