如何选择各类开源许可证,有何异同?

IT 行业诞生初期,开源精神极大的推动了计算机行业的飞速发展。对于人类影响深远的例如 Internet 协议,邮件,FTP 服务,都是免费的。

计算机科学家们,无私共享出他们智慧结晶的产物。随着行业的发展,越来越多的从业者加入了这个行业,可如果秉持着开源免费的思想,缺乏市场足够的资金支持,行业也难以走的长远。因此,正是基于这个目的,开源社区衍生出了诸多的协议许可证。要使用开源自然可以,但使用者就必须遵守开源所附带的协议,只在许可范围内行事。

许可证是为了保护作者的合法权益(包括合理的知识产权和专利权力以及避免因开源惹火烧身的免责的权力),开源使软件开发者避免了重复造轮子,让后来者可以站在巨人的肩膀上做更多的事。有的许可协议宽松,有的协议严格,在此对这些协议进行一次梳理。

协议,当前有 开源许可证知识共享协议(Creative Commons, CC) 。开源许可证主要针对软件领域,知识共享协议主要针对文化产出,例如文章、数据、视频等。


开源许可证

权力术语

下表是对开源许可证中所划分的权力粒度的梳理,开源许可证会对下列的权力进行授权,或者加以限制,又或者要求有条件的使用。

名称 中文名 备注
Commercial use 商业应用 指是否可将开源用于商业目的
Distribution 发布发行 指是否允许发布发行依赖于此开源的项目
Modification 修改 指是否允许在开源项目上做修改
Patent use 申请专利 指是否允许用于专利申请
Private use 个人使用 指是否允许个人学习,修改和使用
License and copyright notice 注明协议和版权 指是否要求注明协议以及版权说明
State changes 注明变更 指对于开源代码的修改是否要明确说明
Liability 义务 指开源软件是否承担使用其后带来的义务
Trademark use 商标使用 指开源软件是否可用在商标或在商标中暗示使用
Warranty 报修维护 指开源软件是否提供后期维护
Same License 同协议下 指基于开源二次开发的产品若发布,是否要基于相同或相近的协议之下
Disclose source 公开源码 指基于开源开发的代码是否也需要开源

常用许可证梳理

简单来说,开源许可证主要有五大类,GPL/LGPL, Apache, MIT/BSD。GPL/LGPL 具有一定的传染性,会要求使用源码的项目也要开源,MIT/BSD 则最为慷慨,允许使用者任意使用,但需保留作者信息,而 Apache 在 MIT/BSD 至少保留了专利使用的权利。

  1. MIT License:只想简简单单的使用,安心 Coding,不在乎别人怎么用。例如 Babel、.NET Core、Rails、JQuery 都是基于 MIT
  2. Apache License:Apache 也是较为宽松,但是保留了专利的权力。诸如 Elasticsearch、Kubernetes、Swift 采用了此许可
  3. GNU GPLv3:关心代码的分享和使用,需要使用者也要基于相同的协议,公开源码,且保留了专利的权力。Bash、GIMP 等软件是基于此许可。
MIT License Apache License 2.0 GNU GPLv3 GNU AGPLv3 GNU LGPLv3 Mozilla Public License 2.0 The Unlicense
商业应用 Permit P P P P P P
发布发行 P P P P P P P
修改 P P P P P P P
申请专利 P P P P P
个人使用 P P P P P P P
注明协议和版权 Conditional C C C C C
注明变更 C C C C
义务 Limit L L L L L L
商标使用 L L
报修维护 L L L L L L L
同协议下 C C C C
公开源码 C C C C

更多许可证说明参考该链接:https://choosealicense.com/appendix/

MIT License,协议原文 https://opensource.org/licenses/MIT
Apache License 2.0, 协议原文 http://www.apache.org/licenses/LICENSE-2.0.html
GNU GPLv3 协议原文 https://www.gnu.org/licenses/gpl-3.0.txt

即使是最具传染性的GPL、LGPL也是可以通过编译成独立二进制的方式来规避的, 参考 Android ,在争议中逃离 Linux 内核的 GPL 约束。 摘自知乎,auxten 的回答,https://www.zhihu.com/question/19568896


如何选择

关于如何选择,Paul Bagwell 画了一张分析图。原链接找不到了,只找到了阮一峰在其博客翻译后的一张中文版。

摘自阮一峰博客,http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html


知识共享协议

以上阐述了开源软件和代码相关的协议,但有时很多产出并非是代码,也有文章、视频、字体、图片等等,此时就不再适用以上的协议了,而是采用知识共享协议(Creative Commons,简称 CC)


许可协议

中文 缩写 说明 HTML 使用
署名 CC BY 允许其他人发行、再混合、调整、以您的作品为基础进行创作,即使出于商业性目的,只要他们指明您的原创身份。推荐用于最大程度散布和使用被授权作品。 知识共享许可协议
本作品采用知识共享署名 4.0 国际许可协议进行许可。
署名-相同方式共享 CC BY-SA 允许其他人再混合、调整和基于您的作品进行创作,即使出于商业性目的,只要他们以相同条款标识您的姓名或名称、许可他们的新作品。基于您的作品的所有新作品将适用相同的许可协议,因此所有的演绎作品均允许商业性使用。维基百科使用此许可协议 知识共享许可协议
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
署名-禁止演绎 CC BY-ND 允许再发行作品,无论是商业性和非商业性使用,只要该作品未经修改、删减,且给您署名。 知识共享许可协议
本作品采用知识共享署名-禁止演绎 4.0 国际许可协议进行许可。
署名-非商业性使用 CC BY-NC 允许其他人再混合、调整、基于您的作品进行非商业性创作。尽管他们的新作品必须署您的名并要出于非商业性目的,他们不必依据相同条款许可他们的演绎作品。 知识共享许可协议
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
署名-非商业性使用-相同方式共享 CC BY-NC-SA 允许其他人再混合、调整和基于您的作品进行非商业性创作,只要他们标识您的姓名或名称,并以相同条款许可他们的新作品 知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
署名-非商业性使用-禁止演绎 CC BY-NC-ND 限制最严格的,只允许他人下载你的作品,在为你署名的情况下与别人共享你的作品,但不能以任何方式改变作品,或出于商业目的使用作品。 知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

摘自:知识共享协议的原理 https://creativecommons.org/licenses/

可以在 https://creativecommons.org/choose/ 网站上生成许可


参考资料

[1] Choose an open source license,https://choosealicense.com/
[2] 《如何选择开源许可证?》,作者 阮一峰,http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
[3] 知乎问答,主流开源协议之间有何异同? https://www.zhihu.com/question/19568896, 参考了 GcsSloop 用户的答案以及 auxten 的回答
[4] 《程序员不可不知的版权协议》,作者 GcsSloop,http://www.gcssloop.com/tips/choose-license
[5] MIT License,协议原文 https://opensource.org/licenses/MIT
[6] Apache License 2.0, 协议原文 http://www.apache.org/licenses/LICENSE-2.0.html
[7] GNU GPLv3 协议原文 https://www.gnu.org/licenses/gpl-3.0.txt
[8] Choose a creative commons, https://creativecommons.org/choose/

作者

Wenchao Wang

发布于

2016-11-20

更新于

2020-10-17

许可协议

You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.