学会分辨开源许可证

使用开源项目必须保留作者姓名?开源软件不能商用?我们需要先学会分辨开源许可证

作者 guoxudong 发表于 2021年4月25日

背景

不久前笔者写了一篇《如何选择开源许可证》来分享如何为开源项目选择开源许可证,这是一篇小型的科普文章,目的是为了打破一些人对开源的妄想,开源并没有那么高深,只要你愿意去了解并认同开源的理念,就可以成为开源运动的参与和贡献者。

但在实际交流中,还是能听到如:使用开源项目必须保留作者姓名开源软件是不能商用的使用开源软件的商业软件一定要免费等,对于开源软件奇怪的误解。

其实这些都是关于开源许可证的问题,只要找到其源码,阅读其源码仓库中的 LICENSE 文件,自然就能分辨这些内容。

本文为科普性质文章,企业开源战略规划、开源项目代码合规指导请咨询专业机构。

开源许可证的本质

这里笔者希望再强调一下开源许可证的本质:开源许可证是一种附带条件的合同/许可,是具有法律效力的文件。其就是一种合同,而合同怎么写,完全取决于开源项目的作者的意志,作者通过这份合同申明自己的权利、使用该项目人员的义务以及对于该项目使用者的限制。

前两个比较好理解,这里着重介绍一下被许可人权利限制,简单可以理解为免责声明,如果该项目被恐怖分子使用并造成危害,在追究法律责任时,不会连带追究到项目作者。

关于常见许可证

既然开源许可证如何写完全取决于开源项目作者,那为何大家都会选择现有的许可证,而不是自己写一份呢?

原因其实也很简单,对于一般的开发者,一般不具有丰富的法律知识,撰写的许可证可能存在漏洞,这些漏洞会被有心人所利用,造成不必要的麻烦。这时就需要根据实际需求,制定一些通用的开源许可证。这样当有项目想要开源时,只需从中选择符合自己要求的即可;同样的,当项目开发者需要采用别人的开源项目时,也比较好分辨,无需专业的法务人员来核对其开源许可证。

乌克兰程序员 Paul Bagwell(阮一峰译)的这张图,很直观的展示了如何选择开源许可证:

图解分析

choosealicense.com 这个网站也可以很方便的选择和比较各种开源许可证。

choosealicense.com

GitHub

GitHub 以更简单的方式的方式展示了开源许可证的内容,只需打开项目中的 LICENSE 文件,该许可证授予了使用者哪些权力、有哪些限制一目了然。

Apache License 2.0

拓展知识

关于开源许可证,还有一些拓展知识值得注意。

关于许可证变更

如果开源项目的作者变更了开源许可证,那样会影响之前使用该项目的用户吗?

如果开源许可证由 严格型/强著佐权(Copyleft)弱著佐权(Weak Copyleft) 型开源许可证变为宽松型(Permissive),那样没有任何影响。

如果是由宽松型(Permissive)变为严格型/强著佐权(Copyleft)弱著佐权(Weak Copyleft),那样的话,就是从变更开源许可证开始,之后的版本都会受到影响,而之前的版本不受影响。换句话说,就是只能使用老版本不受影响,使用新版本的话,需要根据新的许可证来规范使用。详细内容可以参考上一篇文章中关于开源许可证的兼容性的说明。

开源许可证的推荐

推荐使用宽松型的开源许可证(如 MIT、Apache 2.0),这也是目前开源项目的趋势,宽松型的开源许可证可以让更多的用户使用你的开源项目,吸引更多的人参与进来,促进整个开源社区的繁荣。

结语

参与开源,不仅仅是为开源项目贡献代码,更多的是使用、分享和反馈,一个活跃的开源社区,必定有大量的使用者,他们报告 bug、提出 feature、互相交流,笔者认为这是开源项目的根基,一个没人使用的项目,即使代码写的再优秀,也是没有价值的。而开源许可证往往是采用开源项目之前需要考虑的第一件事,不仅对于商业公司,对个人开发者也十分重要。

Tags: