前言
最近有同事需要在自己的项目中使用到开源软件,但是不知道是否存在风险,讨论中我发现大家对开源许可证好像都不是很了解,对如何选择开源许可证更是摸不着头脑,许可证的选择往往是跟着一些知名项目的选择进行选择。本文就来讲解一下开源许可证也就是我们常说的 License 都有哪些需要了解的知识。
本文为科普性质文章,企业开源战略规划、开源项目代码合规指导请咨询专业机构。
什么是开源许可证/协议?
首先要明确的是开源许可证是一种附带条件的合同/许可,是具有法律效力的文件。是作者自由意识的的体现,也就是说作者可以自行设计,其中要包括违反开源许可证的风险,如停止侵权、损害赔偿、消除影响等。
也就是说,如果你愿意,可以自行设计开源许可证/协议。
开源许可证文本范式
开源许可证主要包含三部分:被许可人权利、被许可人义务、被许可人权利限制
其中被许可人权利是“贡献”内容的“作者”授权任何“接收者”对其所“贡献”内容进行许可范围内的操作,如允许代码的自由复制/修改/分发、授予专利许可、禁止滥用商标等。
被许可人义务是“接收者”接受并履行“作者”设置的一些特定条件,如(再分发时)保留署名、注明修改、衍生开源、相同许可证等。
被许可人权利限制是所有“贡献”内容均在免责声明下分发,这是为了避免原作者的法律风险。
开源许可证类型
开源许可证主要分为三种类型:
- 严格型/强著佐权(Copyleft)- 衍生作品必须全部使用相同许可证(开源),如 GPL v2、AGPL
- 弱著佐权(Weak Copyleft) - 允许衍生作品部分使用其他许可证(开源),如 LGPL
- 宽松型(Permissive) - 未限制衍生作品使用其他许可证(开源或闭源),如 BSD、MIT、Apache 2.0、木兰
开源许可证的兼容性
如我在我的开源项目中用到了别人开源的库,这个时候就要看开源许可证的兼容性了,如果无法同时满足各部分代码的许可证要求,则不可能“合法地”分发,必然引发知识产权侵权风险。
其中兼容性一般具有以下规律:
- 宽松型许可证通常互相兼容
- 宽松型许可证/弱著佐权许可证通常可以单向兼容严格型许可证
- 严格型许可证往往互不兼容
图片来源:《开源许可证兼容性指南》- 云计算开源产业联盟
开源许可证的选择
随着开源产业的扩张,越来多的人参与其中,而宽松型的开源许可证(如 MIT、Apache 2.0)也被越来越的开源项目选择,如无特殊需要,笔者建议尽量选择宽松型的开源许可证,同时这也是整个开源产业的趋势。
图片来源:Open Source Licenses in 2021: Trends and Predictions
另外再附上一张网上流传很广的图,可以更直观的了解如何选择开源许可证:
结语
开源不等于免费、不等于没有商业模式、不等于没有争议,较之闭源,开源的优势在于:公开带来信任、自由带来高效、免费带来市场。越来越多开源公司的成功以及多种开源商业模式的出现也大大丰富了整个开源世界,吸引越来越多的开发者参与到开源活动中。