案由
侵害计算机软件著作权纠纷
当事人
网某科技(苏州)公司(一审原告、被上诉人);浙江亿某公司、苏州启某公司(一审被告、上诉人)
审理法院
江苏省苏州市中级人民法院(一审);最高人民法院知识产权法庭(二审)
案号
(2018)苏05民初845号(一审);(2021)最高法知民终51号(二审)
涉案软件
OfficeTen1800 系统软件(V1.8),以 OpenWRT 系统软件(适用 GPLv2 协议)为基础二次开发形成,分底层系统软件与上层功能软件两部分
被诉行为
启某公司员工利用在网某公司任职的便利,登录其服务器下载涉案软件源代码,少量修改后形成功能基本相同的软件;亿某公司生产、销售烧录该软件的网关产品
判项
停止侵害;亿某公司与启某公司共同赔偿经济损失及维权合理费用 50 万元;亿某公司在其官网刊登告示消除影响,连续不少于 15 天;驳回其他诉讼请求
裁判日期
一审 2020 年 7 月 14 日;二审 2023 年 10 月 12 日(终审)
涉案法条
《著作权法》第三条第八项、第十条第一款(本案适用 2010 年修正文本);《计算机软件保护条例》第二条、第五条第一款、第七条第一款、第八条第一款
关键词
开源软件 · GPLv2 · 计算机软件著作权 · 二次开发 · 实质性相似
本文为公开裁判文书与官方发布材料的研究性评析,不构成针对任何具体事项的法律意见。
The Program
有一家做企业网关的公司,从 2009 年起投入约 2589 万元,做出一套网关产品系统软件。2013 年,这套软件取得国家版权局的著作权登记证书,登记名称是「OfficeTen1800 系统软件(V1.8)」。
这套软件装在企业的网关设备里,随硬件一起对外销售,不是单独售卖的软件包——这个形态后面会牵出两件事:发行权,以及被诉软件为什么能一台一台地卖出去。
2016 年 1 月,他们从经销商处买到一台竞争对手生产的企业网关。比对之后,这台设备的软件里出现了他们自己源代码的特殊标记,运行结果也有多处相同。
再查下去,人是从自己公司走出去的。刘某 2010 年 6 月入职,任硬件工程师,2011 年 7 月离职;吴某 2011 年 6 月入职,任嵌入式工程师,2015 年 5 月离职。两人入职时都签了保密协议:在职期间开发的成果,权利归公司;离职之后,保密义务继续。
吴某离职后去的是启某公司——一家 2015 年 5 月刚成立、法定代表人谢某的苏州公司。一审从讯问笔录里查明的结构是:亿某公司 2010 年成立,把研发放在苏州做;启某的注册手续由亿某派人办理;启某没有自己的财务,工资由亿某直接发到员工银行卡;研发计划也由亿某制定。人、钱、事,都从亿某走。
一审查明的事实是:被诉软件由启某公司的员工利用在网某公司任职的便利,登录网某公司的服务器下载涉案软件源代码,对其进行少量修改,形成与涉案软件功能基本相同的软件。两次鉴定意见,加上鉴定人出庭答复,结论是两款软件源代码实质性相似。
网某公司起诉,主张的是三项权利:复制权、修改权、发行权。请求判令停止侵害、赔礼道歉、消除影响,赔偿损失及维权合理开支 300 万元。
一审判决四项:停止侵害;亿某公司与启某公司共同赔偿经济损失及维权合理费用50 万元;亿某公司在其官网刊登告示消除影响,连续不少于 15 天;驳回其他诉讼请求。判决日期是 2020 年 7 月 14 日。
两家被告上诉。二审的争点不是「抄没抄」——鉴定意见摆在那里。他们换了一条路:涉案软件受 GPLv2 协议约束,按协议网某公司本来就负有公开源代码的义务,所以即便用了这些源代码,也不构成侵权。
| 审级 | 法院 | 案号 | 结果 |
|---|---|---|---|
| 一审 | 江苏省苏州市中级人民法院 | (2018)苏05民初845号民事判决 | 停止侵害;共同赔偿 50 万元;刊登告示消除影响;驳回其他诉请 |
| 二审 | 最高人民法院知识产权法庭 | (2021)最高法知民终51号民事判决 | 驳回上诉,维持原判(2023 年 10 月 12 日) |
从 2018 年一审立案到 2023 年终审,五年多。这个时长后面还会用到。
The Three Questions
这个案子真正的麻烦,在于原告自己的软件也不是从零写的。它是在 OpenWRT 系统软件上二次开发出来的。OpenWRT 是通信领域的系统操作控制软件,开源,适用的许可证协议是 GPLv2。
涉案软件因此分成两部分:一部分是对 OpenWRT 源代码进行增删、修改、调整之后形成的底层系统软件;另一部分是与具体功能相对应的新增源代码形成的上层功能软件。
被告的抗辩就从这里来。GPLv2 要求衍生作品整体按同一协议授权,你把新增的上层代码留在手里没有公开,本身就没有遵守协议;既然你自己不守这份协议,就不能再拿著作权来禁止别人使用。
这个抗辩里其实压着三个问题,必须分开答。第一,基于开源软件二次开发形成的软件,开发者有没有著作权,著作权归谁看的是创作事实还是登记事实。第二,开发者自己没按协议开源,还能不能禁止别人复制、修改、发行。第三,上层功能软件是不是 GPLv2 所说的「独立且分离的程序」,协议到底传不传到这一层。
一审、二审答了前两个。第三个问题,两级法院都绕开了。二审给出的理由是「难以查明」——这三个字的分量,比它看起来重。
把三个问题分开,不是为了讲得整齐。它们的答案各自独立,混在一起就会得出「用了开源代码就等于放弃著作权」这个结论。这个结论在本案里被明确否定了。
三个答案先摆在这里。第一个,有——前提是能指出独创性表达在哪里。第二个,能——只要被告证明不了你放弃过著作权,抗辩就不成立。第三个,本案没有答,理由是查不清。后面几节按这个次序展开。
The Ownership
一审没有一上来就谈开源协议。它先解决更基础的一步:涉案软件到底有没有著作权,著作权归谁。
这一步的划分是两层。基于 OpenWRT 开源框架本身所做的优化及开发,按开源协议确定其著作权归属;在开源产品之上进行二次开发,开发者付出创造性劳动、足以构成独立作品的,开发者享有自己的著作权。
涉案软件落在第二层。支撑这个结论的是三件事:投入(2009 年起约 2589 万元)、独创性(对底层源代码增删修改,并新增了与具体功能对应的上层代码)、可复制(软件本身能以有形形式复制)。法院据此认定它构成著作权法项下的作品,依法应当获得保护。
顺序值得留意。先确认独创性,再谈协议,协议的作用范围就被限定在「哪些部分受它约束」上;反过来先谈协议,很容易一路推到「用了开源代码就没有著作权」。这个推论在本案里被明确否定了。
但这一步也不是「在开源上开发就一定有著作权」。判决没有给出「多少行代码算够」的标准,它靠的是两次鉴定意见与研发记录。能指出独创性表达在哪,才谈得上享有著作权;指不出来,第一层就过不去。
Three Layers
二审的说理分三层,一层比一层退,退到最后落在举证责任上。
第一层是案件性质。本案是针对涉案软件的著作权侵权纠纷,不是合同纠纷。GPLv2 是一份许可合同,但 OpenWRT 系统软件的权利人不是本案当事人。基于合同相对性原则,本案不宜审理三件事:涉案软件是否全部或部分受 GPLv2 约束、网某公司是否违反协议、网某公司是否因此承担违约或侵权责任。
这一层的关键在于:被告用来抗辩的那份协议,它的相对方根本不在法庭上。要判断一份合同怎么约束案外的第三人,得先让合同双方都到场。
第二层是事实查明。就算要审「涉案软件受不受 GPLv2 约束」,也要先查清一串事实:底层系统软件受不受约束、上层功能软件是否构成「独立且分离的程序」、两者之间采用什么隔离技术、通信方式和通信内容怎么界定、软件领域对 GPLv2 传导性的通常理解与行业惯例是什么。
这些事实,在 OpenWRT 权利人不是当事人的情况下,同样难以查明。二审的用词是「亦难以查明与 GPLv2 协议有关的前述系列事实」。
第三层落到举证责任:亿某公司与启某公司并无证据证明网某公司通过 GPLv2 协议已放弃其就涉案软件依据我国著作权法享有的著作权。
这一句是整段说理的落点。主张抗辩的一方,要证明权利人放弃过权利;而不是由权利人自证「我没有放弃」。举证责任分配反了,抗辩就撑不住。
二审还留了一句退路:退一步讲,即便假定网某公司因违反 GPLv2 协议导致涉案软件存在权利瑕疵,该假定瑕疵亦不影响网某公司在本案中针对被诉行为寻求侵权救济。
三层合起来,就是判决里那句被反复引用的话:软件开发者自身是否违反 GPLv2 协议和是否享有软件著作权,是相对独立的两个法律问题,二者不宜混为一谈,以免不合理地剥夺或限制软件开发者基于其独创性贡献依法享有的著作权。
「相对独立」四个字要读准。它不是「无关」。开发者违反协议,后果是真的,只是这个后果落在另一条线上——对 OpenWRT 权利人承担的责任,而不是对自己新写代码的著作权消灭。
判决紧接着写了一句限定:本案认定被诉行为构成侵权并支持网某公司部分诉请,并不表明网某公司将来在潜在的违约和/或侵权之诉中可免予承担其依法应当承担的违约和/或侵权责任。这句不是客套,是给权利人留的风险提示。
「放弃」这个词可以再看一眼。判决要求被告证明的是权利人「已放弃」著作权,但 GPLv2 的法律性质不是权利抛弃,是附条件的授权许可:权利人保留著作权,只是向不特定第三人给出一个带条件的许可。
两种构造的证明难度差得很远。证明「放弃」,要有明确的抛弃权利的意思表示;证明「被诉行为落入许可范围」,只要证明许可的条件已经满足。判决选的是前一种,等于把被告的举证对象换成了一个更难成立的事实。
这不算判错。二审要处理的是一个侵权之诉,GPL 的许可范围牵涉 OpenWRT 权利人,不在本案审理范围内;法院只能从「有没有放弃」这个不依赖协议解释的切口切入。但从规则效果看,这个切口确实把抗辩的门槛抬高了。
同一法庭在另一件案子里给的是另一种表述。(2021)最高法知民终2063号认定:GPL3.0 协议的内容具有合同性质,开源软件的发布可视为要约,用户使用即为承诺,使用开源软件时合同成立。该案适用的是 GPL3.0,与本案版本不同,但「协议是合同」这个定性不因版本而变。要约与承诺的构造,对应的正是许可。
两件案子放在一起,能看出一条分岔:把 GPL 当合同,被告要证明的是「我按条件用了」;把 GPL 当放弃,被告要证明的是「权利人不要这个权利了」。前者是合同履行,后者是权利处分。本案走的是后一条,2063 号走的是前一条。
再往下问一层:为什么违反协议不会导致著作权消灭?著作权来自创作,不来自许可协议。协议管的是「你能不能使用别人写的那部分代码」;你自己新写的那部分归谁,取决于你有没有付出独创性劳动。两件事的权源不同,所以违反协议的后果,落不到著作权归属上。
GPLv2 第 4 条写得更直接:任何试图以其他方式复制、修改、再许可或分发本程序的行为均属无效,并将自动终止你依本协议享有的权利。这句话针对的是「依协议取得的权利」,也就是使用 OpenWRT 代码的许可。许可一旦终止,继续使用那些代码就失去授权。
它终止不了另一件事:开发者对自己新写代码的著作权。后者不是协议给的,是著作权法给的。所以违反 GPL 的后果,是「你对开源部分的使用失去授权」,而不是「你对自己写的部分失去著作权」。本案判决没有引第 4 条,但它三层说理的结构,与这个区分是同一个方向。
The Unanswered
原告方主张过一件事:他们在底层系统软件与上层功能软件之间,采用套接字(socket)与命令行(command line)等技术手段建立了隔离层,两者之间的通信内容不涉及内部数据结构。按这个主张,上层功能软件构成 GPLv2 协议项下「独立且分离的」程序,不受协议约束。
这个主张如果被正面采纳,等于给二次开发者指出一条可走的技术路径:把自研部分隔离出去,就不必开源。它直接决定二次开发者敢不敢把自研部分留在手里,是本案对产业界最实际的一个问题。
二审没有采纳,也没有否定。它说的是「难以查明」。
一审查明的事实里还有一句更容易被忽略:本案中没有证据证明苏州启某公司进一步采取了任何旨在防止 GPLv2 协议约束的隔离技术措施。
两句话放在一起看,逻辑很清楚。被告自己的软件没有做隔离,所以被告主张「我的上层也是独立程序」,连事实基础都不牢;而原告的隔离层是否有效,涉及隔离技术、通信方式、通信内容与行业惯例,在 OpenWRT 权利人不在场时查不清。
GPLv2 第 2 条末段的表述是:如果作品中可识别的部分并非来源于本程序,且可以被合理地认为本身就是独立且分离的作品,那么本协议不适用于这些部分——但有一个限定,是「当你把它们作为独立作品分发时」。「独立且分离」这四个字就出于此。
紧接着还有一句但书,讲的是相反的情形:如果把这些部分作为「基于本程序的作品」整体的一部分来分发,整体的分发就必须遵循本协议;本协议对其他被许可人的授权延及整个作品,不论各部分是谁写的。传染性的规范依据在这一句,不在除外条款里。
两句话连起来读,第 2 条给的判断线其实有两条:一是这些部分本身是不是独立且分离的作品,二是你以什么方式分发。前者是技术问题,后者是行为问题。
两条线都没有可操作的标准。进程隔离、动态链接、套接字通信、容器部署,技术上各自不同,法律上各对应什么结论,国内还没有形成稳定的判例链;「作为独立作品分发」与「作为整体一部分分发」的界线,同样没有判例。本案正面碰到了这个问题,却停在了「难以查明」。
所以本案不能读成「隔离层有效」。它只说明:在这一案里,被告连做没做隔离都证明不了,抗辩在举证上就倒了。
也不能反着读成「GPL 一定传染到上层」。二审没有作出这个认定,判决里找不到任何一句评价传导范围的实体结论。
要查清这件事,事实层面至少需要两样东西,本案一样都没有:能说明通信内容与调用关系的技术鉴定,以及软件领域对传导范围的通行做法。缺了这两样,「独立且分离」只能停在主张层面。
容易被忽略的是后一样。行业惯例不是凭感觉说的,得有可查的实践:同类项目怎么做接口、怎么部署、怎么声明依赖。没有这些,「独立且分离」只是律师的论证,不是可验证的技术事实。
但事实齐了,也不等于法院就会答。二审把「难以查明」放在一个前提之下——「在 OpenWRT 系统软件权利人并非本案当事人情形下」。缺的不只是证据,是当事人:协议的一方不在场,约束范围就不宜在本案审。真正能逼出实体判断的,是权利人或其权利继受人到场,或者协议双方直接打一场违约之诉;多一份鉴定改变不了这个结构。
真要判断自己的软件处在什么位置,只能回到三件事:用了哪一段代码、这一段与开源部分是什么关系、有没有可核的技术证据。这三件事,本案一件都没有给出通用答案。
The Damages
诉请 300 万元,判了 50 万元。差额不是随手砍的。二审在「一审确定的民事责任是否适当」项下专门写了一段:本案在计算侵权损失过程中,应着重考虑二次开发部分在整体软件作品中所占的比例,合理剥离 OpenWRT 系统软件的已开源部分,只计算其中有独创性表达的开发部分;并认定一审的判额对此已有考量、符合「前述比例原则」。
这段话的位置值得注意。它是对一审判额的审查标准,不是一审自己用的计算方法。一审列的六项考量因素里,与开源有关的只有一项——涉案软件基于 OpenWRT 开发,存在一定程度上的相似性。比例原则是二审补上去的。
这个算法的含义很直接:赔偿基数是权利人自己写的那一部分,不是整个软件的市场价值。开源部分不计入。
对权利人是提醒。如果软件大部分是改开源、自研部分只占一小块,赔偿的上限就低;自研占比高,基数才上得去。
对被告是一条可以主张的防线。被诉时可以要求把开源部分从比对与计算范围里剥离,不让开源代码算进侵权比例。
但这不是一条法定规则。比例原则写在二审判决的说理里,不在著作权法的条文里。换一个法院、换一份证据,算出来的数会变。本案能剥离得开,是因为有鉴定意见和研发记录支撑二次开发的范围——没有这两样,法院想剥也剥不动。
反过来说,如果连「哪些是自研」都说不清,比例原则帮不上忙。法院不会替权利人分割代码:鉴定范围由申请与证据决定。这也是为什么本案的研发记录与两次鉴定意见,在赔偿环节比在侵权认定环节更值钱。
要读懂 50 万元这个数,还得看当时适用的赔偿规则。本案适用 2010 年修正的《著作权法》,该法第四十九条规定了顺序:先按权利人的实际损失;实际损失难以计算的,可以按侵权人的违法所得;两者都不能确定的,由法院根据侵权行为的情节,在五十万元以下酌定。
走到哪一档,判决写得很清楚:它先认定实际损失与违法所得均不能确定,于是按侵权行为的情节在五十万元以下酌定。在那个版本的法律下,法定赔偿的上限正是五十万元,本案判的总额正好等于这条上限。
50 万元的内部也拆过:经济赔偿 42.5 万元,合理开支 7.5 万元(律师费 7 万元、公证费 5000 元)。诉请 300 万元想要获支持,必须把实际损失或者违法所得算出来;这两项算不出来,天花板就只有五十万。
2020 年修正的《著作权法》(现行文本第五十四条)已把这个上限提高到五百万元,并增设惩罚性赔偿。同一批事实放到今天,赔偿空间与本案不可同日而语——这也是读旧判决时最容易忽略的时间差。
还有一层容易漏掉:50 万元里有 7.5 万元是合理开支,能拿回多少取决于票据;真正属于侵权赔偿的是 42.5 万元。想让赔偿上得去,研发投入、代码行数、功能模块、市场替代关系这些证据,得提前备好,而不是等到开庭再补。
The Boundary
一、它不解决「你到底该不该开源」。OpenWRT 的项目管理者与贡献者不是本案当事人,判决也写明本案胜诉不表明将来免责。真正的开源义务争议,得在另一场以协议相对方为当事人的诉讼里解决。
二、它不解决「隔离层有没有用」。前述一节已经说明,本案对「独立且分离的程序」没有作实体认定。拿这个判决去论证隔离层有效,是把它没说的话当成说了。
三、它只针对「仅以未开源为由」的抗辩。裁判要旨的表述是「被诉侵权人仅以涉案软件开发者并未依据开源协议开源为由,抗辩其不侵害涉案软件著作权的,人民法院一般不予支持」。如果被告能证明权利人明确承诺放弃著作权,或者相关代码已进入公有领域,结论另当别论。
四、它不能被反过来用。你抄了别人受 GPL 约束的代码,不能拿「原作者自己也没开源」来免责。这个抗辩的方向不能倒过来套。
五、50 万元不是这类案子的行情。它是比例剥离之后的裁量结果。整体复制、自研占比高、市场替代关系明显,数额会是另一回事;反过来,自研部分很小,判赔也会低。
六、它没有解决「谁能来起诉」。本案原告是二次开发者,就自己写的那部分主张权利。另一种情形是开源项目整体被抄,原告是项目的管理者——(2021)最高法知民终2063号处理的是这一种,规则不同,见前文。两件案子只差一个变量:谁站在原告席上。把本案的结论搬到项目管理者身上,或者反过来,都会错位。
七、它没有解决协议本身的解释问题。本案适用中国著作权法,GPLv2 是自由软件基金会发布的英文文本。条款含义、中文译文的准确性、传导范围的边界,判决都没有展开——它用的是程序法与举证规则绕过去的。
The Rules
第一,二次开发的独创部分,著作权归开发者。前提是说得出独创性表达在哪里。本案靠的是鉴定意见逐段比对源代码,不是靠那张著作权登记证书——登记只解决初步证明,登记簿上写的是软件名称与版本,不写哪几行是你写的。
第二,GPL 抗辩的举证责任在被告。他要证明权利人已通过协议放弃著作权,证明不了,抗辩不成立。这条对被告方的律师是硬约束:只提交协议文本不够,还得证明权利人的放弃行为。
第三,开源义务不因这场胜诉而消失。判决自己写的那句「不表明将来免责」,是留给权利人的风险提示。赢了侵权官司,不等于过了开源合规这一关。
第四,赔偿按独创部分占比算,研发留痕就是赔偿基数。没有研发记录,剥离不出「你的部分」,基数就无从谈起。
第五,共同侵权看两家关联得有多紧,不看合同怎么签。一审列了四个维度:启某的筹建、人员招募、资金使用、项目决策。只在技术开发合同上签了字,却在这四件事上各走各的,谈不上共同侵权;反过来,合同签得再干净,人、钱、事都从一家走,照样认定关联。前员工离职后带走技术类似的安排,先看这四项。
The Takeaways
一、建一张开源组件清单。组件名、版本、许可证、引入方式(直接调用/修改源码/静态链接)、是否随产品分发。没有这张表,谈传染范围是空谈。
二、把自研与改写的边界落到文件级。每个源文件标注来源:自研、改自某项目、第三方库。只在文档里写一句「部分代码来自开源」,在鉴定和赔偿计算时没有用。
三、如果做了隔离,把技术方案固定成证据。接口定义、通信协议、编译与部署方式、独立升级记录。本案原告主张了隔离层,被告却证明不了自己做过;你的隔离层要能举证,否则等于没做。
四、留研发过程记录。需求文档、提交日志、代码评审、测试报告、外包合同。赔偿基数按独创部分算,这些记录就是分割线。
五、发现被抄,先固定指纹再动作。源代码里的特殊标记、注释、常量表、日志格式,这类东西比功能相似更能证明复制。固定之后再委托鉴定,再决定发函还是起诉。先发函,往往等于通知对方清理痕迹。
这五件事里,前三件决定你能不能主张权利,后两件决定你能拿回多少。顺序别弄反:权利基础没站稳,赔偿谈得再细也没用。
补一句时间成本。这个案子从立案到终审五年多,二审本身用了两年多。决定起诉之前,先算一下产品还能卖多久,以及对方在这几年里会走到哪一步。
The Sources
本案案号、当事人匿名口径、判项与裁判理由,出自最高人民法院知识产权法庭公布的(2021)最高法知民终51号裁判意见,以及该庭「五年百案」第 45 案的案情介绍;一审案号、判决日期与四项判项,出自同一裁判意见的「基本案情」部分。该案另见于《最高人民法院知识产权法庭裁判要旨摘要(2023)》第 95 条、苏州中院 2023 年度十大典型案例。
研发投入约 2589 万元、非开源源代码相同率 90.2%、权利人曾向公安机关报案等情节,出自《人民法院报》2024 年 2 月 18 日报道。这些数字判决正文未载明,本文按报道口径引用,不并入裁判认定的事实。第 1 节关于两公司关系的叙述,出自判决所引的讯问笔录与一审认定,不属报道口径。
华东政法大学王迁教授对该案的评论(开源软件与基于其独立开发的新软件,类似小说与电影的关系,属原作品与演绎作品)出自同一篇报道,属学理观点,不是判决理由,本文未将其作为裁判依据使用。
本文未做的两件事,一并说明。一是不推测定量:一审判决书未单独公开,本文所引一审说理与判项,出自二审判决书对一审的转述;鉴定的具体比对方法,二审判决没有展开,本文不作补充。二是不把学理当判理:王迁教授的观点在本文中只用于解释结构,不作为裁判理由引用。
以上条文已于 2026-11-06 比对全国人大网、最高人民法院公布的现行文本。本案援引《著作权法》时适用的是 2010 年修正文本,引用时仍应注明版本。条号有一处对不上:赔偿条款在 2010 年文本中是第四十九条,2020 年修正后移至第五十四条(法定赔偿上限由五十万元提高到五百万元,并增设惩罚性赔偿);本文按各自版本标注,引用时不可互换。GPLv2 官方有效文本为英文,本文所述条款含义以该英文文本为准,未采用网络流传的中文译本。