软件源代码与目标代码应区别保护

正如美国微软公司的新任首席执行官塞亚·纳德拉所言:“当今世界是由软件所驱动的”,软件的重要性毋庸赘言,我国将软件纳入著作权法保护已有23年,但至今软件的法律定义与法律保护仍很模糊。我国现行《计算机软件保护条例》将同一计算机程序的源程序与目标程序视为同一作品,然而源程序与目标程序的本质属性并不相同,条例中的谬误会对软件的保护产生不利影响。因此,我国有必要重新审视软件的法律本质从而完善软件的法律保护制度,或对软件另行制定特别法来保护与规制。

本文经阐述软件著作权保护的冲突根源,指出现行《计算机软件保护条例》中的谬误,并在不违反TRIPS与相关国际公约的前提下,提出若干修法建议,以期对法律的进一步完善有所助益。

一、两种代码本质不同

软件是相对于硬件而言的,硬件主要是指计算机,软件是由编程员运用某种计算机语言所编写的程序(或称为源代码),由一连串指令与数据构成。指令与数据经由计算机的输入输出模块被储存在内存之中,中央处理器依次执行内存中的指令,并将执行结果返回到内存或输入输出模块,这就是计算机的基本运行模式。

依据不同的应用,编程员会选择不同的计算机语言进行编程,从早期的机器语言(或称“组合语言”)到现在流行的BASIC语言、C语言、JAVA语言、HTML语言等等。其中,有些语言(如C语言)的程序需要经过编译器的处理以产生可供计算机执行的目标代码,经过打包或连结成为固化的“可执行代码”后,载入内存由中央处理器直接执行;有些语言则不需编译的过程而由一个中间软件代为执行,如BASIC语言的源代码由解析器代为执行,HTML语言的源代码由浏览器代为执行;JAVA语言的源代码经编译后产生的目标代码不由中央处理器直接执行而是由JAVA虚拟机代为执行。不可忽略的是,早期的编程员经常用机器语言直接编程,并将源代码(同时也是目标代码)“烧入”计算机内存中由中央处理器直接执行

虽然由编程员撰写的源代码转换到可执行代码的路径不一而足,被执行的方式也各有不同,但无论是用原始的机器语言(低阶语言,具有目标代码的外观),或是非机器语言(高阶语言,如BASIC、C、JAVA、HTML等语言)撰写的源代码,都具有文字外观,能表达编程员的思想,为编程员智力活动下的产物,属于文字作品从而享受著作权法保护;而由机器产生的目标代码,其文字外观仅由“0”与“1”2个符号所组成,一般人无从由其外观感知其内容或思想,系由机器自动产生而非人类智力活动下的产物,故不符合著作权法下文字作品的定义,不应受著作权法保护

计算机运行的目的与价值在于解决算术或逻辑问题,功能性是其主要目的与价值。软件作为计算机的大脑,负责指挥硬件的运行,其目的与价值直接决定着计算机的目的与价值。事实上,软件的源程序(或源代码)是编程员的代言人,通过源程序,编程员指挥着计算机的每一个动作以解决某个算术或逻辑问题。但不可忽略的是,源程序通过其文字外观同时也扮演着编程员之间的沟通媒介,即具有沟通性或欣赏性。源程序就有如微积方程一样,虽然大多数人无法认识微积方程,但微积方程是数学家间的沟通媒介,源程序与微积方程都属于人类智力活动的产物,具有文字外观,虽然是不为一般人所理解的文字或符号,但却不妨碍其成为著作权法下的文字作品,受著作权法保护。

目标代码(本文仅指由机器产生的目标代码,因编程员所撰写的目标代码兼具功能性与沟通性)则不然,其唯一目的在于被计算机执行,编程员之间不会以此作为沟通媒介。简言之,功能性是其唯一属性,沟通性自始至终均不存在,自不能成为著作权法下的作品而受著作权法保护。虽然编程员能通过反向工程破解目标代码而一窥其内容,但毕竟那是衍生或演绎的产物,而非“作品”的本身属性。

需要注意的是,就法律意义而言,计算机指的是基于冯纽曼结构的电子计算机,至于其他不具文字外观的“软件”用于其他种类的计算机(例如生物计算机)则不在著作权法保护之内。

二、国外法规可供借鉴

在了解了计算机程序的本质属性后,来看看各国法律或国际公约对计算机程序是如何定义的:

世界知识产权组织(WIPO)《保护计算机软件的示范条款》(1978年)将计算机软件定义为送入计算机可读介质后,能够使计算机具有信息处理能力,可以完成某一特定功能、执行某一特定任务或达到某一特定结果的一组指令。

美国版权法(1980年)第一百零一条规定计算机程序是指一序列语句或指令,直接或间接被用于计算机以产生一定结果。

欧共体《计算机程序法律保护指令》(1991年)规定计算机程序包含各种形式的程序,包括那些嵌入于硬件之中的,也包括可以在以后阶段发展成为计算机程序的准备性的设计资料。

TRIPS(1994年)第十条规定计算机程序,无论源代码或者目标代码,都作为伯尔尼公约下的文字作品受保护。

世界知识产权组织版权条约(WCT,1996年)第四条规定计算机程序作为伯尔尼公约第二条中的文字作品受保护,无论其形式与表达方式。

我国现行《计算机软件保护条例》(2001年)第二条规定计算机软件是指计算机程序及其有关文档。第三条规定计算机程序是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。

就以上对计算机程序的定义,我们不难发现,除我国和欧盟外其他国家与组织采取的是功能性定义,即仅从功能的角度对计算机程序进行定义,仅规定了最低的形式标准(即指令),不论及程序的构成形式,不就源代码或目标代码刻意作出区分。以现在的眼光审视过去的定义,美国对软件的定义是最开放、最宽松也是最合适的,因为科技的快速进步往往是出人意料的,与科技相关法律法规的制定应着重于功能与效果而非手段或方法。

我国则采取了与欧盟一致的定义,甚至画蛇添足的将源代码与目标代码作为同一作品,此乃大谬。我国现行《计算机软件保护条例》实际上源于欧共体的《计算机程序法律保护指令》,其精神与内容基本均自该指令移植而来,但该指令并未将源代码与目标代码作为同一作品,所以,就成文法而言,基本上自成体系,就法理而言,虽不完善,但尚能自圆其说。而“同一作品”对法理的杀伤力太大,其中最显著与最重要的就是作品的发表。一般而言,作品发表是行使作品财产权的前提,并属于权利一次用尽,任何作品在公开发表之后商业秘密保护即不再适用,也无所谓反向工程一说。

如果目标代码与源代码是同一作品,那么目标代码的公开发表就意味着源代码的公开发表,那些以商业秘密作为保护手段的源代码就丧失了秘密性,从而丧失了商业秘密的受保护性。如此一来,有些未公开源代码的软件专利申请,因公开发表目标代码而丧失了新颖性,从而丧失了专利授权的可能性,更有甚者,已被错误授权的软件专利应被及时矫正,其已授予的专利权应属无效。所以,源代码固然是作品,应受著作权法保护,而目标代码经法律拟制可视为作品而受保护,但两者绝不可作为同一作品。

三、特殊作品特殊对待

在不违反TRIPS与其他国际公约的前提下,笔者对著作权修法提出以下3点建议。首先,借鉴美国的做法,就软件的定义采取功能性、开放性的叙述,不必刻意区分源代码与目标代码。其次,取消源代码与目标代码是同一作品的规定,但保留计算机程序属于受伯尔尼公约保护的文字作品的规定。再次,万变不离其宗,著作权法的立法宗旨是鼓励作者公开作品,借此促进人类的思想交流,进而推动社会的和谐、进步与发展。所以,计算机程序固然以其功能性为主,但不妨碍源代码的作品性,应将目标代码与源代码区别对待,在保护目标代码的同时,以实际的优遇条款鼓励源代码的公开,例如,专利优先权的保留(类似于专利法中的国际学术会议或展览可保留其优先权日6个月)、专利侵权的暂时性豁免(例如公开源代码的软件如涉及专利侵权,在接到举报后如自行修改或删除侵权部分的代码则不需承担侵权责任)、保护期限的延长等等;反之,对不公开源代码的软件,应就其著作权予以相应的限制,例如,保护期限缩短、减少或取消反向工程等等。

计算机软件是著作权法中的另类作品,其本质属性与其他作品差别甚巨,尤其是目标代码,即便未来修法后与源代码不再是同一作品,但仍然无法改变其不具有沟通性或欣赏性的本质属性,应与其他作品区别对待。若以行政法规的方式对其实施保护,难免与其上位法(著作权法)的立法宗旨相冲突,而产生下位法违反上位法的的尴尬情况。所以,笔者认为,针对计算机软件另行制定特别法来保护与规制乃正本清源之道。