为了保护程式码和组织,需要了解管理程式码使用的软体授权条款,本文针对开源授权条款及其潜在法律风险,说明对於编写的程式库和架构的影响性。
什麽是软体授权条款(software license)?
企业在撰写创新的软体时,通常也会重复使用程式码,包括程式码片段、程式库、函数、架构和整个应用程式。事实上,在大多数应用程式中,其程式码大都包含重复使用的第三方元件。而如果被他人使用或合并到公司的程式码库中,这些被重复使用的软体程式码都具有一定的权利和义务。即使是从Stack Overflow复制的程式码片段也有重复使用的义务。大多数第三方元件都是开源的,开源软体是免费的,但并非没有义务它是由另一种授权条款所管控:软体授权条款(software license)。
软体以不同的方式获得授权,不遵守授权的负面影响其实很大。根据2024 年「开源安全和风险分析」(Open Source Security and Risk Analysis;OSSRA)报告中提供的统计,在所有被扫描的程式库中有53%包含授权条款的冲突(conflicts),显现这是现实世界中的一个跨领域挑战。
如果公司在未经许可或不遵守授权义务的情况下重复使用元件,版权所有者可能会提起诉讼。公司可能会面临被禁止进一步散布被误用的组件、赔偿金,或者可能必须发布自己的原始码。所以大多数公司都希??「乾净(clean)」地使用第三方软体。为了保护程式码和组织,您需要了解管理程式码使用的软体授权条款,包括不是自己编写的程式库和架构。以下是开源授权条款及其潜在法律风险的清单。
不同类型的软体授权条款
![图一 : 为了保护程式码和组织,在程式码库中重复使用元件常见多种授权模式类型。](/art/2024/08/221517162180/p1S.JPG)
图一 : 为了保护程式码和组织,在程式码库中重复使用元件常见多种授权模式类型。 |
|
以下是在程式码库中重复使用元件常见的五种授权模式类型,及容易被误解的公共领域软体与常见的未授权类别。
● 宽容型(Permissive):宽容型授权条款对如何修改或重新分发软体包含最低限度的限制。它们也被称为「归属式(attribution style)」授权条款,因为它们通常只要求在使用或散布软体时、将版权资讯保留在通知文件中。此类软体授权条款是最受欢迎的开源授权条款类型。此类别中最着名的范例是Apache授权条款、BSD授权条款和常见的MIT授权条款。
● 弱着作传(Weak copyleft):GNU宽松通用公共授权 (The GNU Lesser General Public License)又称为「Weak Copyleft」授权。它的设计目的是允许连结到开源库而只需承担少数的义务。
如果软体动态连结到LGPL授权的资料库,则整个作品可以在许可的情况下进行散布,甚至在一些专有授权(proprietary license)的使用也只有低度要求。但如果是静态连结或修改库就会使授权变得更加复杂。而当使用LGPL授权的元件也需要遵守其相关Copyleft义务,其他Weak Copyleft授权(包括MPL、CDDL和Eclipse)则是介於宽容型和Copyleft之间。
● 着作传(Copyleft):Copyleft授权条款也称为互惠(reciprocal)授权条款或限制性(restrictive)授权条款。一般来说,这类型比其他授权条款较不适合於商业运用,而其中最知名也最常用的是「通用公共授权(GPL)」系列授权。
这些授权条款允许开发人员修改授权代码,将其与专有代码合并,并基於上述修改分发新作品,只要他们在同一软体授权条款下、将原始程式码分发到任何新作品或改编作品即可。(举例而言,Affero通用公共授权条款[AGPL]弥补了「SaaS漏洞(loophole)」,而它是在原来的软体中即有部署,而不仅仅是在後续分发时中所触发的。)这其中的问题是,这些授权条款需要分发原始码以及新的衍生作品。而包含有GPL授权程式码的作品授权需要分发专有原始码,然而对用户或竞争对手公开原始码通常不符合公司的利益。因此,建立商业应用程式的公司往往会避免使用具有此类授权条款的软体。
● 商业或专有(Commercial or proprietary):在软体授权条款中,这类的授权条款是限制性最强的。此类授权条款通常用於商业软体,其中版权所有者对所授予的权利提出明确的条件,例如,不希??程式码被共享、逆向工程(reverse-engineered)、修改、重复散布或出售。
● 双重的(Dual):版权所有者也可针对不同的使用者,采不同的的授权来提供其软体。一种日益常见的商业模式是双重授权,也就是同时使用Copyleft或其他形式的开放但限制性许可和商业许可。其优点是使用开源授权条款,让开发人员轻松获得程式码并试用,但伴随的义务是,如果公司真的想透过该软体赚钱,就需要支付费用商业授权条款。AGPL授权通常是采用这类方式,并且出现一些更具商业限制的新变体,例如伺服器端公共授权(Server Side Public License)。
● 公共领域(Public domain):有些软体属於公共领域。一般来说,软体作品受版权保护,这意味着以任何方式使用该软体都需要获得创作者或版权所有者的许可,即授权条款。然而,着作权不能援用於被认定是公共领域的作品,任何人都可以不受任何限制地修改和使用此类软体。但是公共领域的程式码通常很少见,而且对於不同司法管辖区而言,其定义也有所不同。
● 无证(Unlicensed):这类软体没有明确授权的程式码,本质上也不属於公共领域;通常在预设情况下,需要授权条款才能使用这类软体。因此,如果公司无法将其使用的软体与授权条款相关联,则可能违反着作权法。
如何判断授权条款适用类别的软体程式库
![图二 : 想要确定授权条款管理程式库中的任何元件之授权权限,需要程式码中所有元件的清单。](/art/2024/08/221517162180/p2S.JPG)
图二 : 想要确定授权条款管理程式库中的任何元件之授权权限,需要程式码中所有元件的清单。 |
|
想要确定授权条款管理程式库中的任何元件之授权权限,就需要软体物料清单 (software Bill of Materials;SBOM),也就是程式码中所有元件的清单。企业可以建立政策、流程、培训和软体组成分析(SCA)工具等既定计划,并随时保持准确的 SBOM。一份好的SCA工具将能够找到完整的组件以及程式码,它可能协助企业哪些授权条款适用於每段程式码,以及是否可能使用有冲突的授权条款,此外,还可以识别已知的安全漏洞。如果没有上述工具,在并购的交易中,企业大概只能仰赖值得信赖且有能力的第三方审计单位,来及时提供准确的相关资讯。
一旦建立了SBOM,再加上SCA工具或审核员的协助,大多数授权议题将变得更容易理解。但正如本文所强调的,有时情况并非总是如此,而最隹作法是聘请一位精通开源软体的智慧财产权律师,就可以为复杂的问题提供建议。
(本图文由Synopsys提供;作者Phil Odence为管理谘询顾问暨执行长)