全文
甲公司乙公司著作权权属、侵权纠纷上诉案
【技术调查事实】
一审:广州知识产权法院(2015)粤知法著民初字第18号
二审:广东省高级人民法院(2018)粤民终243号
原告(反诉被告):甲公司
被告(反诉原告):乙公司
技术争议焦点
甲公司的“乐网运营商全业务全流程互联网化受理软件V1.0”丙公司的“管控系统”软件,双方当事人争议的焦点技术问题主要有七个:
1. SVN文件的建档日期是否能被修改?乙公司Revision为330(2013年11月22日)版本的代码是否被修改过建档日期?
2.双方当事人bu6.js和bu7.js两个文件代码是否相同?甲公司认为bu6.js和bu7.丁公司代码相同,但是这两个文件的代码来源于助销一期的无用代码,戊公司称这两个文件没有身份校验功能,9月22日勘验时又称bu6.js实现收集订单的基本信息,其中一个重要功能是身份证号码校验;乙公司认为这两个文件具有实现身份证号码校验功能。
3.乙公司关于涉案软件开发时间的证据是否客观?乙公司己公司于2013年7月26日提出需求,2013年10月21日便完成开发并将软件在全省范围内试运行,历时仅两个多月,甲公司认为如此短的开发周期不合理。
4.部署系统技术人员是否有源代码?乙公司认为其于2013年11月3日已在两个服务器上分别部署了集中受理系统和助销系统,因此其庚公司开发完成时间2014年2月28日。
5.甲公司代码中出现的涉及联通字眼能否证明该源代码归联通所有?乙公司辛公司代码中出现了“liuxj”“com.hg.od”“联通集中受理平台”等文字可以证实集中受理系统由广东联通所有。甲公司认为其源代码出现这些文字是因为源代码包括了集中受理系统和助销系统,而助销系统也是为广东联通开发,所以才会出现联通相关字眼。
6.乙公司Revision为330(2013年11月22日)壬公司提交给法院的源代码的相似程度。
7.关于源代码中存在反编译痕迹的说明。癸公司“集中受理系统”部分源代码中存在反编译特征,甲公司子公司在测试软件过程中多人同时开发同一模块或人员离职导致的代码交接异常,在代码版本控制中出现异常导致部分代码混乱,为获取最新代码而需要从测试环境中通过反向工程的方式获取相应代码继续开发所导致的,丑公司软件所产生的,寅公司软件源代码存在反编译情况,且存在反编译情况的代码数量是极少的,根本无法确认反编译或反向卯公司的目标程序。
技术比对和分析
1.软件开发过程中会多次提交更新修改原有代码,而且一个项目可能会同时有多个人参与开发,为了方便管理和记录整个软件项目开发过程,业界通常的做法是使用SVN软件来实现软件开发过程中不同版本的控制和管理,在多个人员、设备之间,同步不同版本的文档和源代码。
SVN服务器内文件的建档日期根据开发者提交代码的日期自动更改,但是该日期是可以被修改的,辰公司提交了三种可以修改SVN服务器文件建档日期的方法。乙公司认为一旦修改了时间,文件的修改时间也会发生改变。技术调查官认为,乙公司巳公司提交的第一种修改方法,午公司所说的问题,但是也存在其他修改后看不出痕迹的方法。
对于第二个问题,未公司2013年11月22日版本的代码是否被修改过建档日期的结论。申公司SVN服务器上的源代码从2013年8月开始,多年来一直有不断提交和修改的记录,该记录具有合理的顺延性,且提交次数多达几千次,酉公司只有2013年11月22日一个版本的代码,那么该版本代码被修改过的可能性较高,戌公司提交的证据显示从2013年8月开始,该软件代码一直保持着多次更新,更新时间具有延续性,亥公司Revision为330(2013年11月22日)版本代码的真实性,该日期被修改过的可能性较低。
2.甲23公司源代码文件,可以确认这两个文件仅实现身份证号码校验功能,乙公司Revision为330(2013年11月22日)的版本源代码与法院保全的版本源代码中的bu6.js和bu7.js文件完全相同,甲公司提交给法院的纸质版源代码中并没有明显标识文件名为bu6.js和bu7.js的两个文件,乙24公司丙25公司bu6.js和bu7.js相同。经分析,甲公司丁26公司bu7.js文件源代码完全不同,甲公司所指出的集中戊27公司bu6.js完全不同,甲公司所指出的己28公司bu6.js有部分相同,乙24公司的type为2表示身份证号码,乙公司的type为1表示身份证号码,且该部分代码实现的是身份证号码校验功能,是通用代码,代码量仅有几十行,很多系统中都有该功能。
另外,乙公司确认“bu6.js”“bu7.js”未在“管控系统”软件中使用,但是认为助销系统也是其证人团队开发的,是开发技术人员把自己实现的功能作为技术沉淀。技术调查官认为,实际开发中存在无用代码有可能是开发人员将其作为技术沉淀继续保留,当然也有可能是开发人员忘记删除。
3.分析涉案软件330版本实现的整体系统功能以及代码总行数(共303个文件,合计63306行),从第一次建档时间2013年8月8日到330版本时间2013年11月22日历经3个多月,按照普通开发人员每月可以完成5000行代码的工作量,假如投入足够多的人力成本和时间资源,三个多月时间是有可能完成涉案软件的开发任务的,且从当庭勘验330版本的过程中可以看到参与项目开发的提交代码开发人员至少涉及四个人以上。综上,由于2013年10月21日版本源代码行数肯定比2013年11月22日330版本的代码行数少,庚29公司从2013年7月26日到2013年10月21日历时两个多月便完成软件开发投入试运行是有可能的。
4.一般只有系统开发基本完成后才会将其部署到服务器上进行试运行,乙公司将集中受理系统部署到服务器上可以说明其已经完成基本功能的开发,辛30公司在2013年11月3日之前壬31公司提交源代码的集中受理系统功能相一致,癸32公司在2013年11月3日之前是否已经有相应的源代码。另外部署到服务器上的是软件的目标程序,部署人员只要有目标程序就能部署,并不一定有源代码。
5.甲公司源代码中出现的相关字眼并不子33公司所有。
6.经过2017年9月21日和22日两天的当庭勘验,丑34公司确认选取的是Revision为330的整个项目源代码作为比对对象,330版本代码的日期为2013年11月22日,该项目有多个源代码文件,若某个源代码文件不存在2013年11月22日版本文件,则下载330版本源代码时系统会自动下载2013年11月22日前一次版本的文件,若某个源代码文件不存在2013年11月22及以前日期版本文件,则下载330版本源代码时系统默认不会下载该文件,即330版本的整个项目所有源代码文件的创建日期只会早于或等于2013年11月22日。由于整个软件源代码有500页,经过双方确认,比对的对象确认为前后各5页及中间随机选取的20页,技术调查官现场随机选取了中间的20页核心代码(即全部为java文件,不包括前台等脚本文件代码,且非公用代码)作为比对对象。经比对,30页代码总行数为2152行,其中相同的代码行数为1735行,相似程序达到80.62%。
7.甲公司辩称的情形在实践中并不常见,公司一般掌握着所有开发人员提交的源代码,寅35公司通常也并不会因此而丢失相应代码。
技术调查结论
综合对技术争议焦点的分析,特别是从软件开发日志记录及源代码相似程度看,技术调查官的意见为涉案“管控系统”卯36公司委托案外人开发。
一审合议庭采纳了技术调查官的意见,辰37公司巳38公司的“管控系统”软件复制权和署名权,午39公司12万元等。
一审判决后,甲公司不服,向广东省高级人民法院提起上诉。二审经审理后判决:驳回上诉,维持原判。