七种常见的开源许可证类型
现在任何一家软件公司开发软件都会引用开源代码,这包括开源代码片段、函数、库、框架甚至整个开源软件。这些开源代码如果被使用或合并到公司以下的代码库中,都会带有一定的权利和义务。开源软件是免费的,但并不是免责的,它只是受到不同类型的开源许可证约束。
如果一家公司在没有遵守开源许可证的情况下复用一个组件,版权所有者可能会起诉。在某些情况下,一家公司在被起诉后可能会面临一项禁令,禁止分销含有复用组件、损害赔偿或可能必须公布自己产品的源代码。大多数公司只是希望在使用开源组件时“干净利落”,这就需要你了解一些常用的软件许可证。
以下是七种常见的许可证类型,其中包括常被误解的Public domain类别,也涵盖现在使用多的Permissive类型。
xPermissive 宽松型
这类许可证对如何修改或重新发布软件的限制很少。它们经常被称为“attributionstyle”许可证,因为它们通常只要求在软件发布时将版权信息保留在通知文件中。这类许可证是目前常用的开源许可证类型。这一家族中的成员是Apache、BSD和MIT。
Weak copyleft 弱著佐权型
LGPL许可证就是weakcopyleft类型的。它的条款允许链接到开源库,几乎没有任何义务。如果软件动态链接到一个LGPL许可的库,那么整个工作可以在任何许可下发布,甚至是专有许可,只需要低限度的责任要求。静态链接或修改库操作会相对来说复杂一些,会带来一些额外的义务。其他weakcopyleft类型的许可还有MPL、CDDL和Eclipse等等。
Copyleft 著佐权型
Copyleft许可证也被称为互惠许可证或限制性许可证,一般来说,它们不像其他许可证那样具有商业友好性。常用的是GPL许可证,它允许开发人员修改授权代码,将其与专有代码合并,并在此基础上发布新的作品,只要他们将源代码发布到同一软件许可证下即可。AGPL限制性更强,它填补了“SaaS漏洞”,新增了在托管部署中的相关条款。Copyleft类型许可证的核心条款是需要分发源代码以及新的衍生工作。包含GPL许可证的专有产品必须开源。商业软件公司往往都会回避此类许可证软件。
Commercial or proprietary 商业或专有型
在所有类型的开源许可证中,这类是限制性强的。它们通常用于商业软件,版权所有者对授予的权利提出明确的条款。例如,不允许代码被共享、修改、逆向工程、重新分发或出售。
Dual 双重型
版权所有者可以选择向不同的用户提供不同许可下的软件。双重许可类型在商业模式中越来越被普及——既使用开源许可也使用商业许可。该种类型的许可证使得开发人员可以轻松的获取源代码以进行二开,但如果有公司真的想通过此开源软件获利则需要支付商业许可费用。AGPL许可证就经常用于此目的,并且出现了一些更具商业限制性的新变体,例如SSP(ServerSide Public)许可证。
Public domain 公共领域型
公共领域是人类的一部分作品与一部分知识的总汇,可以包括文章、艺术品、科学等等。对于领域内的知识财产,任何个人或团体都不具所有权益。有些软件就归属于公共领域。一般而言,软件受到版权保护,即以任何方式使用软件都需要得到原作者或版权所有者的许可,在开源软件中这一许可集中体现为开源许可证。这一约束并不适用于公共领域的软件产品,所有人都可以不受任何限制的修改和使用该类软件。
Unlicensed 无许可证型
没有明确许可证的代码并不意味着它就归属于公共领域,事实上,所有开源软件都需要许可证。如果一家公司不能将它正在使用的软件与许可证关联起来,就很可能违反了版权法。
在确定哪些许可证管理代码库中的哪些组件之前,我们通常需要一份SBOM,这是项目中所有组件信息生成的列表。CodeAnt开发安全平台支持一键导出SBOM,并提供包含SPDX在内的多种文件格式。CodeAnt强大的多维度SCA检测能力能帮助您梳理项目中的所有许可证信息并关联到相关组件,并根据专家建议标识相应的风险等级,这将有助于您或公司切实维护自身的相关权益