如何选择开源许可证?
缘由
1,最近公司有相关的开源软件知识测试
2,网上看到阮一峰的文章:如何选择开源许可证
一般规则
1,free software:free 指的是自由,不是免费。
2,需要使用有软件许可证的开源软件,否则可能后期引起纠纷。
3,自由软件许可证,从最宽松到最严格,排序为: MIT->BSD->Apache->LGPL,AGPL->Mozilla->GPL。
4, 网络软件提供者,禁止或谨慎使用的许可证:GPL(项目包含GPL代码,则整个项目都变成GPL),AGPL(通过公开网络提供的云服务,也视作分发,需要开源)。
它山之石
版权法默认禁止共享,如果没有许可证的软件,默认是保留版权的。即时开源,若无许可证,则用户不可以使用源码,使用源码则涉及侵权。
乌克兰程序员Paul Bagwell,画了一张分析图,介绍最流行的六种开源许可证----GPL、BSD、MIT、Mozilla、Apache和LGPL。
image.png image.png什么叫分发(distribution)?
除了 Affero GPL (AGPL) ,其他许可证都规定只有在"分发"时,才需要遵守许可证。换言之,如果不"分发",就不需要遵守。
简单说,分发就是指将版权作品从一个人转移到另一个人。这意味着,如果你是自己使用,不提供给他人,就没有分发。另外,这里的"人"也指"法人",因此如果使用方是公司,且只在公司内部使用,也不需要遵守许可证。
云服务(SaaS)是否构成"分发"呢?答案是不构成。所以你使用开源软件提供云服务,不必提供源码。但是,Affero GPL (AGPL) 许可证除外,它规定云服务也必须提供源码。
GPL 病毒是真的吗?
GPL 许可证规定,只要你的项目包含了 GPL 代码,整个项目就都变成了 GPL。有人把这种传染性比喻成"GPL 病毒"。
很多公司希望避开这个条款,既使用 GPL 软件,又不把自己的专有代码开源。理论上,这是做不到的。因为 GPL 的设计目的,就是为了防止出现这种情况。
但是实际上,不遵守 GPL,最坏情况就是被起诉。如果你向法院表示无法履行 GPL 的条件,法官只会判决你停止使用 GPL 代码(法律上叫做"停止侵害"),而不会强制要求你将源码开源,因为《版权法》里面的"违约救济"没有提到违约者必须开源,只提到可以停止侵害和赔偿损失。
原始资料
插播一段感受:大学和研究机构相关的协议(MIT,BSD),都比较宽松,Apache的也比较宽松。
GPL: General Public Licence 通用公共授权协议 http://www.gnu.org/licenses/gpl.html 严格。开源,新增代码及修改代码,要一路开源下去。CopyLeft许可证。
image.pngMozilla:Mozilla Public License https://www.mozilla.org/en-US/MPL/ 开源,新增代码可以修改许可证,对源码的修改部分,要有文档说明。CopyLeft许可证。
LGPL:Lesser General Public Licence http://www.gnu.org/copyleft/lesser.html 开源,新增代码可以修改许可证,对源码的修改部分,无需文档说明。CopyLeft许可证。
Apache: http://www.apache.org/licenses/LICENSE-2.0 可以闭源了,但是对修改的部分需要做版权申明。permissive许可证。
BSD: BerKeley Software Distribution https://en.wikipedia.org/wiki/BSD_licenses 伯克利软件发行版本协议,比较宽松。可以闭源,无须版权申明,不可以以作者名来做商业用途。permissive许可证。
MIT: Massachusetts Institute of Technology https://en.wikipedia.org/wiki/MIT_License ,麻省理工大学的自由软件协议,很宽松。可以闭源,无须版权申明,可以以作者名来做商业用途。permissive许可证。
参考资料
http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
http://www.ruanyifeng.com/blog/2017/10/open-source-license-tutorial.html