开源软件是数字和人工智能时代技术创新的核心资源,开源软件同时是典型的技术与法律相结合的产物。本文在简要介绍开源软件技术发展和商业应用的基础上,结合司法案例和裁判规则,对开源软件法律风险、IPO监管与具体风险防控措施展开分析和讨论。
作者:孟睿、史淑彦
一、引言
开源软件作为全球软件生态的核心组成部分,其使用、修改与分发行为受开源协议的严格规范。在数字和人工智能时代,开源软件更是企业技术创新的核心资源,推动着技术迭代与产业升级。本文结合我国开源软件纠纷司法实践和IPO审核实践,探讨开源软件使用中的主要法律问题、风险边界及防控措施。
二、开源软件与开源协议
开源软件是典型的技术与法律相结合的产物,法律问题的分析和解决不能脱离现实商业应用场景,本文在此简要回顾开源软件相关技术发展和商业应用。
(一)可分离提供的源代码和目标代码
计算机程序包括源程序(源代码)和目标程序(目标代码),同一计算机程序的源程序和目标程序被视为同一作品。[1]源代码是由高级编程语言编写的人类可读的符号化指令序列,例如result=x+y。目标代码是可由计算机等具有信息处理能力的装置执行的代码化指令序列,通常为二进制指令,机器可读但人类不可读,例如0100010101。软件工程师通过编写、修改源代码来开发、维护、完善和改进计算机程序及其功能。源代码经过编译器编译后形成目标代码,并由计算机执行。用户若仅关注软件的功能性使用,只需获得目标代码;若还计划自行修改或扩展软件功能,需获取源代码。
源代码和目标代码作为同一软件的不同表现形式,具有可分离的属性,可分别、独立提供给用户。在向用户或社会公众提供软件时,可基于具体需求,仅提供目标代码,或同时提供源代码和目标代码。
(二)开源软件与闭源软件
根据源代码的公开性,即根据是否向用户和公众提供软件的源代码,可将软件分为开源软件和闭源软件。开源软件,如Linux操作系统、Mozilla Firefox浏览器等,其源代码对公众开放,允许用户自由查看、修改和分发,其强调透明性、协作和共享。闭源软件,如Windows操作系统、iOS操作系统等,不对外公开源代码,用户只能使用目标代码,注重通过商业秘密和知识产权形成市场控制力和竞争力。
(三)开源软件的使用和分发方式
随着技术的发展,开源软件在前沿技术领域,尤其在人工智能、云计算和大数据等领域占据重要地位,其使用和分发方式也灵活多样。
常见的开源软件使用方式包括:
●直接使用:用户直接功能性使用开源软件,无需修改或二次开发,如使用现成的开源软件作为数据库、中间件、框架等系统组件。
●二次开发或定制化开发:对开源软件进行修改、扩展或定制化改造,以适应特定业务需求,如修改ECharts图表库以支持自定义样式和交互,或使用OpenCV进行图像识别算法开发。
●作为研发工具使用:将开源软件作为开发工具的一部分,如使用SonarQube进行代码质量分析,或使用TensorFlow构建、训练和部署各类机器学习模型。
●产品集成:将开源软件集成、嵌入到企业自创产品中,作为自创产品的一部分进行销售或分发。
软件分发方式是指向用户或公众提供软件的方式,常见的开源软件分发方式包括:
●在线分发:通过互联网提供下载链接,如GitHub、GitLab等平台。
●企业内部分发:通过内部网络或企业级工具(如SaaS)进行分发。
●私有云部署:软件部署在客户机房或第三方托管的私有云中,独享使用。
●公有云部署:通过第三方云服务商(如阿里云、AWS)提供服务,按需租用。
●其他部署方式:单机部署、集群部署、自建数据中心和共用数据中心等。
不同的使用和分发方式,会引起不同的权利义务关系。
(四)开源协议及主要内容
开源协议,又称开源软件许可证,是用于规范开源软件使用、修改和分发行为的法律文件,重点在于规范源代码的自由获取、使用、修改、分发。开源协议通常由开源社区或组织制定,而非立法或政府机关制定。据不完全统计,目前已形成一百多个开源协议,不同的开源协议适用于不同的使用和分发场景,形成不同的权利义务关系。开源协议通常包括以下主要内容:
●授权条款:开源协议均明确授予用户自由复制、使用、修改和分发源代码的权利。
●许可条件条款:规定用户复制、使用、修改和分发开源软件时必须履行的义务或遵守的条件,包括保留原始版权声明和修改信息;分发时附带协议文本,确保接收者知晓权利义务;禁止在开源协议外附加额外限制;未经允许不得使用开源软件的商标或贡献者名义进行商业推广等。
●衍生软件及再分发条款:衍生软件是指对开源软件进行修改、二次开发或将开源软件与用户自己开发软件组合、整合或集成后形成的软件。不同开源协议对衍生软件是否如同开源软件本身那样也要开放源代码有不同要求。GPL协议要求衍生软件必须同样开源向用户提供源代码,以确保开源精神的延续性;而MIT协议则无此强制性要求。
●免责条款:表明开源软件开发者、提供者不对因使用开源软件可能引起的问题承担责任。例如,MIT协议规定,软件以“现状”提供,不附带任何形式的保证,用户因使用该软件而遭受损失的责任完全由用户自行承担。
●授权终止条款:如果用户在使用开源软件时违反了开源协议设定的任何条款,尤其是许可条件条款、衍生软件及再分发条款,那么该用户根据开源协议获得的自由复制、使用、修改和分发开源软件的授权将自动终止。
开源协议通过以上条款,系统性地构建了开源软件的使用规则与权利义务体系。
三、开源协议的法律性质及法律责任
虽然我国有关开源软件的司法案例还不多,但基于已有案件及其讨论分析,我国司法实践已经形成部分共识。
(一)开源协议构成附解除条件的软件著作权使用许可合同
开源协议不是立法或行政部门制定的法律文件,且授权人与用户之间无传统意义上的协商谈判过程。因此,开源协议能否作为法院审理案件时确定双方权利义务、侵权与否以及法律责任等争议的准据标准,是首先需要解决的问题。我国司法实践的主流观点认为,开源协议是附解除条件的软件著作权使用许可合同,对各方具有法律约束力。
第一,司法实践认为开源协议是通过要约与承诺达成的、对双方具有法律约束力的格式合同。在罗盒公司与风灵公司案中法院认为,GPL协议授予用户自由复制、修改、再发布等权利,属于设立、变更、终止民事权利义务关系的民事法律行为;开源软件的发布视为要约,用户通过复制、修改、再发布等行为作出承诺;GPL协议以电子文本方式表现其内容,而电子文本是一种有形的表现形式,属于以书面形式订立的合同;无论从内容还是形式分析,GPL协议具有合同性质,可认定为授权人与用户间订立的著作权许可合同。[2]在未来公司与云蜻蜓公司案中法院认为,GPL协议是为特定开源项目开发而预先拟定的格式合同,由著作权人向软件使用者提出合同条款;其格式化条款保持承继性,且不属于格式合同条款无效的情形,其授权内容符合我国《著作权法》的规定,具有合同性质,是授权方和用户订立的格式化著作权合同。[3]
第二,司法实践认为,开源协议是附解除条件的合同。GPL协议(3.0版)第8条约定:“除非在该协议明确授权下,其他任何传播或修改受保护作品的企图都是无效的,并将自动终止你通过本协议获得的权利。”对于此约定,在罗盒公司与风灵公司案,[4]罗盒公司与玩友公司案、[5]卓卓公司与摩尔口腔医院案中,[6]法院均认为协议规定的使用条件,如开放源代码、标注著作权信息和修改信息等,系授权人许可用户自由使用的前提条件,亦即协议所附的解除条件,一旦用户违反了使用的前提条件,将导致协议在授权人与用户之间自动解除,用户基于开源协议获得的授权自动终止。因此,开源协议实质是权利人将其复制权、发行权、修改权等附条件地许可给不特定公众的著作权许可合同。
(二)违反开源协议的法律责任
如前所述,当用户违反开源协议条款时,权利人的授权或许可自动终止。此后,如果用户继续实施复制、修改、分发等行为将失去合法依据,需承担相应法律责任。我国《民法典》第一百八十六条规定:“因当事人一方的违约行为,损害对方人身权益、财产权益的,受损害方有权选择请求其承担违约责任或者侵权责任。”按照一般法理,授权终止后用户继续复制、修改和分发开源软件的行为构成违约责任与侵权责任的竞合,权利人可自主选择救济路径。司法实践中,法院亦认为违反开源协议使用开源软件的行为存在潜在的违约责任和侵权责任风险,[7]当事人有权自行选择救济方向。在罗盒公司诉玩友公司案件中,经法院依法释明后,罗盒公司明确主张玩友公司违反GPL开源协议构成无权使用,应承担相应侵权责任。[8]在其他司法案例中,权利人也通常倾向于选择主张侵权责任。[9]
本文认为,违约救济与侵权救济各有利弊,当事人可以结合具体案情和价值取向,选择更适合自身的救济路径。在主张违约责任时,权利人可要求违约方承担继续履行、采取补救措施或赔偿损失等责任。但需注意,由于开源协议通常未设置违约金条款,实践中难以直接主张违约金责任。在主张侵权责任时,除停止侵害、消除影响、赔礼道歉、赔偿损失等常规责任外,符合法定条件时还可申请临时禁令救济、主张惩罚性赔偿及要求支付合理维权开支。对比而言,违约责任的举证难度相对较低,侵权责任法律救济措施更多,损害赔偿范围更大,但举证难度显著提高。
值得注意的是,主张违约责任具有独特的法律价值:对于技术性能优异、应用价值突出的衍生软件,如果开源协议要求继续开源,权利人通过主张违约责任可要求违约方继续履行义务,强制将相关衍生软件按开源协议要求开源,这将有效保障开源软件“自由、协作、共享”核心理念的落实与传播。[10]
(三)开源抗辩的司法实践
开源抗辩是指在软件著作权侵权纠纷中,被控侵权人以原告(软件权利人)违反开源许可协议为由,主张原告的行为已丧失或部分丧失追究侵权责任的合法性,试图通过“不洁之手”原则否定原告著作权的正当性,进而请求法院驳回原告的著作权侵权诉求或限制其救济范围的一种抗辩策略。开源抗辩是否能够获得法院支持,我国司法实践呈现出观点摇摆的状态。
在未来案中,被控侵权人云蜻蜓公司辩称,原告涉案软件中主程序部分受GPL协议约束,但原告未遵守GPL协议开放主程序的源代码,反而对涉案软件进行闭源处理,构成违约行为;即使被告存在使用涉案软件的行为,原告的非法利益也不应受法律保护。法院经审理认为,原告软件主程序部分因GPL协议的“传染性”条款而受该协议约束,其违反GPL协议不对外提供主程序源代码的行为若仍获法律保护,实质是保护其不当行为产生的利益,有违诚信原则,且将导致GPL协议关于源代码持续开源的规定被虚置,不利于通过开源协议实现源代码持续传播的立法目的。因此,法院对主程序部分构成著作权侵权的诉求不予支持。[11]该案成为我国首例支持开源抗辩的司法案例。
然而,最高人民法院在之后的“亿邦案”二审判决中认为,软件侵权案件中被告以原告违反开源许可协议为由提出的不侵权抗辩不能成立。法院指出,软件开发者自身是否违反GPL协议与其是否享有软件著作权属于相对独立的法律问题,开发者违反GPL协议的行为属于合同义务违反,但其对独创性作品享有的著作权仍受法律保护,二者不宜混淆处理,否则可能不合理地剥夺或限制软件开发者基于其独创性贡献依法享有的著作权。被诉侵权人仅以开发者未依据开源协议开源为由抗辩不构成侵权的,人民法院一般不予支持。[12]
尽管有观点认为,最高人民法院在“亿邦案”中的裁判立场使得开源抗辩的司法适用空间被大幅压缩,甚至成为“昙花一现”的例外情形。但本文认为,鉴于当前司法案例样本有限,尚不足以认定我国已形成关于开源抗辩的统一裁判规则,该问题的法律内涵与法律价值仍需深入探讨。开源协议作为国际通行的、软件行业普遍认可的有效契约,其文本约束力是诚实信用原则在软件领域的具体体现。从法律价值层面分析,支持开源抗辩有助于维护开源创新生态体系的维持和健康发展,有利于保障公众对开源软件成果的预期和合理使用,这些法律价值取向值得司法实践予以充分重视。
|