作者 天达共和律师事务所 管冰 何传标开源软件,顾名思义就是将源代码向公众公开的软件,除有特别限制的情形外,用户可以自由地获取、使用、修改和分发。在当前中国相关法律法规规定下,开源软件符合文学、艺术和科学领域内具有独创性并能以一定形式表现的智力成果的特征,属于《著作权法》第三条规定的计算机软件作品。相比于商业软件,开源软件具有获取容易、成本较低的优势,有助于企业极大地缩短软件的开发周期。但是,正如从自由软件(Free Software)到开源软件(Open Source Software)的名称变迁过程[1],开源的本质是希望通过知识共享共同推动技术进步,并非完全放弃智力成果的知识产权,因此对于开源软件的使用并非完全自由,实务中具体表现为开源软件以许可证的方式要求用户承认开发者的著作权,并对后续的使用行为以许可证的模式进行法律约束,可见无论通过何种方式利用开源软件均应严格遵循许可证约定的义务[2]。本文尝试从开源许可证法律性质的角度出发,分析使用开源软件可能面临的法律风险,并对企业合规使用开源软件提出建议,供企业在实务中参考。一、开源许可证及其法律性质开源许可证,也可称为开源许可协议,是指用户在获取、使用、修改和分发开源软件时应当遵循的具体条件。依据开源许可证是否强制要求继续公开源代码,开源许可证一般可以分为两大类:一是宽松式(permissive)许可证,如Apache 许可证、MIT许可证、BSD许可证等,这类许可证对用户的限制较少,一般只要求用户在分发修改开源软件时发布许可证副本、修改声明或者版权声明等即可,而不要求必须向第三方公开其修改后的源代码;二是著佐权式(copyleft)[3]许可证,如GPL、MPL等,这类许可证对用户的限制更大,主要要求用户在分发修改开源软件时,基于许可证的传染性必须使用相同或兼容的许可证公开其源代码。关于开源软件许可证的性质,参考当前司法实务中的判决[4],一般认为许可证的内容具备合同特征,具有合同性质,是授权方和用户订立的附解除条件的著作权合同。具体而言,著作权人将其享有权利的计算机软件上传至开源社区或平台即视为合同邀约行为,意在做出按照开源软件许可证许可的意思表示;用户获取、使用、修改和分发开源软件即视为合同承诺行为,意在承诺愿意遵守开源许可证的要求使用开源软件;经过邀约和承诺的合同成立过程,双方应依据开源许可证的约定行使相关权利和履行相关义务。可见开源软件许可证作为附解除条件合同的性质决定了用户需要严格履行许可证义务,否则其使用行为不再具有合法性,从而产生相应法律风险。二、企业使用开源软件常见的法律风险正如前述分析,对于开源软件的使用并非完全自由,而是应当在开源许可证框架下进行,国内许多开发者或者企业往往对于开源软件、开源许可证的性质认识不足,误以为一个软件只要是开源软件(甚至只要能公开获取),就可以直接使用或者进行二次开发而无需履行任何义务,导致出现违约或者侵权的风险,或者导致本公司计划作为商业秘密保护的源代码不当泄露,严重影响企业的生产经营活动。结合实务中常见的纠纷以及司法判决中的案例,我们对企业使用开源软件常见的法律风险及一般应对方案总结如下。1. 不遵守许可证义务导致出现违约或者著作权侵权的情形在企业内部评估对开源软件的使用需求后,使用开源软件(承诺行为)的行为意味着与软件权利人成立民事上的合同法律关系。同时,依据《民法典》、《著作权法》、《计算机软件保护条例》等法律法规的规定,计算机软件是我国著作权法意义上受保护的作品,无论其是否开源,均自创作完成后由权利人享有著作权。因此,如果用户使用开源软件时不遵守许可证义务(例如不发布版权声明、不包含许可证副本、不声明修改内容、不公开源代码、限制他人进行商业使用等),许可证合同自动解除,用户不再具有使用开源软件的法律基础。该等情况下的使用行为可能同时产生违约和侵权两种法律后果,依据权利人的主张不同,需要承担继续履行和赔偿损失等违约责任,或者停止侵害、损害赔偿、恢复原状等侵权责任。针对这种情况,通常要求用户在使用前充分审阅待使用开源软件的许可证规定的义务,并严格遵守。2. 忽视开源许可证的传染性导致出现衍生代码被强制公开的情形一些开源许可证中往往要求如果用户在自己的软件中使用开源软件全部或部分代码,那么用户必须同样遵循该许可证的要求公开二次开发的衍生软件代码,否则视为未获得许可,这就是开源许可证的传染性。例如对于GPLV3,在前述济宁市罗盒网络科技有限公司与广州市玩友网络科技有限公司等侵害计算机软件著作权纠纷案中,广州中院认为对于在逻辑上与开源代码有关联性且整体发布的衍生作品,只要其中有一部分适用了GPLV3协议发布,那么整个衍生作品都必须适用GPLV3协议而公开。可见,如果将开源软件置入到本公司软件,或者本公司技术人员在开源软件基础上进行二次开发,将可能导致本公司软件或者二次开发的软件代码被强制公开,这种情况下他人同样有权在遵守原开源协议的条件下自由地获取、使用、修改和分发,可能与企业使用开源软件的初衷严重背离。针对这种情况,企业在使用开源软件前需考虑自身的闭源需求,采用隔离开发等方式使得本公司软件与开源软件各自独立,避免被认定为在逻辑上与开源代码有关联性且整体发布的可能。3. 未考虑许可证的兼容性导致无法同时满足不同许可证授权条件的情形由于每个许可证中对于使用者的义务履行要求并不完全相同,因此如果一个项目包含不同许可证,就有可能出现许可证条款上的冲突,这就是许可证的兼容性问题。比如自由软件基金会官网的说明中由于每个许可证中对于使用者的义务履行要求并不完全相同,因此如果一个项目包含不同许可证,就有可能出现许可证条款上的冲突,这就是许可证的兼容性问题。比如自由软件基金会官网的说明中[5],明确指出“两个不同的copyleft许可证是无可避免地不兼容,除非两者之间有明确的兼容条款。这不是因为细节有误,这是 copyleft 理念与生俱来的特点。copyleft 的理念是 修改和扩展的版本必须延用同样的许可证,如果使用许可证甲的扩展程序 A 必须延用许可证甲,使用许可证乙的程序 B 必须延用许可证乙,那么它们之间就是不可调和;如果合并程序包含 A 和 B 的代码,那么合并程序的许可证必须是甲,也必须是乙。”因此,当某一项目同时涉及到两个或多个许可证(尤其是copyleft)许可证,就可能引发条款冲突。从合规角度看,不兼容许可证下的代码不能合并到一个程序中,否则必然导致无法满足某一许可证授权的条件,从而产生侵权或者违约的可能。4. 代码来源不明导致出现权利瑕疵的情形基于开源软件的性质,当前实务中无论是宽松式许可证还是著佐权式许可证中均不承诺任何瑕疵担保责任。而且开源软件由原始权利人上传代码,同时也有诸多的贡献者对其进行修改、补充和完善,甚至该等代码的正常运行又可能依赖于其他开源的代码,这就导致用户难以辨别上游权利人上传的代码以及贡献者修改、补充和完善的代码是否具有合法的来源。因此如果用户不加辨别的使用,有可能出现侵犯第三方权利的问题,更进一步未经充分评估就将开源软件置入本公司软件系统或者本公司软件系统是在开源软件基础上进行的二次开发,在被要求停止使用的情况下,可能影响企业整个系统的安全。针对这种情况,需要仔细核查开源软件代码的来源以及开源社区的贡献者协议,避免使用一些来源不明的开源软件,一般建议选择比较规范的开源社区获取开源软件。5. 不遵守专利和商标授权的条件导致出现商标侵权或者专利侵权的情形如果一些开源社区、平台或者开源软件的许可证中明确不包含商标和专利的授权,或单独制定使用规则等方式对商标和专利的使用设置了某些限制条件,则用户在使用开源软件的同时使用相关的商标和专利,将存在侵权的风险。例如“Open Source Initiative”既是开放源代码促进会的字号,也是其注册中的商标,除非符合《OSI 商标指南》的规定[6],否则在使用该平台管理的开源软件时不得使用该等商标;另外,在GPLV2许可证中并未对专利授权进行明确安排,如果某一权利人声明其软件适用该许可证开源,但权利人同时还就开源软件的操作方式等申请了相关的方法专利,则存在该权利人为达到某些商业目的向用户主张专利侵权的可能,应避免使用该方法专利。针对这种情况,一般可以通过指示性使用、剔除开源软件(包括但不限于源代码及其文档)中的商业标识或者仅使用软件代码而不使用相关专利的方式予以避免。三、开源软件合规审查要点分析结合前述实务中使用开源软件过程中常见法律风险的分析及一般应对策略,虽然不同的开源软件可能适用不同的许可证,不同的许可证中约定的权利及义务亦不尽相同,但对于开源软件的合规使用仍有诸多共性的要点,我们建议从如下角度对企业开源软件的获取、使用、分发全流程进行合规审查:1. 建立使用开源软件的申请和审查制度(未经审批的软件不得使用)优质的开源项目往往汇集了众多软件工程师的智力成果,可以很大程度上助力公司的项目开发,完全禁止开源软件的使用不利于公司的发展,但随意的使用也会给公司带来风险,尤其公司的软件可能委托第三方技术人员进行开发的情况下,公司的管控力较弱,更应当进行规范化管理。因此可以考虑在所有的软件开发项目中建立开源代码使用审批制度等,要求“一事一议”,由具体的开发人员在使用某一开源软件前,就使用的必要性等提交书面申请和说明(参见附件开源软件法律合规审查表),交由相关人员审核,审核通过后方才允许使用。2. 结合许可证核实待使用软件的性质(未经授权软件的不得使用)开源软件的本质在于通过协议的方式允许用户自由地获取、使用、修改和分发其源代码,可见开源同样意味着取得授权,而互联网中公开的源代码不完全等于开源代码,例如侵权行为人将其非法获取的源代码置于互联网环境下,则用户对该公开的源代码使用行为并未取得任何授权,无法免除侵权责任。因此在使用开源软件前,必须要核实其开源许可证。一般情况下,如果所使用的开源软件是通过开源社区下载,那么开源社区通常会对该软件所适用的许可证类型和版本号等信息进行明确标示,另外也可以在该软件的源代码文件中找到完整的特定版本开源许可证文本。如果无法找到许可证文本或者授权协议,则不能认为该软件是开源软件,企业不能因为有获得该代码的公开途径而任意复制或使用(该种情况同普通商业软件,应当单独取得授权)。3. 保证开源软件获取途径的规范性(不明来源的软件不得使用)为保证开源软件获取途径的规范性,从正规的开源软件社区获取代码当然是题中之义。另外,虽然一般情况下开源软件社区均会公布某开源软件所适用的许可证版本,但不排除一些权利人在常见的许可证版本上自行更改或者添加其他限制性条款形成新的许可协议,故有必要对获取过程及许可证内容进行证据固定。同时虽然当前司法实务中一般认为开源许可证不具有回溯力(例如,根据GPL V3协议条款约定和性质,只要某个软件版本加入了GPL V3协议,则无法随意删除GPL V3协议,该版本源代码将永久保持开源,即使授权方删除GPL V3协议也无回溯力,授权方只能在后续的版本中变更或删除GPLV3协议,但并不影响此前版本继续适用GPL V3协议的效力),但如果进入诉讼阶段,无论是作为原告还是作为被告,均需要用户提供证据证明获取涉案软件时所适用的许可证版本。因此为避免出现社区网站或者许可证的意外调整和变动,建议在决定使用某款开源软件时,采用时间戳固定开源软件下载过程及适用的许可证版本。4. 审核并严格履行开源许可证规定的义务(履行不能情况下不得使用)如此前分析,不严格履行开源许可证义务将面临违约或者侵权风险,企业在使用开源软件时应该尊重并保护作者的合法权益,严格按照许可证的规定执行。同时需要提示的是,不遵守开源许可证约束的衍生软件,即使包含了二次开发者的部分智力成果(缺乏独创性要件),也可能无法获得著作权法保护。例如,在南京未来高新技术有限公司诉江苏云蜻蜓信息科技有限公司、刘某侵害计算机软件著作权纠纷案[7]中,法院采纳了行为人的开源抗辩主张,认为因权利人违反GPL开源许可协议义务(未公开衍生代码),故丧失以衍生软件向第三方主张侵权的权利基础,不认定行为人使用受GPL传染和影响的主程序构成侵权。因此,我们建议在不同的项目中,应结合不同开源软件适用的许可证(最终应以原文为准),严格按照许可证的要求履行。具体到某一开源软件,至少从能否进行自由获取、使用、修改、分发,以及衍生开发时是否需要公开衍生代码、是否需要发布版权声明、是否需要发布许可证副本、是否需要声明对开源软件的修改、是否包含专利及商标许可等常见许可证要求的角度进行核查,评估履行可能性,避免因违反许可证义务而在诉讼中出现衍生软件的权利基础不稳定的情况。现以GPLV3许可证(GNU GENERAL PUBLIC LICENSE Version 3)和ApacheV2许可证(APACHE LICENSE, VERSION 2.0)示例如下: 权利义务审查要点GPLV3许可证ApacheV2许可证是否可以商业性使用是是使用时是否需要保留所有版权、专利、商标和权属声明是是使用时是否需要保留免责声明是是使用时是否需要发布一份许可证副本是是在包含“NOTICE” 文本文件时是否要求发布署名声明否是是否可以修改源代码后进行二次开发是是二次开发时是否需要公开衍生源代码是否二次开发时是否需要声明对开源许可证的修改是是是否包含专利许可是是是否包含商标许可否否5. 结合公司闭源需求审查开源许可证的传染性(闭源项目一般不得使用开源软件,或必要时采取有效措施阻断开源软件的传染性)如前所述,开源许可证大体上可分为宽松式许可证或著佐权式许可证,由于著佐权式许可证具有高传染性,对于利用在先开源软件的后续衍生软件,只要与开源软件有关联且整体发布,那么整个衍生软件均必须适用该著佐权式许可证发布。因此,在公司的软件项目开始前,需要明确是否接受将该项目成果代码予以公开,如果出于公司发展的需要不计划公开衍生软件代码,则禁止选择适用著佐权式许可证的开源软件。例如据某中文开源技术交流社区报道,2021年12月抖音海外版 TikTok 上线的一款名为 TikTok Live Studio 的 APP,因使用 GPL 许可证下的开源软件源码却没有按照 GPL 许可证要求开源,被举报后不得不下架处理[8]。当然,如果从技术上考虑,公司的某一项目必须要使用开源软件,且该开源软件属于著佐权式而具有传染性,可能会导致衍生软件源代码出现强制开源的后果。同时公司对该项目又有闭源需求,此时需要采取有效措施阻断开源软件的传染性(仅可主张对衍生部分闭源,对于开源部分无权主张任何权利)。就阻断传染性的措施,在法律法规层面目前暂没有找到明确的规定,但结合司法实务中的案例,法院一般通过分析开源软件与衍生软件是否相互独立进行判断,我们选取部分典型案例中的相关企业的做法供参考:(1)在前述济宁市罗盒网络科技有限公司与广州市玩友网络科技有限公司等侵害计算机软件著作权纠纷案中,法院认定,GPL开源许可协议具有高传染性,对于利用在先开源软件的后续衍生软件,只要“与开源软件有关联且整体发布”,那么整个衍生软件均必须适用GPL 3.0开源许可协议发布。同时该案中法官还以安卓系统为例进行反向说明:谷歌公司通过将GPL的适用局限在安卓系统独立的底层Linux内核空间中,而在上层的类库和应用框架以及用户空间部分则适用较为宽松的ASL开源软件许可协议。由于上层的类库和应用框架以及用户空间部分并不视为底层Linux内核的衍生产品,因此避开了GPL许可协议传染至整个安卓系统,那么安卓系统上层的硬件驱动和应用框架程序就是独立的,其开发者适用ASL进行开发,可以自由选择是否公开其源代码。(2)在北京知识产权法院审理的数字天堂(北京)网络技术有限公司(以下简称数字天堂公司)诉柚子(北京)科技有限公司、柚子(北京)移动技术有限公司(两被告以下简称柚子公司)侵犯计算机软件著作权纠纷一案[9]中,法院认为数字天堂公司主张权利的HBuilder软件中的三个独立插件,均处于独立文件夹中,该文件夹及根目录下并无GPL开源许可证协议文本,尽管HBuilder软件其他文件夹中包含GPL开源许可证协议,但该协议对三个插件软件并无拘束力,三个插件不属于开源软件的衍生产品或修订版本,柚子公司抗辩不成立。(3)在北京闪亮时尚信息技术有限公司、不乱买电子商务(北京)有限公司侵害计算机软件著作权纠纷一案[10]中,最高院也认定,由于原告发布的软件为B/S结构(即用户端与服务器端相分离),而仅服务器端使用了GPL代码,原告对外发布的用户端软件未受GPL传染,进而有权主张被告的侵权责任。结合上述司法实务中的案例,建议公司结合项目闭源需求,参照上述案例中的不同方式,阻断开源许可证的传染性。不过同样需要提示的是,鉴于并无明确的法律规定,对于上述做法不排除不同的法院做出不同的判决,因此对于较为关键且有闭源需求的项目,为最大程度避免风险,我们建议尽可能不使用开源软件代码,而是采取完全自主研发的方式。6.审查不同开源许可证的兼容性(不兼容的许可证不得用于同一项目)根据不同许可证对开源软件使用者修改后的源代码公开的约束力度、与其他许可证的兼容程度,著佐权式许可证要求修改版本须以同一许可协议发布,宽松式许可证对已修改代码的许可协议没有任何要求,一般情况下著佐权式许可证之间不兼容,著佐权式许可证与宽松式许可证可以项下兼容,但特殊情况下当宽松式许可证的特殊条款和著佐权式许可证有明显冲突时,也会存在不兼容的情况,因此在实际使用过程中,如果一个项目中出现多个开源许可证,仍应以具体条款约定的条件为准去判断兼容性。7. 控制对开源软件的依赖度(关键核心模块的源代码开源比例避免过高)由于各国的法律法规存在差异,不排除某些开源软件受到当地出口管制相关法律法规的限制,如果核心业务系统过度依赖开源软件,在该开源项目受出口管制限制时将严重影响系统安全。例如美国曾将中国某手机公司及其附属公司列入出口管制“实体名单”,随后美国谷歌公司宣布将停止为其提供安卓(Andriod)系统的技术支持与服务,而安卓系统一直是世界知名的开源项目,导致该公司一度陷入困境。对于开源软件的依赖度标准目前并无明确的法律法规予以规定,但在国家发展改革委2013年组织的国家信息安全专项检查活动中,其中包括中国信息安全测评中心负责的金融领域应用软件代码安全检查,而中国信息安全测评中心在《金融领域应用软件源代码安全检查产品测评方案》中就自主知识产权的检测,提出送检产品关键核心模块的源代码开源比例原则上不超过30%,所使用的开源代码中不应包含强制要求开源的类型才符合安全性的预期结果。虽然上述比例并非法定要求,但可以看出相关部门已经意识到如果核心系统过度使用开源软件,既与积极落实国家科技战略布局,重视核心技术研发和自主知识产权掌握的发展方向不符,也会产生更多的法律风险符。因此,可以考虑参考上述关键核心模块的源代码开源比例(具体可以根据企业实际情况),对企业内部的软件项目进行划分,例如分为完全自主知识产权软件项目(无开源内容)、一般开源软件项目(开源比例小于30%)、高度开源软件项目(开源比例大于30%)等,从而确保对于涉及系统安全的核心项目自主研发,对于一般项目充分利用开源技术,实现分类管理。8. 结合个案情况对衍生软件选择著作权保护与商业秘密保护(作为商业秘密的技术信息不得公开)实务中,许多情况下对于开源软件的使用往往采用“开源+自研”结合的模式,因此对于在开源软件基础上二次开发完成的衍生软件,可以作为著作权法意义上的软件作品受到保护,著作权可以由公司享有(某些许可证要求需要对修改内容进行声明的情况下才享有著作权,请务必留意)。同时如果满足不为公众所知悉、具有商业价值并经权利人采取相应保密措施的条件,该衍生软件也可以作为商业秘密进行保护,因此应当严禁开发人员上传到任何公开平台。司法实务中,虽然基于开源许可证的传染性可能导致衍生软件的秘密性的丧失,但是权利人仍可以将针对衍生软件中包含的算法、架构、设计思路等符合商业秘密构成要件的技术信息单独提取出来,作为专有技术予以保护,即可以将衍生软件相关的算法、架构、设计思路等作为商业秘密进行保护。因此,对于衍生软件也可以采取一定的保密措施,如出现第三方侵犯开源软件基础上的衍生软件的情形,再综合案件具体情况选择主张著作权方式维权或主张商业秘密方式维权。总之,在开源事业日益蓬勃发展的今天,无论是企业还是软件开发者,既不能因噎废食杜绝开源软件的使用,也不能忽视使用开源软件可能带来的法律风险,而是应当在充分评估法律风险的基础上,采取有效的法律合规措施,实现开源软件的合规使用。注释:[1] 参考祝建军:《开源软件的著作权保护问题研究》,载《知识产权》2023年第3期[2]参考肖建华、柴芳墨:《论开源软件的著作权风险及相应对策》,载《河北法学》2017年6月第35卷第6期[3] Copyleft中文一般译作著佐权,意指对传统著作权的补充,表达对Copyright的叛逆。参照自由软件基金会官网的解释,Copyleft是一种让程序或其它作品保持自由的通用方法,并要求对Copyleft程序的任何修改和扩展都保持自由。[4] 如最高人民法院发布的2021年中国法院10大知识产权案件之八:(2019)粤73知民初207号济宁市罗盒网络科技有限公司与广州市玩友网络科技有限公司等侵害计算机软件著作权纠纷[5] https://www.gnu.org/licenses/license-compatibility.html[6] https://opensource.org/trademark-guidelines/[7] 判决书文号:(2021)苏01民初3229号[8] https://baijiahao.baidu.com/s?id=1719724274098253777&wfr=spider&for=pc[9] 判决书文号:(2015)京知民初字第631号[10] 判决书文号:(2019)最高法知民终663号E&C 观点 | 企业使用开源软件的法律合规风险及应对建议本文首发于微信公众号”天达共和法律观察“,欢迎关注查看更多专业观点。
0 评论