专业文章
Article开源软件法律问题与合规指引
作者:admin 发布时间:2026-03-11
作者:陈阳、赵梦琪
开源软件法律问题与合规指引
陈阳、赵梦琪
在云计算、人工智能高速发展的今天,开源软件已经成为众多科技型企业软件源代码的重要组成部分。但自由使用并不代表无拘无束,隐藏在开源许可证背后的法律风险,可能会让企业陷入侵权纠纷。本文期待通过开源软件的概念介绍、技术许可证的条件以及相关判例,为您解开开源软件的法律密码与合规方案。
一、什么是开源软件?
开源软件是指发行时附上软件源代码,源代码可以被公众使用的软件。开源软件的核心是开放源代码,通过许可证的方式授予用户使用、修改和再发布的权利。开源软件不反对商业化,也不放弃版权与专利权。简言之,“开源”是一种授权方式,并非等同于放弃权利或是可以直接免费使用。
从20世纪80年代的自由软件运动,到90年代埃里克·雷蒙德提出”开源软件“概念,再到如今GitHub平台聚集8300余万开发者、2亿余个代码仓库,开源软件已渗透到操作系统、数据库、人工智能等各个领域。我国《“十四五”规划》更明确提出完善开源知识产权和法律体系,这意味着开源合规已成为企业的必修课。
对于企业来说,首先要分清开源软件与其他软件的核心区别:闭源软件:源代码封闭,用户使用权限受到严格限制(如微软Office);免费软件:源代码不公开,用户无偿使用但不可自由修改源代码;开源软件:开放源代码,允许用户使用、修改和再发布,但需遵守许可证规则。
二、开源软件许可证有几种类型?
目前开源软件许可证主要依据衍生软件是否需要开源以及软件被修改并再发行时是否要求公开源代码将许可证分为两大类:著佐权许可证类型、宽松许可证类型。
著佐权许可证类型:
宽松许可证类型:
对于如何判断开源软件属于何种类型,可以参考下图:

但无论是哪种许可证一般具有如下两个共同点:
(1)开发者不承担瑕疵担保责任。瑕疵担保责任一般发生在有偿合同中,而开源软件及其衍生软件通常都是免费提供的,因此,开发者并不负有瑕疵担保责任。
(2)保留著作权标记。由于开源软件的著作权没有被放弃,因此,许可证中一般都需要以适当的形式保留源代码中的著作权标记。
三、违反开源许可证需要承担什么后果?
(一)开源许可协议的法律性质
2008年美国联邦巡回上诉法院在审理的Jacobsen诉Katzer上诉案件中,直接对开源软件许可协议的性质作出明确认定:开源软件许可协议明示了授权许可源代码文件可以复制的条件,并使用了习惯性用语提示授予复制、改编、分发的权利,是一种著作权协议,如果下载使用者不能满足这些条件,则应该按照提示与著作权人另行协商。否则,如果被许可使用者超出该范围使用,不仅属于违约,也构成对著作权的侵权1。
在美国Artifex诉Hancom案中,美国的Artifex公司拥有并发布了一款名为Ghost的pdf软件,并提供商用许可和GPL下的开源许可两种许可方式。韩国的Hancom公司将Ghost整合进其Hangul软件中,但其并没有购买商用许可,也没有根据GPL许可证将整合有Ghost的Hangul软件开源。2016年12月,Artifex公司在加州北区联邦法院起诉Hancom公司版权侵权以及违反开源软件许可证。美国加州联邦法院认为,违反开源协议,允许进行合同法和著作权法下可能的救济2。
在德国Welter诉D-案中,D-使用GPL协议的软件却未遵守开源要求,法院认定GPL许可证为“附解除条件的合同”,违反条件则许可失效,使用行为构成侵权;
在中国罗盒公司诉玩友公司案中,广州知识产权法院明确,开源协议是格式化著作权合同,开源协议规定的使用条件(如开放源代码等)系权利人许可用户自由使用的前提条件,亦即协议所附的解除条件。一旦用户违反了使用的前提条件,开源协议在授权人与用户之间自动解除,用户基于协议获得的许可即时终止。用户实施的复制、修改、发布等行为,因失去权利来源而构成侵权。
(二)对违反开源软件许可协议行为的救济
对违反开源软件许可协议的行为存在违约救济和侵权救济两种方式。
这两种救济方式虽然都能在某种程度上弥补权利人的损失,但违约之债和侵权之债的救济形式和力度均有差别。违约当事人的损害赔偿责任范围小于侵权行为人的损害赔偿责任范围。
违约责任的守约方的法律救济措施主要包括继续履行和损害赔偿,侵权责任的受害人的法律救济措施除包括停止侵害、损害赔偿、恢复原状等外,还包括临时禁令救济措施。
(三)开源软件的权利主体
罗盒公司诉玩友公司一案中,罗盒公司被认为并非涉案软件的著作权人,无权提起本案诉讼。对此,广州知识产权法院认为:开源软件项目的贡献者众多,只要项目保持开源则贡献者数量会持续动态地增加。即使涉案软件属合作作品,就在案证据难以查清所有权利人的基本情况下,若开源项目要求必须经过所有贡献者的授权才能提起诉讼,那么将导致开源软件维权无从提起。因此,罗盒公司作为提交了绝大部分代码量的项目管理者有权提起本案诉讼。
(四)开源许可证中的限制商业使用条款
在前述罗盒案中,广州知识产权法院在判决中明确GPL协议保障的是“源代码自由”,不是“使用免费”。企业可通过“免费提供软件+收费提供服务”的模式盈利,只要遵守许可证规则,收费完全合法。
(五)对受开源许可证影响的软件部分的认定
受到开源许可证影响的软件部分认定应当根据开源许可证的条款确定,部分有传染性的开源软件许可证要求后续软件开源,并不意味着与开源软件相关的所有软件必须开源,比如GPL许可证强制开源的要求限于使用开源软件形成的派生软件或修订软件,不包括与开源软件联合的其他独立软件。
(1)使用开源语言软件开发的应用程序。在天创科技诉阿凡提计算机软件著作权纠纷案中,涉案软件ShopNC电商系统根据开源软件PHP语言编写。开源软件PHP语言的使用手册附CC3.0许可证。CC3.0许可证要求后续修改的演绎作品或汇编作品使用相同的许可证。被告主张,涉案软件ShopNC电商系统应当根据CC3.0许可证的要求公开源代码,但未公开源代码,无权主张著作权保护。宁波中院二审认为,涉案ShopNC电商系统由PHP语言软件编写,但PHP语言软件的使用手册许可证不等同于PHP语言软件的许可证,其次,即使PHP语言软件使用CC3.0许可证,该许可证的开源要求指向的是原作品的演绎作品。然而,计算机语言软件本身具有工具属性,使用PHP语言软件编程的S软件与PHP语言软件之间并未体现以后者为基础的派生关系,不属于PHP语言软件的演绎作品,不受PHP语言许可证约束3。
(2)网站的后端程序独立于开源软件开发的前端程序。在不乱买公司诉闪亮时尚公司侵害计算机软件著作权纠纷案中,不乱买公司在前端程序使用了GPL许可证的开源软件,在诉讼中明确放弃以前端程序主张权利,仅以后端程序主张权利。被告闪亮时尚公司认为,前端程序不能独立工作,必须调用后端程序的图片,两者存在交互且没有进行有效隔离,不是相互独立的,根据GPL许可证的传染性规定,不乱买公司的前端程序与后端程序共同构成其主张著作权的软件,整个软件应视为前端程序的修订版本,应当遵循GPL许可证免费开源。最高院二审认为,前端代码一般是关于用户可见部分的编码,用以实现操作界面如页面布局、交互效果等页面设计;而后端代码一般是涉及用户不可见部分的编码,用以实现服务端的相关逻辑功能。同时,前端代码与后端代码可以分别独立打包、部署。因此,前端代码与后端代码在展示方式、所用技术、功能分工等上均存在明显不同,不能因前端代码与后端代码之间存在交互配合就认定二者属于一体,应认定前端程序与后端程序相互独立。不乱买公司仅以后端程序主张权利,因此涉案软件仅后端程序。综上,不乱买公司主张权利的后端程序不受GPL许可证约束,无需强制开源4。
(3)将开源软件的衍生程序与其他程序放在不同文件夹,单独进行计算机软件登记。在数字天堂公司诉柚子(北京)移动技术有限公司等侵害计算机软件著作权纠纷案中,数字天堂公司主张著作权保护的三个功能插件在Hbuilder软件压缩包内提供下载,解压后,三个功能插件以三个独立的文件夹形式存在。在Hbuilder软件的根目录以及涉案三个功能插件文件夹内不存在GPL许可证,在压缩包其他文件夹中有GPL许可证。数字天堂公司还提供了与三个功能插件相对应的三份计算机软件登记证书。被告柚子公司认为涉案三个插件应受GPL许可证约束。北京高院二审认为,柚子公司认可涉案三个插件中并无GPL开源协议,在Hbuilder软件的根目录下亦不存在GPL开源协议,且数字天堂公司对三个插件分别进行计算机软件登记,应当认定涉案软件与其他有GPL协议的软件属于独立软件。综上,对柚子公司涉案三个插件应受GPL协议约束的主张不予支持5。
三、企业如何针对开源许可做合规努力?
(一)做好开源软件的管理
①企业要建立软件开发记录机制。将使用开源软件的情况记录在案,以便根据开源许可证确认权利义务。软件开发记录还可以作为企业保护自身创新成果的权属证据;
②企业要做好开源闭源隔离。有些开源许可证有传染性条款,隔离程序有利于将其他未使用开源软件的程序,形成独立程序,避免受到开源许可证传染性的约束。同时,在有条件的情况下,考虑不同软件在功能、分工、所用技术等方面的差别,进行分别独立打包、部署、进行计算机软件登记,有利于其他联合的软件被认定为独立软件。
③企业要采取相应管理措施。企业对于软件项目中使用到的所有开源软件要有详细记录,包括使用了哪些开源软件、在哪个模块中使用、使用了开源软件中的哪个具体的文件或库以及具体的文件路径;并保存好原始的开源软件包,以便查询,核实相关许可协议、版权声明文件、开源软件使用说明等,以便对使用到的开源代码进行管理。
(二)保证开源软件的兼容性
①保证开源软件包整体之间的兼容性。当开源软件的整体文件包是按照单一的开源协议进行发布的,要保证软件包之间开源协议的兼容性。
②整体软件使用到的所有开源软件之间的兼容性。将整体软件中所使用到的开源软件包以及每个开源软件包中的子文件夹或子文件对应的开源协议进行统一整理,确保所有的开源代码对应的开源协议之间都互相兼容。
③不同的子文件夹或子文件之间的兼容性。若开源软件包中含有多级目录,根目录下和子目录下均包含不同的开源协议副本以及不同的版权声明,需要对开源软件的文件结构进行全面地了解。
(三)注意开源软件的评估和发布合规
首先,企业技术人员在使用开源软件前需经过合规团队或法务团队的审核与批准,避免出现随意使用未经评估的开源软件的情况;其次,所有软件在对外发布前都需要经过合规团队或法务团队的审核与批准,以确保软件产品在对外发布前已履行开源许可证的要求以及许可证的兼容;再者,企业需要以闭源发布时对许可证进行评估;最后,企业在产品更新迭代时,要对新引入或者发生变化的开源软件重新进行审核与批准。
开源软件为企业节省了研发成本、加速了创新进程,但自由使用的背后是严格合规的底线。从代码选型到许可证履行,从风险隔离到流程管控,每一个环节的合规动作,都是企业避免法律纠纷的“保护伞”。
1.Jacobsen v. Katzer, 609 F.Supp.2d 925 (N.D.Cal.,2009)
2.Artifex Software, Inc. v. Hancom, Inc., 2017 WL 4005508 (N.D.Cal., 2017)
3.浙江省宁波市中级人民法院(2017)浙02民终3852号
4.北京知识产权法院(2016)京73民初1111号
5.北京市高级人民法院(2018)京民终471号
