一项软件的权利人总是希望在一定的条件下把自己的软件提供给尽可能多的用户使用。作为软件流通的常用方式,往往首先把软件复制在某种物质载体(如磁盘、磁带、光盘等)上,形成该软件的复制件,并通过软件复制件的“发行”实现软件的流通。所谓“发行(distribute)”,按照1996年通过的《世界知识产权组织版权条约》的规定,是指“通过销售或其他所有权转让形式向公众提供其作品原件和复制件”的行为。该公约以及各国版权法(著作权法)都已规定,发行作品是作品权利人的专有权利之一。显然,发行这种行为离不开作品的物质载体的传递。现在,由于计算机互联网的发展和广泛使用,软件的流通可以不依赖物质载体的传递而通过互联网传播。《世界知识产权组织版权条约》已规定,将作品公开传播也是作品权利人的专有权利之一。所谓将作品“公开传播(Communication to the Public)”是指“以有线或无线方式向公众传播,包括将其作品向公众提供,使公众中的成员在其选定的地点和时间可获得这些作品”,这个定义显然包括通过互联网传播。不难看到,无论是通过发行还是通过公开传播,在流通过程中,为了让接受方获得一项作品,对作品的复制活动往往是很难避免的。各国版权法(著作权法)也都规定,对作品进行复制属于作品的权利人的专有权利。总之把软件提供给用户,就是行使法律授予软件权利人的对于软件的复制和发行传播等专有权利。法律也允许权利人将自己的权利许可给其他人行使;但是,除非权利人明确表示自愿放弃这种权利或者这种权利的法定有效期届满,其他任何人未经权利人许可将其软件进行这些活动,原则上都属于侵权行为。
计算机软件的基本特点在于很容易被复制和修改,这导致在流通过程中也很容易被侵权,因此权利人总是希望有一种机制能够在流通过程中保护自己软件的各项专有权利。同时,软件权利人向用户供应其软件总是为了实现某种目标,这些目标主要还是为了商业目的,但也不乏软件爱好者之间的信息交换以及向公众的奉献。根据软件权利人向社会发布软件时对权利控制的期望会产生出不同性质的软件。
就软件的流通和发行方式来说,计算机软件可分为商业软件、自由软件、试用软件和公有软件。不同组织根据流通机制对软件作出的分类大体上相近但也存在一些差异。美国软件出版商协会(SPA)按照流通机制将计算机软件分为“商业软件”、“自由软件”、“试用软件”、“公有软件”四类。而美国自由软件基金会(FSF)将计算机软件分为“专有软件”、“Copylefted软件”、“非Copylefted自由软件”、“试用软件”、“公有软件”以及其他一些类型。 本书根据软件的流通方式和法律特点,将软件分为商业软件、开源软件和公有软件三类。而实际上商业软件更准确的称呼应当是专有软件,不过由于全球范围的通用已使它成为传统知识产权保护下的软件的专用名词,本书亦不再就名词概念进行讨论而沿袭现有的“商业软件”一说。
“商业软件”(Business Software)没有严格的定义,一般是从其功能、收费、版权发行方式等来判断,在开源软件诞生之前,软件的发行和授权许可大致相同,并且都体现出商品化特性,所以,以往的软件大都属于商业软件。商业软件的功能、性能通常已经过严格测试因而相当可靠,其使用相当便利。供应商不仅应该向用户提供程序(通常是目标码文本)和使用说明(通常是手册的形式),而且应该向用户提供包括版本更新在内的技术服务。同时都严格声明自己的版权,一般表示为all right reserved。美国软件出版商协会(SPA)分类中所称的商业软件对应着自由软件基金会(FSF)分类中的“专有软件(Proprietary Software)”,都是正处在版权有效期内的软件,因而享有版权保护。
商业软件的权利人最重要的著作权是权利人享有软件及其复制品的发行权。现在国际上通行的商业软件发行方式是向用户提供使用许可。按照这种方式,用户在支付了一定费用之后,得到的仍然不是这一份软件复制品的全部权利,更不是该软件的全部权利,而是一种附条件、有限制的权利:即在遵守使用许可协议的条件下,行使由该软件的使用许可协议所规定的若干项权利,如使用、临时复制等。同时,这种使用许可协议将约定供应商应该提供的技术服务的具体内容。用户在购买软件以及使用软件时,都必须仔细阅读该软件的使用许可协议,在使用过程中遵守使用许可协议,并按照使用许可协议的规定享受供应商所提供的技术服务。商业软件的许可一般有以下4种规定:(1)软件是受版权保护的;(2)出于存档的必要可以对软件进行复制,但除非原版软件不能运行或已经损坏,否则不得使用该备份软件;(3)不得对软件进行修改;(4)不允许在原软件的基础上开发新软件(衍生软件),除非版权持有人允许。
在商业软件领域,还有一种试用软件(Shareware,国内也译成“共享软件”)。它比普通的商业软件要便宜得多。所谓“试用软件”,是指其复制品也可以通过网络在线服务、电子公告板(BBS)或者直接从一个用户的手里传给另一个用户等途径自由地传播,软件的使用说明也以文本文件的形式同程序一起提供。这种试用软件通常附有一个用户注意事项,其内容是说明权利人保留对该软件的权利,因此试用软件受著作权保护;该文本文件通常表述为:“本软件为试用软件,用户通过一个阶段试用之后,如果希望继续使用,就应该向供应者办理使用注册手续。”用户注意事项中通常包含一份注册表格,并说明如何以及向何处办理注册手续,在办理注册手续时可能会要求用户交纳一定费用,实际上就是使用许可费,需要交付的使用许可费的款额通常是很低的。不少试用软件的声明中往往表示,供应者收到汇款后将提供一份印刷装订的使用说明,以及该软件的最新版本和其他技术服务。有些声明中还可能规定一个明确的试用期限。只要用户按照规定办理使用注册手续就可以在计算机上使用该软件。
试用软件概念是美国微软公司的R.Wallance在20世纪80年代提出来的;软件产业界采用“试用”这种发行方式的目的在于通过允许潜在用户复制一项软件以鼓励其试用,从而帮助用户决定是否购买该软件的使用许可。用户通过试用对该软件有了一定了解后,如果希望以后使用该软件,就必须通知该软件的开发者并按规定付款。试用软件实质上属于商业软件,通常不提供源程序。 产业界采用这种传播方式主要作为一种销售手段,可以节省广告宣传费用,但并没有改变这种软件的著作权性质。不少试用软件在根据用户使用意见多次改进后,新的版本成了商业软件。这种发行方式受到个体和小型开发商的欢迎,现在已经出现了成百上千种试用软件,大多数试用软件运行在DOS系统或者Windows系统上,例如通信软件ProComm、文本压缩软件PKZip、抗病毒软件VirusScan等。同时也出现了一些推广试用软件的组织。
像商业软件那样,试用软件中也给出用户注意事项,并要求:在复制、传播这种软件时,不得删除或缩略所附的用户注意事项;在著作权方面,试用软件供应者规定的用户注意事项中,一般都具有以下一些内容:(1)用户可以进行旨在存档的复制,但除非原版软件运行失败或者已经损坏,备份复制品是不允许使用的;(2)用户可以进行复制分发,但未经权利人允许,不得对其进行旨在销售的分发,可以通过从事帮助复制、帮助安装、提供培训等服务活动而收取服务费用,但这种服务费用必须在合理的范围之内;(3)权利人可以在用户注意事项中要求用户,不得对其进行反汇编或者反编译,不得进行反向工程;(4)权利人可以在用户注意事项中要求用户不得对其进行修改;(5)未经权利人允许,不得以试用软件为基础制作其衍生软件。
从这些规定可以看出,试用软件的权利人在保留权利的同时,已经在一定的条件下向社会公众开放了复制权,但没有像开源软件那样开放修改、改编权。对于不同的试用软件,它们的用户注意事项可能会有一些差别,在使用时必须仔细阅读其用户注意事项并认真遵守,否则有可能陷入侵害该软件著作权的泥潭。1996年7月澳大利亚联邦法院对一项有关试用软件的著作权纠纷作出了判决,这项判决认定:经营网络服务业务的Ozmail公司在未经许可的情况下,把Trumpet软件公司所拥有的在网络上使用的试用软件Winsock v 2.0从其他网站上下载后,涂改了Trumpet软件公司附在该软件上的著作权声明(要求用户向Ozmail公司注册付费),并在Ozmail公司上作为试用软件流通,已经侵害了Trumpet软件公司的软件著作权。这项判决表明:有关试用软件的著作权性质已经受到软件界的注意;在我国,试用软件和因特网的应用正在迅速发展,计算机用户需要了解试用软件的著作权性质以合法地使用试用软件。
开源软件的定义首先起源于自由软件。自由软件诞生的目的是要打破商业软件占主导地位的格局,这种思想是自由软件的创始人Richard Stallman先生提出的,他1971年还在麻省理工大学实验室工作时就开始有这种理念,1984年,他在一些企业的支持下以自由软件基金会(Free Software Foudation,FSF)主席的身份,启动了自己庞大的“自由软件联盟计划”(GUN Project),开始了自由软件的浩大工程。自由软件出现之前的规则是软件开发商拥有软件源代码的专用权,他们牢牢控制了源代码,只有他们才有特权访问源代码,用户和其他程序员无法查看、改动和完善,使用户无法真正融入计算机环境之中。Richard认为这割裂了人类互助的天性和基本的自由,无法真正享受数字技术带来的独有的共享精神,而且随着垄断的出现,这种局面变本加厉,人们为垄断付出的成本也越来越高。Richard的自由软件运动,就是要开发出一系列完整的软件,由原作者对自己的一些知识产权的权利进行放弃,具体说应该是向公众的许可,同意不但开放源代码,而且鼓励用户之间互相复制,通过网络在线服务,电子公告板(BBS)的发布,或者直接从一个用户的手里传给另一个用户等途径自由地传播,并藉此获得学术上和技术上的交流,让别人修正和改进源代码并接受自由软件运作规则,再重新发布。用这种模式去激励世界各地的软件开发人员投入到自由软件的开发中,软件开发人员的集体智慧得到充分发挥,人们可以及时发现并解决程序中存在的问题,减少大量不必要的重复劳动。
自由软件的精髓就在于“自由”上,“自由”体现为在软件知识产权保护层面上对软件使用者许可的可自由进行运行、复制、散发、学习和改进该软件的行为,换言之,“自由软件”是一种版权法意义上的定义。 至于自由软件的价格低廉或者免费,也是由于软件的著作权人放弃了获得报酬的权利,使得用于销售中的自由软件的成本极低的缘故。自由软件更强调自由的运用、分发、学习、改变改善该软件。“自由”主要体现在以下四个方面 :
1.可以自由运用该软件,无论是什么目的,这也是最基础的自由。
2.可以自由学习该程序怎样工作,并使之适应被许可人的需求,其前提是可以自由读取源代码。
3.可以自由重新分发复制品以便帮助被许可人的邻友。
4.可以自由改善该程序,并发布给公众,让整个社会得利,前提是可以自由读取源代码。
可见,一个程序只有符合某些条件,才能被称为“自由软件”。这些条件包括:被许可人可以自由分发软件的副本;可以就该副本进行修改并分发该修改过的副本;可以就分发行为收费;可以将软件副本分发给任何人、分发到任何地方。同时,被许可人还可以出于工作或个人目的自由地修改和使用自由软件,而不必通知开发者和任何其他人。
然而,随着自由软件世界与商业社会的融合,自由软件对待商业挑战的态度发生了转变,主要体现在由“自由软件”向“开源软件”的演变。开源运动的精神领袖之一Eric S.Raymond在《Goodbye,“free software”;Hello,“open source”》一文中说,“开源软件”取代“自由软件”是一种必然。首先,“自由软件”的定义会令人产生混淆:“free”这个词的含义非常模糊,是“免费”的意思?还是“任何人都可以自由修改”的意思?其次,“Free”这个词使很多靠软件营利的商家产生忧虑,因为“免费”对传统的商业软件模式来说,是一种颠覆性的改变。于是Raymond发表了这样的宣言:“现在我们面前有这样一个机遇:我们(开源软件)可以赢得主流商业世界的青睐,却不必放弃我们的理想,不必放弃应对科技挑战的承诺——所以,对‘Free Software’进行重新定义也成了必然,我们需要一个更好的名称,这就是——‘Open Source Software’(开源软件)。” 如果说“自由软件”更多地体现了一种自由的意志,一种强烈脱离世俗的人文力量,那么,“开源软件”则具备了前者所没有的一种“入世”的精神,一种与商业世界融合并从中汲取力量的亲和力与凝聚力。也正是“自由软件”到“开源软件”的蜕变,预示了“Open Source Software”将要阔步走向商业软件的竞技舞台。
当然,也有学者认为“开源软件”与“自由软件”的区别主要体现在定义的视角不同,“开源软件”(Open Source Software,也有译为“公开源代码软件”)的定义是从技术层面上讲,而“自由软件”则是从被许可的权利层面上讲。至于自由软件和开源软件的区别,实际体现的就在于许可证对权利义务的规定的严与紧的程度上,有学者认为,开源软件许可证中对被许可人权利限制比较严的许可证是自由软件许可证,也就是说,开源软件的范围要稍宽一些,自由软件的许可证中不允许被许可人将本许可证许可的源代码的修改版本、演绎版本以其他的许可证方式再许可或者保留起来不许可,只能按此许可证实施再许可,像自由软件联盟GNU下适用GPL开源软件许可证的软件。而开源软件的许可证则允许以其他许可证的方式实施再许可。 但无论是从定义的视角出发,还是从对待商业软件的态度出发,已经有越来越多的业界人士用“开源软件”的提法取代“自由软件”,这是一个不争的事实。而本书也将遵循国际主流倾向,把视角集中投入在“开源软件”而非“自由软件”的相关问题上。
就目前市场而言,“开放源代码”的主流是以Linux为代表、遵循GPL软件许可证或类似许可证要求的“开放源代码”。由于GPL的宗旨是“共享,而且平等地共享”,它得到了众多程序员和用户的信任,目前全球已形成一个“源代码软件产业”。而Linux更是如日中天,自20世纪80年代开始的“开放源代码运动”,已得到越来越多人的认可。
在讨论“开放源代码”的同时,不得不提及国际软件业另一位巨头——微软公司采用的“共享源代码”(Shared Source)策略。这是微软为应对“开放源代码运动”而提出的新策略,它与Open Source最大的不同在于,微软向它的大客户提供其绝对机密的Windows源代码副本,但用户只能读取该源代码或提出修改意见,而不能对它有任何修改。虽然这个所谓的“共享源代码”相对于“开放源代码”仍然停留在狭窄的层面,但这仍然是微软自成立以来最为重要的变革。在此之前,“源代码”一直是它最重要的“秘方”,外人无法“看到”,更别说“得到”。微软之所以采用“共享源代码”而不是“开放源代码”,在于它认为,后者无法确保软件的稳定性、兼容性和安全性。更为重要的是,微软认为GPL许可证是对知识产权的不尊重。而他们的“共享源代码”,则是在与客户、合作伙伴共享源代码,与软件提供商支持研发所需的知识产权保护之间寻找的一种平衡途径。当然,开放源代码运动的人们对微软的做法也有意见,他们认为“共享源代码”是在表面地冒充“开放源代码”,实际上是“套住”别人,搞技术垄断。这就是最近微软与开放源代码界非常激烈的“源代码之争”。
目前,这场争论尚不好说谁胜谁负,但它的结果对软件业的未来必将产生重大影响,软件业的销售与研发模式甚至会因此而改变。本书涉及的开源软件,特指第一种“开放源代码”(Open Source)的软件。
所谓“公有软件”(Public Domain Software,也可译成“公有领域软件”)是指著作权中的经济权利(包括复制权、修改改编权、发行权等专有权利)有效期已经届满的软件,以及权利人由于不准备使之商品化而已经明确声明放弃著作权的软件。需要指出,公有软件不同于开源软件,开源软件的著作权仍然由权利人享有,受著作权法保护,而公有软件除人身权外,再无其他著作权。
公有软件的特点在于:(1)人们可以任意复制、传播;(2)人们也可以对公有软件进行反汇编或者反编译,可以进行反向工程;(3)人们可以使用、改编,甚至将之纳入为营利目的而开发的商业软件,但不得限制其他人也这样做。
微软虽然参与开放源始码活动,但仍是有选择、有条件地开放,正如台湾地区微软营销处资深副总经理申元庆说过的那样:微软赞成某些开放源始码的模式,但坚决反对Linux采用的公众授权制度,认为公众授权制度是开放源始码任由个人或厂商使用,因此一般公司无法从软件销售上获利,只能从销售服务或硬件获利,这样的授权对于软件开发影响很大。 与自由软件运动将所有软件对所有人作普遍性的开放有所不同。
首先,微软在开放的对象上,限于其合作伙伴、大企业客户、学校与学术研究机构及政府部门,不是对一般使用者或公众开放;其次,其开放客体仅限于部分软件,而不是所有软件,关键性部分仍是最高机密,且微软还根据开放对象的不同,将开放层次分为“单纯检视”与“能否进一步做修改”等不同等级。因此,微软的“共享源代码计划”及其开放源代码的目的不在提供其他专业人士自由地参与其程序之开发,分享其智慧成果(事实上,这与微软的商业目的是完全相悖的)。
微软提出的“共享源代码计划”大致可以实现三个商业目的:第一,可以使其合作伙伴、大企业客户了解软件内容,有机会参与开发,提供建议,让自己的软件可以更接近客户,有利客户使用,双方关系可以更加紧密;第二,学校与学术研究机构可以学习、熟悉其软件,增加其软件的使用市场或开发出更多兼容软件(但这些新开发出来的软件在性质上属于演绎作品,必须经过微软的许可才能再次使用,而微软公司并没有明确地赋予演绎者这样的权利);第三,政府部门可以放心其软件没有漏洞或后门(back door),重新评估微软软件的安全性。可见,这一切都是以吸纳自由软件运动中有利于己的部分,作为企业经营的一种市场手段,但其内在精神并非出于“自由”理念,因而,不能将微软的“共享源代码计划”与开源软件相提并论。
不同种类软件的特点对比表