如何选择各类开源许可证|如何选择各类开源许可证,有何异同()
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 至少保留了专利使用的权利。- MIT License:只想简简单单的使用,安心 Coding,不在乎别人怎么用。例如
Babel、.NET Core、Rails、JQuery
都是基于 MIT - Apache License:Apache 也是较为宽松,但是保留了专利的权力。诸如
Elasticsearch、Kubernetes、Swift
采用了此许可 - 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 |
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 画了一张分析图。原链接找不到了,只找到了阮一峰在其博客翻译后的一张中文版。
文章图片
image
摘自阮一峰博客,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/
推荐阅读
- 为什么你的路演总会超时()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- java中如何实现重建二叉树
- Linux下面如何查看tomcat已经使用多少线程