背景
不久前笔者写了一篇《如何选择开源许可证》来分享如何为开源项目选择开源许可证,这是一篇小型的科普文章,目的是为了打破一些人对开源的妄想,开源并没有那么高深,只要你愿意去了解并认同开源的理念,就可以成为开源运动的参与和贡献者。
但在实际交流中,还是能听到如:使用开源项目必须保留作者姓名、开源软件是不能商用的、使用开源软件的商业软件一定要免费等,对于开源软件奇怪的误解。
其实这些都是关于开源许可证的问题,只要找到其源码,阅读其源码仓库中的 LICENSE
文件,自然就能分辨这些内容。
本文为科普性质文章,企业开源战略规划、开源项目代码合规指导请咨询专业机构。
开源许可证的本质
这里笔者希望再强调一下开源许可证的本质:开源许可证是一种附带条件的合同/许可,是具有法律效力的文件。其就是一种合同,而合同怎么写,完全取决于开源项目的作者的意志,作者通过这份合同申明自己的权利、使用该项目人员的义务以及对于该项目使用者的限制。
前两个比较好理解,这里着重介绍一下被许可人权利限制,简单可以理解为免责声明,如果该项目被恐怖分子使用并造成危害,在追究法律责任时,不会连带追究到项目作者。
关于常见许可证
既然开源许可证如何写完全取决于开源项目作者,那为何大家都会选择现有的许可证,而不是自己写一份呢?
原因其实也很简单,对于一般的开发者,一般不具有丰富的法律知识,撰写的许可证可能存在漏洞,这些漏洞会被有心人所利用,造成不必要的麻烦。这时就需要根据实际需求,制定一些通用的开源许可证。这样当有项目想要开源时,只需从中选择符合自己要求的即可;同样的,当项目开发者需要采用别人的开源项目时,也比较好分辨,无需专业的法务人员来核对其开源许可证。
乌克兰程序员 Paul Bagwell(阮一峰译)的这张图,很直观的展示了如何选择开源许可证:
choosealicense.com 这个网站也可以很方便的选择和比较各种开源许可证。
GitHub
GitHub 以更简单的方式的方式展示了开源许可证的内容,只需打开项目中的 LICENSE
文件,该许可证授予了使用者哪些权力、有哪些限制一目了然。
拓展知识
关于开源许可证,还有一些拓展知识值得注意。
关于许可证变更
如果开源项目的作者变更了开源许可证,那样会影响之前使用该项目的用户吗?
如果开源许可证由 严格型/强著佐权(Copyleft) 或 弱著佐权(Weak Copyleft) 型开源许可证变为宽松型(Permissive),那样没有任何影响。
如果是由宽松型(Permissive)变为严格型/强著佐权(Copyleft)或弱著佐权(Weak Copyleft),那样的话,就是从变更开源许可证开始,之后的版本都会受到影响,而之前的版本不受影响。换句话说,就是只能使用老版本不受影响,使用新版本的话,需要根据新的许可证来规范使用。详细内容可以参考上一篇文章中关于开源许可证的兼容性的说明。
开源许可证的推荐
推荐使用宽松型的开源许可证(如 MIT、Apache 2.0),这也是目前开源项目的趋势,宽松型的开源许可证可以让更多的用户使用你的开源项目,吸引更多的人参与进来,促进整个开源社区的繁荣。
结语
参与开源,不仅仅是为开源项目贡献代码,更多的是使用、分享和反馈,一个活跃的开源社区,必定有大量的使用者,他们报告 bug、提出 feature、互相交流,笔者认为这是开源项目的根基,一个没人使用的项目,即使代码写的再优秀,也是没有价值的。而开源许可证往往是采用开源项目之前需要考虑的第一件事,不仅对于商业公司,对个人开发者也十分重要。