所谓源代码就是用汇编语言或高级编程语言表达的程序,它是用数字、文字及符号表示的有序的一串符号化指令或一串符号化语句,并且可以用有形媒体如纸、磁带、磁盘等把这种表达加以固定。当一项程序以源代码的形式开发出来之后,通常通过计算机系统中的编译器将之转换成可供计算机执行的目标代码。
在软件贸易中,对于一般用户来说,得到了程序的目标代码就可以使用;程序的源代码并不是必需的。对于软件的所有者来说,由于源代码比较容易阅读和理解,通过对源代码的分析,他人能够了解自己软件中的设计构思;掌握自己软件中的技术秘密,因此通常不希望向用户提供程序的源代码,不过,对于使用水平比较高的用户,为了便于自己排除故障、改进程序、了解程序间互连接口,可能要求得到源代码。因此,在贸易中是否提供程序的源代码,常常是讨论的焦点之一。伴随着99年以来Linux 软件在中国软件市场的风靡, "自由软件"( Free Software)的概念开始逐渐引起了人们的注意,因为Linux 软件就是自由软件家族中的一个典型代表,这是一种与我们传统理念上的商业软件有着显著不同的软件。自由软件在技术上区别于现在市场上像Windows98 等商业软件的一个显著特点就是能够以未编译的形式获得软件, 因此在技术层面上讲,也被称为"开放源代码软件"(Open Source Software).传统商业软件的保护就是要保护源代码,不仅不公开, 而且反对对软件程序复制,修改等行为。
在给这篇文章命名时,一直在考虑是用“自由软件”还是“开放源代码软件”,虽然自由软件这一名词更通俗一些,但是这篇文章则是从更宽广的领域和更深层次对开放源代码软件进行研究,除了对以LINUX为代表的自由软件的知识产权问题进行研究,其中有很大段的篇幅是讨论如何认定是开放源代码软件以及开放源代码软件的许可证问题,力争能将所谓的“自由软件运动”和“开放源代码运动”的知识产权问题剖析清楚,所以最终选择了“开放源代码软件”一词,关于开放源代码软件和自由软件的问题,我们将在下文中分层次的予以论述。
一、 软件的分类
就软件的发行方式来说,一般地说,对于通用性软件,除了商业性销售之外,社会上还存在其他发行方式。如果按照发行方式分类,计算机软件事实上存在商业软件、自由软件、试用软件和公有软件等四类。需要说明,自由软件和试用软件都不同于商业软件的试用版。商业软件的试用版通常已经在一些关键性功能方面进行了删节,基本上不能用作实际的使用。自由软件和试用软件则通常都具有自己相对完整的功能,是可以实际使用的。
l.商业软件(Business Software)
所谓"商业软件"(Business Software)就是指通过上述贸易方式面向社会公众发行的各种商品化软件。作为商业软件,其功能、性能通常已经过严格测试因而相当可靠,其使用方法应该相当便利。供应商不仅应该向用户提供程序(通常是日标码文本)和使用说明 (通常是手册的形式),而且应该向用户提供包括版本更新在内的技术服务。
商业软件的权利人通常都保留自己的权利,因此商业软件受著作权保护。对软件的发行权是软件著作权的主要内容。前面已经说明,现在国际上通行的商业软件发行方式是向用户提供使用许可。按照这种方式,用户从供应商处得到的是在该软件的使用许可协议规定的限制下,行使由该软件的使用许可协议所提供的若干项权利,而不是这份软件复制品的全部权利,更不是这项软件的全部权利。同时,这种使用许可协议将约定供应商应该提供的技术服务的具体内容。用户在购买软件时以及使用软件时,都必须仔细阅读该软件的使用许可协议,在使用过程中遵守使用许可协议,并按照使用许可协议的规定享受供应商所提供的技术服务。
2.试用软件(Shareware,国内也往往译成"共享软件”)
介于价格较贵的商业软件与自由软件之间,从发行方式看,还有一种试用软件(Shareware),国内也往往译成"共享软件”、所谓"试用软件",其复制品也可以通过网络在线服务、电子公告板(BBS)或者从二个用户的手里传给另一个用户等途径自由地传播。这种软件的使用说明通常也以文本文件的形式同程序一起提供。这种试用软件通常附有一个用户注意事项,其内容是说明权利人保留对该软件的权利,因此试用软件受著作权保护;本软件居于试用软件,用户通过二个阶段试用之后,如果希望继续使用,就应该向供应者办理使用注册手续。用户注意事项中通常包含一份注册表格,并说明如何以及向何处办理注册手续,在办理注册手续电可能会要求用户交纳一定费用,实际上就是使用许可费,需要交付的使用许可费的款额通常是很低的(几美元或者几十美元)。不少试用软件的声明中往往表示,供应者收到汇款后将提供一份印刷装订的使用说明,以及该软件的最新版本和其他技术服务。有些声明中还可能规定一个明确的试用期限。只要用户按照规定办理使用注册手续就可以在计算机上使用该软件。
试用软件这个概念是美国微软公司的R.Wallance在80年代提出来的;软件产业界采用"试用"这种发行方式的目的在于通过允许潜在用户复制一项软件以鼓励其试用,从而帮助用户决定是否购买该软件的使用许可。用户通过试用对该软件有了一定了解后,如果希望以后使用该软件,就必须通知该软件的开发者并按规定付款。试用软件实质上属于商业软件,通常不提供源程序。产业界采用这种传播方式主要作为一种销售手段,可以节省广告宣传费用,但并没有改变这种软件的著作权性质。不少试用软件在根据用户使用意见多次改进后,新的版本成了商业软件。"这种发行方式受到了个体和小型开发商的欢迎,现在已经出现了成百上千种试用软件,大多数试用软件运行在DOS系统或者Windows系统上,例如通信软件ProComm、文本压缩软件PKZip、抗病毒软件VirusScan等。同时也出现了一些推广试用软件的组织.
相较于自由软件,试用软件可以说是公司软件产品的试玩版。试用软件有的只是在程序内部加上判别,因此被许可人需要去注册(不论是花钱或是写信就好)取得注册码,输入之后就拥有全部的功能;而有的则是部份的游戏关卡或是功能,被许可人需要等该软件正式上式之后购买。这个方式也是最多游戏公司所采行的方式,好或不好不必等到买了才知道。
像商业软件那样,试用软件中也给出用户注意事项,并要求:在复制、传播这种软件时,不得删略所附的用户注意事项;在著作权方面,试用软件供应者规定的用户注意事项中,一般都具有以下一些内容:1)用户可以进行旨在存档的复制,但除非原版软件运行失败或者已经损坏,备份复制品是不允许使用的;2)用户可以进行复制分发,但未经权利人允许,不得对其进行旨在销售的分发;可以通过从事帮助复制、帮助安装、提供培训等服务活动而收取服务费用,但这种服务费用必须在合理的范围之内;3)权利人可以在用户注意事项中要求用户,不得对其进行反汇编或者反编译,不得进行反向工程;4)权利人可以在用户注意事项中要求用户不得对其进行修改;5)未经权利人允许,不得以试用软件为基础制作其衍生软件.
从这些规定可以看出,试用软件的权利人在保留权利的同时,已经在一定的条件下向社会公众开放了复制权,但没有像自由软件那样开放修改改编权。对于不同的自由软件或试用软件,它们的用户注意事项可能会有一些差别,在使用自由软件和试用软件时必须仔细阅读其用户注意事项,认真遵守用户注意事项,否则有可能陷入侵害该软件著作权的泥潭,
1996年7月澳大利亚联邦法院对一项有关试用软件的著作权纠纷作出了判决。这项判决认定:经营网络服务业务的Ozmail公司在未经许可的情况下,把Trumpet软件公司所拥有的在网络上使用的试用软件Winsock v 2.0从其他网站上下载后,涂改了Trumpet软件公司附在该软件上的著作权声明(要求用户向Ozmail公司注册付费),并在Ozmail公司上作为试用软件流通,已经侵害了Trumpet软件公司的软件著作权。这项判决表明:有关试用软件的著作权性质已经受到软件界的注意;当前在我国,试用软件和因特网的应用正在迅速发展,计算机用户需要了解试用软件的著作权性质;合法地使用试用软件。
3、公有软件(Public Domain Software,也可译成"公有领域软件”)
需要指出,自由软件和试用软件都不同于公有软件。 所谓"公有软件"(Public Domain Software,也可译成"公有领域软件”)是指著作权中的经济权利(包括复制权、修改改编权、发行权等专有权利)有效期已经届满的软件,以及权利人由于不准备使之商品化而己经明确声明放弃著作权的软件。然而;对于自由软件和试用软件而言,其著作权仍然由其权利人享有,受到国家颁布的著作权法规保护。
对于公有软件:1)人们可以任意复制、传播;2)人们也可以对公有软件进行反汇编或者反编译,可以进行反向工程;3)人们可以使用、改编、甚至将之纳入为赢利目的而开发的商业软件,但不得限制其他人也这样做。
4、自由软件(或从技术特征上命名,叫“开放源代码软件”)
自由软件的目的就是要打破商业软件占主导地位的格局,这种思想是自由软件的创始人美国的Richard Stallman提出的, 他1971年还在麻省理工时就着手这方面的工作,终于在1984年,他在一些企业的支持下能够以自由软件基金会(Free Software Foudation,FSF)主席的身份, 启动了自己庞大的“自由软件联盟计划”(GUN Project),开始了自由软件的浩大工程。自由软件出现之前的规则是软件开发商拥有软件源代码的专用权,他们牢牢控制了源代码,只有他们才有特权访问源代码,用户和其他程序员无法查看,改动和完善, 使用户无法真正融入计算机环境之中.Richard认为这割裂了人类互助的天性和基本的自由, 无法真正享受数字技术带来的独有的共享精神,而且随着垄断的出现,这种局面变本加厉, 人们为垄断付出的成本也越来越高。Richard的自由软件运动, 就是要开发出一系列完整的软件,由原作者对自己的一些知识产权的权利进行放弃,具体说应该是向公众的许可,同意不但开放源代码, 而且鼓励用户之间互相拷贝,通过网络在线服务,电子公告板(BBS)的发布,或者从一个用户的手里传给另一个用户等途径自由地传播,并籍此获得学术上和技术上的交流,让别人修正和改进源代码并接受自由软件运作规则,再重新发布。用这种模式去激发世界各地的软件开发人员投入到自由软件的开发中,软件开发人员的集体智慧得到充分发挥,人们可以及时发现并解决程序中存在的问题,减少大量不必要的重复劳动。
Free Software中文译法是有讲究的,因为英文中的Free是有多种含义的,一种理解为"自由",如"free speech"(即"言论自由"的"自由");另一种理解为"免费",如"free beer"(即"免费啤酒"的"免费")。国内早期也有将Free Software译为"免费软件"的, 可能相对于传统的那些商业软件,自由软件的价格低的几乎为免费的了,但这种译法并不准确,Free Software应该译为"自由软件",之所以译为"自由软件",是因为自由软件的精髓就在于"自由"上, “自由”体现为在软件知识产权保护层面上对软件使用者许可的可自由进行运行、拷贝、散发、学习和改进该软件的行为,换言之, "自由软件" 是一种版权法意义上的定义。[注2]至于自由软件的价格低廉,也是由于软件的著作权人放弃了自己知识产权中的获得报酬权,使得用于销售中的自由软件的成本极低的缘故。
令人欣喜的是,时至今日,自由软件的发展得到了巨大的成功,在许多国家得到认可和发展,仅美国自由软件联盟GNU中的自由软件种类已达几千种, 较为突出的代表有操作系统GNU Linux,语言系统GNU C++,数据库管理系统Ingress等。单拿Linux的发展来说,有资料显示,虽然它1990年才在芬兰诞生而到了1998年它的增长率高达212%,在全球Internet服务器领域它已占有27.6%的市场份额,超过了Windows的23.6%。[注3]
自由软件是指使用者可以自由的运用,拷贝,分发,学习,改变改善该软件。更准确的说,对该软件的使用者是具有四种自由[注4]:
1、可以自由运用该软件,无论是什么目的。(第零种自由,也就是说最基础的自由)
2、可以自由学习该程序怎样工作,并使之适应被许可人的需求。(第一种自由)。其前提是可以自由读取源代码。
3、可以自由重新分发拷贝以便帮助被许可人的邻友。(第二种自由)
4、可以自由改善该程序,并发布给公众,让整个社会得利。(第三种自由)。其前提是可以自由读取源代码。
一个程序能被称为自由软件,如果使用者拥有以上所有的自由。因此被许可人应该可以自由分发附本,更改或未更改过的,免费或收发行费的,给于任何人,任何地方。能自由的做这些事意味着被许可人不用为能否使用该软件而申请或付费。被许可人也应该有自由私自修改及使用,因为工作或兴趣,而不用公告他的存在。如果被许可人公告了,被许可人也不用申请告诉任何人,或用任何方式。自由使用一个程序意味着任何人和组织有自由使用该程序在任何操作系统上,为了任何工作,而且不必通知开发者和任何有关人事。
二、 开放源代码软件与自由软件的关系
“自由软件”与“开放源代码软件”的差别在于给出定义的角度不同。"开放源代码软件"(Open Source Software,也有译为“公开源代码软件”) 的定义是从技术层面上讲,而“自由软件”则是从被许可的权利层面上讲。至于自由软件和开放源代码软件的区别,实际体现的就在于许可证对权利义务的规定的严与紧的程度上,有学者认为,开放源代码软件许可证中那部分对被许可人权利限制比较严的许可证是自由软件许可证,也就是说,开放源代码软件的范围要稍宽一些,自由软件的许可证中不允许被许可人将本许可证许可的源代码的修改版本、演绎版本以其他的许可证方式再许可或者保留起来不许可,只能按此许可证实施再许可,像自由软件联盟GNU下适用GPL开放源代码软件许可证的软件。而开放源代码软件的许可证则允许以其他许可证的方式实施再许可。[注5]
(一)、关于开放源代码运动与自由软件运动
开放源代码运动(Open Source Movement,也有译为“公开源代码运动”)实际上是一个描述性的统称,是指以Linux为代表的GNU自由软件计划、Apache开放源代码软件计划[注6]、开放源代码首创行动Open Source Initiative等开放源代码软件计划的统称[注7]。对于开放源代码运动,国外被称为软件领域的“数字化时代的文艺复兴”[注8]、软件领域“具有共产主义色彩的战略” [注9]。记得管理学大师彼得.杜拉克有句名言 “任何企业必须形成一个真正的整体,并且将个人的努力融汇成一种共同的努力。” 这就是开放源代码运动的宗旨。而自由软件运动(Free Software Movement)实际上也是一个描述性的统称,指的就是上述的一种开放源代码运动,只是定义的角度不同而已。
(二)、开放源代码软件的认定
“开放源代码首创行动组织”(Open Source Initiative Association,简称OSIA)是一个非盈利的组织,是美国的Bruce Perens 和 Eric S. Raymond 等人于1998年在美国加州发起设立的,倡导了“开放源代码首创行动” (Open Source Initiative,简称OSI),其目的就是要让开放源代码软件的发展有一个更好的土壤。组织建立的目的就是想尽可能统一开放源代码软件的标准,捍卫开放源代码这一神圣的定义,为此,该组织从软件的许可问题入手,结合证明商标,为开放源代码软件业的发展做出了重大的贡献。
开放源代码首创行动组织,作为一个自发建立的非官方组织,为了在开放源代码软件领域实现统一标准的目的,确实难度很大,但是该组织的定位和战略很好,将自己定位为一个行业自律协会性质,并且巧妙的应用了商标战略。将Open Source Initiative、OSI申请了证明商标[注10],自己作为证明商标的管理者[注11](OSIA原想将Open Source 、OS等申请为产品商标,但是由于具有描述性的特征,所以未被授权,所以才转申请了证明商标)[注12]。是否是开放源代码软件,不光要看权利人是否提供源代码,另外一个很重要的标志就是许可证的问题,因为绝大多数的开放源代码软件在发布时都会附带一个许可协议,即我们所说的许可证,在许可证中,会规定许可人和被许可人的权利与义务,而正是这些权利和义务,决定了权利人是否将源代码真正的向社会公众开放,从而可以实现是否是开放源代码软件的判断。OSIA正是从软件的许可证上着手,将证明商标许可给那些经其审核认定为开放源代码软件的软件提供者。这样,凡被认定为开放源代码软件许可证的,都可以表明OS、OSI等商标标识,从而得到开放源代码软件界的认可。
经过3年多的发展,“开放源代码首创行动”取得了很大的成功,像自由软件联盟GNU、IBM、NOKIA、NETSCAPE等的开放源代码软件许可证都先后得到了OSIA的认证,迄今为止,经OSIA认证的开放源代码软件的软件许可证有如下21种:
1、The GNU General Public License (GPL)
2、The GNU Library or "Lesser" Public License (LGPL)
3、The BSD license
4、The MIT license
5、The Artistic license
6、The Mozilla Public License v. 1.0 (MPL)
7、The Qt Public License (QPL)
8、The IBM Public License
9、The MITRE Collaborative Virtual Workspace License (CVW License)
10、The Ricoh Source Code Public License
11、The Python license
12、The zlib/libpng license
13、The Apache Software License
14、The Vovida Software License v. 1.0
15、The Sun Internet Standards Source License (SISSL)
16、The Intel Open Source License
17、The Mozilla Public License 1.1 (MPL 1.1)
18、The Jabber Open Source License
19、The Nokia Open Source License
20、The Sleepycat License
21、The Nethack General Public License
其中开放源代码软件业最著名的GPL、LGPL、MPL、MPL1.1软件许可证,都经过OSIA的认证。
在开放源代码首创行动组织的开放源代码的定义(The Open Source Definition)中,指明了该组织对开放源代码软件的认定标准有如下几个方面[注13]:
1、 发布的自由
开放源代码软件的许可证不能有任何限制再销售或限制本程序同其他代码性质程序联合发布的条款,也不能有额外的收费要求。[注14]
2、 关于对源代码的要求
要求软件的发布形式必须为开放源代码的形式,即使有的软件在初始发布时不便于在程序中发布源代码,但必须有免费的方式在软件初始发布的同时提供明确的路径获得源代码,无论是书面印刷的还是通过因特网下载。
另外,这些源代码必须是完备的,至少要能保证专业领域的人员能够进行修改。而且在软件发布时任何故意混淆源代码的行为是被禁止,任何通过预处理程序或翻译程序对源代码进行阻隔的行为也是被禁止的。
开放源代码软件许可证可以禁止被许可人以直接在初试源代码版本上修改的模式发布,但是前提是在源代码软件初始发布的时候就必须允许以在源代码程序版本后用附属文件的形式发布修改版本。
3、 关于演绎作品
开放源代码软件许可证必须允许源代码可以被修改和允许根据源代码产生有版权法意义上的演绎作品。
4、 其他要求
其他的要求包括不得对许可对象有歧视、不得对软件被使用的领域有歧视、不得要求本开放源代码许可证生效的条件是在遵从其他软件许可证的前提下、许可证必须是适用于开放源代码这一类软件的而不是只针对某一个软件和开放源代码软件许可证不得贬低其他软件许可证等条款[注15]。
OSIA对开放源代码软件许可证的认定程序是由许可证提供人启动的,凡许可证提供人自己认为自己的许可证符合开放源代码软件的要求的,可以向OSIA提出加入OSIA开放源代码软件许可证体系的申请,OSIA将通过委员会审查和公众审查来决定是否承认该软件许可证为OSI系列的开放源代码软件许可证[注16]。
(三)、开放源代码软件得以快速发展的原因
——Internet是开放源代码的最佳媒体和途径
传统的源代码传播途径是以纸介质或磁盘为媒体的,其传播速度和范围都十分有限,不能及时反馈和公开程序高手们修改与补充的代码,讨论的范围就更狭窄了。Internet的出现充分缩短了交流的时间和空间,不论在哪里,也仅是一“屏”之隔,一“点”之差,Linux就是借助于Internet发展壮大的,可以说没有Internet就没有Linux。Internet的发展壮大了开放源代码软件事业,同时也给开放源代码软件的最初原则带来挑战,开放源代码软件许可证正是在这样的条件下诞生的,许可证伴随源代码在网络上传播,为开放源代码运动保驾护航。
三、 关于开放源代码软件许可证的比较研究
(一)、软件许可证的由来
软件许可证的发展是随着软件产业发展而发展的,而软件产业的发展又是随着计算机技术的进化的。在20世纪80年代以前,由于计算机都是大型化的,所以软件业的市场范围比较狭小,大部分软件都是为专门的计算机定制的,对当时软件业最形象的描述就是量体裁衣般的“裁缝式”。[注17]1980年以后,随着计算机制造技术的改进,个人电脑的普及,才使得软件市场得以发展,使得软件成为产品,软件程序能够得以批量生产和销售。但是软件同普通商品有一个明显的不同就是,程序作为软件产品的核心,是复杂脑力劳动的结果,是具有知识产权特性的。所以软件产品在商业化运作中,一个典型的特点就是软件是许可而不是简单的商品买卖,更不意味着权利的卖绝。因此软件许可协议,也就是软件许可证,在软件产业中的地位非常重要,因为在许可证中约定了许可人和被许可人的权利和义务[注18]。
(二)、几种开放源代码软件许可证的比较研究
为了保证任何人能够得到源程序或者在需要的时候能够得到源程序,保证任何人能够修改开放源代码软件或将开放源代码软件的一部分用于新的开放源代码软件以及保证任何人知道他们能够做这些事情,所以需要开放源代码软件许可证。因为开放源代码软件许可证作出如下规定:禁止任何人不承认这些权利,或者要求其他人放弃这些权利。如果修改了开放源代码软件或者发布了软件的副本,这些规定就转化为确定的责任,这就是开放源代码软件许可证最典型的作用,也就是为什么开放源代码软件许可证必不可少的原因。
Ⅰ、GPL许可证
GPL许可证(GPL是General Public License的简写)是自由软件联盟GNU的开放源代码软件许可证的一种,是开放源代码软件领域最富盛名的一种许可证,但同时,GPL许可证也是开放源代码软件领域对被许可人权利限制最严的。[注19]
(A)、 GPL许可证概要
Richard在倡导自由软件联盟计划时, 从软件的版权许可协议入手, 创设了一种与其开放源代码软件发展相适应的“通用公共许可协议”( General Public License,GPL),凡想加入GNU的软件著作人都要接受这份许可协议,其宗旨就是保证用户有无限复制和修改的权利。并且在GPL的导言部分中,对自由软件和知识产权的相关问题进行了论述。
1、“自由”的法律含义
前面已经提过, 开放源代码软件这一定义的来源是从技术角度,而自由软件这一定义本身就是版权意义上的范畴.自由软件的"自由"体现为通过版权许可给予的自由,而不是自由的没有知识产权。也就是说, 自由软件不是没有版权,它首先是承认软件的版权--软件有原始的版权所有者,然后纳入自由软件的版权许可约束,使每个人在维持该许可的条款不变的情况下,都有权复制, 修改和发布软件或其衍生的工作,这就是所谓的自由软件的自由理念。 Richard Stallman在《自由软件联盟宣言书》(《GNU Manifesto》)中有这样一段对知识产权的论述:“仔细研读过知识产权法律条款的人会发现,知识产权并不是一种固有的权利,现行的各种知识产权都是立法机构通过专门立法赋予的权利,所有的知识产权都是社会给予的许可。”这是Richard进行自由软件发展工作的法律立足点,他要取得知识产权法上的论证,并且他认为知识产权是一种社会赋权,既然知识产权是作为一种权利是立法上授予的权利,并且知识产权法也允许运用“许可”这种方法,通过契约的方式来变更和调整知识产权的权利人与使用者之间的权利义务,于是Richard从许可这一个角度着手,使自由软件的运作在不同于商业软件的运作,即扩大所谓的"自由"时, 能有自己的法律依据——在承认版权的前提下,通过软件的版权许可来实现自由软件的自由权利的要求。
2、自由软件的版权许可
对于普通的商业软件, 软件开发商与使用者之间一般都会设立软件使用许可协议,即“一般商业许可”(General Business License,GBL). 这种许可协议一般由开发商单方拟订,用户接受协议是使用软件的前提,而获得许可的前提是支付费用购买软件产品.其许可条款一般按照版权法或专门的软件保护条例,或者通过双方合意达成略高于版权法和软件保护条例保护标准的软件许可使用条款。
面对于这种显然不适合自由软件的GBL,Richard在倡导自由软件联盟计划时, 从软件的版权许可协议入手, 创设了一种与自由软件发展相适应的" 通用公共许可协议"( General Public License,GPL),凡想加入GNU的软件著作人都要接受这份许可协议,其宗旨就是保证用户有无限复制和修改的权利。更有趣的是,相对于“著作权”(“Copyright”)这一名词,Richard新造了一个词,将这种许可协议叫做“Copyleft”[注20]。“通用公共许可协议”在导言部分就明确了这项许可协议的法律立足点:(1)承认软件的版权;(2) 提供这种许可协议以使获得授权的复制,散发和修改软件的权利。 GPL是自由软件著作人同意的保证任何人有共享和修改自由软件的许可协议,GPL有13条主要条款,其中社会公众作为被许可人享有最主要的4项权利:(1)为了任何目的的运行该程序;(2) 有自由获得源代码的权利,并在此基础上研究程序是如何运行的,并可为了个人的目的改变该程序;(3)有自由散发该复制件的权利;(4)有自由改进程序,并要求将自己的改进向公众公布的权利。由这些规定可以看出自由软件的权利人在保留权利的同时, 已经在相当程度上向社会公众许可了复制权和修改权。同时GPL也规定社会公众有以下义务: 用户在发布源代码和一切派生工作时不收费(除必要的工本费),不附加其他条款,并必须附带GPL条款。这样任何人无论是否作了修改,都必须连带传递复制和修改这个软件的自由度,使得自由软件工作得到延续和认可。
“自由软件”是一个版权意义上的范畴。自由软件认为软件的源代码应该是属于全人类的公共知识产权,应该在编制和使用程序的人之间自由地传播,而不应该是商人谋取利益的手段。对这一知识产权的任何限制最终都将造成发展的限制和阻碍。自由软件的倡导者们不是企图将别人的软件共化,他们的做法是将自己的软件作品纳入自由软件的范畴,贡献给全世界。
通用公共许可证版权协议是一种与传统知识产权概念截然不同的全新版权体系。它与传统的软件知识产权的不同在于:它保证任何人都有发布自由软件的自由(如果愿意,可以对此项服务收取一定的费用);保证任何人能够得到源程序或者在需要的时候能够得到源程序;保证任何人能够修改自由软件或将自由软件的一部分用于新的自由软件;而且还保证任何人知道他们能够做这些事情。为了保护这些权利,通用公共许可证作出如下规定:禁止任何人不承认这些权利,或者要求其他人放弃这些权利。如果修改了自由软件或者发布了软件的副本,这些规定就转化为确定的责任。
自由软件与传统的商业软件的主要区别在于:商业软件一般不提供源代码,而自由软件保证提供源代码;商业软件禁止用户将软件散布给第三者,而自由软件在法律上保证任何人有权按照许可证的规定散发软件;更为重要的是自由软件在法律上保证了任何软件作品一旦宣布为自由软件,便永远是自由软件,包括原始作者在内的任何人都无权改变。任何更新、移植、修改和增强都被定义为“导出性工作”,是不能改变原始版权说明的。
当然,通用公共许可证既然是一种软件知识产权的保护方式,它并不排斥软件开发者从软件中获取利益,只是盈利的方式有所改变:从过去依赖软件拷贝的销售,转向主要提供软件及信息服务。而且,现有商业软件嫁接到GNU/Linux等自由软件上时,也不一定非要公布源代码和提供免费拷贝,这意味着,自由软件可以与商业软件共存。
当我们使用商业软件时我们都会看到一个版权信息,它通常是说被许可人没有权力对被许可人买的软件进行拷贝、分销。至于理解和修改,因为根本就没有源码所以就无所谓“理解“和“修改“。毋庸讳言,在我们的身边,至今有人还未注意到有关版权的信息,因此,我们不知道我们究竟放弃了自己的哪些权力,而我们或许会为此付出代价。
其实,自由软件的本质不是免费,它是赋予使用者运行、拷贝、散布、研究、改进软件的自由,并保证这些自由不会因为私有软件的介入而丧失:学习程序如何工作、修改使之适合被许可人的需要;散布,使被许可人和被许可人的邻居、朋友共享软件;改进程序,将被许可人的改进公之于众,使整个社会受益等权利。它的本质是“思想共享、知识共享、源码共享”,是非垄断,是鲜活的思想贡献。借助别人的优秀思想,加上被许可人自己独特思维使全社会受益。如果被许可人没有钱,被许可人可以通过免费的渠道,如从朋友处拷贝或通过英特网下载。如果被许可人很有钱,被许可人可以以捐赠的方式用高价购买。这一切取决于您自己。
当随意使用一个软件而不必担心侵权时,深晓“自由”真谛的人们,必会感到社会的温馨和友爱,当可以随时修改程序使它更好、更适用时,一定能体验工作效率得到提高的兴奋,当把自己的辛勤劳动公之于众、供千万人使用的时候,被承认的自豪感将充分体验自由、和谐、高效的世界充满着爱!
3、自由软件与软件专利
作为软件生产大国和专利制度比较发达的美国,软件专利的数量也是很大的,软件专利的独占权与自由软件所倡导的"自由"精神格格不入,Richard的GNU 计划书中还专门提到了这一点。他认为“自由软件面对的最大威协就是软件专利”。由于美国对软件专利这样的独占权的保护期又是长达17年,这显然与"自由"精神抵触,另外更重要的就是由于自由软件在发布、改进过程中融入了许多人的劳动,多多少少有可能涉及到自由软件所最不愿意遇到的所谓软件专利侵权诉讼。比如说,LZW 公司1983年申请的一个压缩技术的专利, 导致自由软件联盟GNU涉及生产该压缩制品的自由软件迟迟不能在网上发布,在1998年,一个生产MP3 压缩音响制品的自由软件又被停止在网上的发布,因为可能面对软件专利侵权的诉讼。目前对付这种软件专利侵权诉讼的方法也就是两个:一是申请宣告该专利无效;二就是寻找其他的替换方法去实现自由软件发布的目的,但这些又似乎都是不得以而为之的对策。
上面说的是自由软件与已存在的软件专利之间的问题,而针对自由软件本身,在“通用公共许可协议”的导言部分中, 还专门有一项关于自由软件可否申请软件专利的条款:“鉴于任何自由软件时刻处于软件专利的威胁之下,我们希望能避免这种情况:自由软件的再传播者在实施过程中使得这项软件程序获得专利独占权,正是基于此目的, 我们明确地要求承诺任何自由软件可以去获得专利授权的前提是一旦获得软件专利授权必须向所有的人以符合自由软件使用条件的标准许可使用该专利, 否则就不可去申请软件专利。”从这里可以看出GPL多少是排斥软件专利的.
从以上可以看出, 以自由软件运动GNU为代表的开放源代码软件的出现并不是要否定知识产权,它是植根于知识产权的土壤之中,去体现自己的风格,实现自己的追求, 它依赖于知识产权并谋求一种创新,因为自由软件的精神并不是与知识产权保护制度相矛盾,应当说,它属于一种权利的主动放弃。自由软件的出现是自由精神与创新精神相结合的产物,自由软件开发群体奉行自由精神,不追求个人物质利益的实现,而立足于创造、构建理想的软件产品,这样的精神是值得提倡和推崇的
综上可以看出,自由软件的出现,并不像有些人想象的那样自由软件从根本上否定了知识产权法律制度,事实上,自由软件并不同版权制度矛盾,只是由权利人向公众许可了本属于自己的修改权、发布权等一些版权权利。但是,对于专利来讲,可以看出自由软件是反对由专利形成的垄断权,因此,自由软件不提倡软件专利。
(B)、GPL许可证有关复制、发布和修改等权利的约定
GPL许可证适用于任何包含版权所有者声明的程序和其他作品,版权所有者在声明中明确说明程序和作品可以在GPL许可证条款的约束下发布。GPL许可证中对源代码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的“原本”(原文为:“script”)。作为特殊例外,发布的源码不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序,内核等)。除非这些组成部分和可执行作品结合在一起[注21]。下面提到的“程序”指的是任何这样的程序或作品。而“基于程序的作品”指的是程序或者任何受版权法约束的衍生作品,也就是说包含程序或程序的一部分的作品,可以是原封不动的,或经过修改的和(或)翻译成其他语言的(程序)。在GPL许可证中,翻译包含在修改的条款中,许可证条款不适用于复制,发布和修改以外的活动。运行程序的活动不受条款的限止。仅当程序的输出构成基于程序作品的内容时,这一条款才适用(如果只运行程序就无关)。
GPL许可证规定只要在每一副本上明显和恰当地出版版权声明和不承担担保(即No Warranty条款,将在下文中讨论)的声明,保持此许可证的声明和不担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,被许可人就可以用任何媒体复制和发布被许可人收到的原始的程序的源代码,可以为转让副本的实际行动收取一定费用,也有权选择提供担保以换取一定的费用。
可以修改程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要同时满足下面的所有条件,就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。
a) 必须在修改的文件中附有明确的说明:被许可人修改了这一文件及具体的修改日期。
b) 必须使被许可人发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。
c) 如果修改的程序在运行时以交互方式读取命令,就必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者被许可人提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。
如果能够确定作品的一部分并非程序的衍生产品,可以合理地认为这部分是独立的,是不同的作品。当将它作为独立作品发布时,它不受此许可证和它的条款的约束。但是当将这部分作为基于程序的作品的一部分发布时,作为整体它将受到许可证条款约束。准予其他许可证持有人的使用范围扩大到整个产品。也就是每个部分,不管它是谁写的。
因此,GPL许可证这项条款的意图不在于索取权利或剥夺全部由被许可人写成的作品的权利。而是履行权利来控制基于程序的集体作品或衍生作品的发布。此外,将与程序无关的作品和该程序或基于程序的作品一起放在存贮体或发布媒体的同一卷上,并不导致将其他作品置于此许可证的约束范围之内。
GPL许可证允许以目标码或可执行形式复制或发布程序(或符合GPL许可证第2款的基于程序的作品),只要被许可人遵守下面的条款。
a)在通常用作软件交换的媒体上,和目标码一起附有机器可读的完整的源码。这些源码的发布应符合上面条款的要求。或者
b)在通常用作软件交换的媒体上,和目标码一起,附有给第三方提供相应的机器可读的源码的书面报价。有效期不少于3年,费用不超过实际完成源程序发布的实际成本。源码的发布应符合上面的要求。或者
c)和目标码一起,附有被许可人收到的发布源码的报价信息。(这一条款只适用于非商业性发布,而且只收到程序的目标码或可执行代码和按b)款要求提供的报价)。
如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问和复制源码可以算作源码的发布,即使第三方不强求与目标码一起复制源码。除非明确按许可证提出的要求去做,否则被许可人不能复制,修改,转发许可证和发布程序。任何试图用其他方式复制、修改、转发许可证和发布程序是无效的。而且将自动结束许可证赋予被许可人的权利。然而,对那些从被许可人那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。每当重新发布程序(或任何基于程序的作品)时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制,发布或修改程序的GPL许可证。
Ⅱ、LGPL许可证
LGPL许可证(LGPL许可证是LESSER GENERAL PUBLIC LICENSE的简写,也叫LIBRARY GENERAL PUBLIC LICENSE[注22],中文译为“较宽松公共许可证”或者“函数库公共许可证”)。这个许可证,适用于一些由自由软件基金会与其它决定使用此许可证的软件作者,所特殊设计的软件软件包 ── 像函数库(即LIBRARY)可以使用它。
(A)、LGPL许可证的特点
LGPL许可证,也是自由软件联盟开放源代码软件许可证的一种,大部分的 GNU软件,包括一些函数库,是受到原来的 GPL许可证的保护。而LGPL许可证,适用于特殊设计的函数库,且与原来的通用公共许可证有很大的不同,给被许可人较为宽松的权利,所以叫“较宽松公共许可证”。在特定的函数库中使用它,以准许非自由的程序可以与这些函数库连结。
当一个程序与一个函数库连结,不论是静态连结或使用共享函数库,二者的结合可以合理地说是结合的作品,一个原来的函数库的衍生品。因此,原来的通用公共许可证只有在整个结合品满足其自由的标准时,才允许连结。较宽松通用公共许可则以更宽松的标准允许其它程序代码与本函数库连结。
例如,在少数情况下,可能会有特殊的需要而鼓励大家尽可能广泛地使用特定的函数库,因而使它成为实际上的标准。为了达到此目标,必须允许非自由的程序使用此函数库。一个较常发生的情况是一个自由的函数库与一个被广泛使用的非自由函数库做相同的工作,在此情况下,限制只有自由软件可以使用此自由函数库不会有多少好处,故我们如用了LGPL许可证。在其它情况下,允许非自由程序使用特定的函数库,可以让更多的人们使用由软件的大部分。例如,允许非自由程序使用 GNU C 函数库可以让更多的人们使用整个 GNU 作业系统,以及它的变形,GNU/Linux 作业系统。 尽管LGPL许可证对使用者的自由是较少的保护的,它却能确保与此函数库连结的程序的使用者拥有自由,而且具有使用修改过的函数库版本来执行该程序的必要方法。
(B)、关于复制、散布、以及修改的规定
LGPL许可证在关于复制、散布、以及修改的规定中特别区别了 "基于函数库的作品" 以及 "使用函数库的作品" 之间的差异:前者包含来自函数库修改过的源代码;而后者则必须与函数库结合才能执行。
LGPL许可证适用于任何软件函数库,或其它包含了由版权所有者加入的注意事项的程序,或其它有公信力的团体宣称其程序可以在LGPL许可证的条款下散布。一个 “函数库”意指一些软件函数的集合,以及或准备好的资料以方便与应用程序 (其使用了其中某些函数与资料) 连结形成可执行的程序。 以下,“函数库”一词指的是任何在本条款下散布的这一类软件函数库或作品,一个 "基于本函数库的作品" 意指函数库或任何在版权法下的衍生作品。也就是说,一包含了本函数库或其一部分的作品,可以是原封不动的,或经过修改的,和(或)直接翻译成其它语言的(在LGPL许可证中,翻译是包含在 "修改" 的条款中)。
作品的 "源代码" 意指对作品进行修改最优先择取的形式。对函数库而言,完整的源代码意指所有模块的所有原始程序,加上有关的接口的定义,加上控制函数库的安装和编译的 “原本”(原文为:“script”)。[注23]
LGPL许可证条款不适用于复制,发布和修改以外的活动。这些活动超出这些条款的范围。使用本函数库来执行本程序的动作不受条款的限制,而程序的输出只有在其内容所构成的作品是基于本函数库时 (与在什么工具中使用本函数库来输出无关) ,这一条款才适用。以上情况是否成立则取决于本函数库具体用来做什么。只要被许可人在每一程序副本上明显和恰当地宣告版权声明和不承担担保的声明,并保持此许可证的声明和没有担保的声明完整无损,并和程序一起给其它每位程序接受者一份许可证的副本,该被许可人就可以用任何媒体复制和发布他收到的函数库的完整源代码,也可以为转让副本的实际行动收取一定费用,也可以选择提供担保以换取一定的费用。
只要同时满足下面的所有条件,就可以按前面的要求修改函数库的一个或几个副本或它的任何部分,以此形成基于此函数库的作品,并且复制和发布这一经过修改的程序或作品:
a. 被修改的作品本身必须是一个软件函数库。
b. 必须在修改过的档案中附有明确的说明:被许可人修改了此一档案及任何修改的日期。
c. 必须让整个作品允许第三方在此许可证条款下可以免费使用。
d. 如果修改过的函数库的某个设备使用到了使用本函数库的应用程序所提供的函数或资料表格,却不是当此设备被呼叫时以参数列传入时,则必须确实做到,当应用程序不提供这样的函数库表格时,则此设备依旧能工作,且其执行的任何目的仍然有意义(例如,一个函数库的函数用来计算平方根,其目的是有完整的定义且与应用程序是无关的。因此,要求任何本函数会使用的,由应用程序所提供的函数或表格必须是选择性的:如果应用程序不提供的话,则计算平方根的函数必须依旧能计算平方根)。
这些要求适用于整个修改过的作品。如果能够确定作品的一部分并非本函数库的衍生产品,且可以合理地单独考考虑它与原作品分开的话,则当将它作为独立的作品发布时,它不受此许可证和其条款的约束。但是当被许可人将这部分与基于本函数库的作品一同发布时,则整个软件包将受到本许可证条款约束,其对于其它许可证持有人的使用范围扩大到整个产品,也就是软件包的每个部分,不管它是谁写的。因此,LGPL许可证条款的意图不在于索取权利,或剥夺完全由被许可人完成的作品的权利,而是履行权利来控制基于本函数库的集体作品或衍生作品的发布。此外,将与本函数库无关的作品和本函数库 (或基于本函数库的作品) 一起放在储存媒体或发布媒体的同一卷上,并不导致将其它作品置于此许可证的约束范围之内。
前面已经说过LGPL许可证是根据GPL许可证演变的。还有一个规定就是,开放源代码时,可以选用LGPL许可证,对于选用LGPL许可证公开的源代码,可以变更为适用GPL许可证,但却不能反向变更。LGPL许可证允许以目标码或可执行形式复制或发布本函数库,只要被许可人遵守前面的要求,并同时提供完整的相关机器可读的源代码,而这些源代码在一般习惯上用来做软件交换的媒体上散布。如果所发布的目标码是由指定的地点提供拷贝索取,那么由同一地点所提供等价的源代码拷贝索取可以算作源代码的发布,即使第三方不强求与目标码一起复制源代码。
一个程序若包含不经任何部分修改的函数库,但却是设计经由编译或连结的方式与本函数库一同工作者,称之为“使用函数库的作品”。这样的一个作品,严格地说,并非本函数库的衍生作品,因而不在本许可证的范围之内。然而,将“使用函数库的作品”与本函数库连结而产生可执行程序,则是本函数库的衍生品 (因为它包含了本函数库的一部分),而不是 "使用函数库的作品",因此其可执行程序包含在本许可证的范围内。当“使用函数库的作品”使用了函数库部分的标头档内容时,则此作品即使其源代码不属于本函数库的衍生品,但其目标码仍然是。这一点是否为真特别在是否本作品可以在不需要本函数库即可连结,或者是否该作品本身也是一个函数库时特别明显。
如果这样的目标文件只使用数字参数、数据结构层级与附属品、以及小宏和小内嵌式 (小于或等于十行) ,则此目标文件的使用是不受限的,不论是否它是合法的衍生作品。 否则的话,如果本作品是本函数库的衍生品,被许可人必须按规定下散布该作品的目标码。做为上述规定的例外情况,被许可人也可以将“使用函数库的作品”与本函数库结合或连结,以产生包含部分本函数库的作品,并在允许使用者自身使用时可以修改该作品,以及在对修改进行反组译除错的情况下,被许可人可以依照自己的选择散布该作品。
被许可人必须在每个作品的副本突显出如下的注意事项:本函数库在作品中被使用,以及本函数库以及它的使用是在本许可证的规范下。被许可人必须提供本LGPL许可证的副本。如果该作品在执行时显示版权声明,被许可人必须在其中包含本函数库的版权声明,以及指引使用者取得本许可证的副本。同时,被许可人必须做到以下其中一件事:
a. 必须将完整的机器可读的函数库源代码包含在该作品中,包括任何该作品使用到的改变 (这些改变必须在前述第 1 与第 2 款的要求下散布);而且,如果该作品是一个与函数库连结的“完整的、机器可读的’使用函数库的作品’”,则要有目标码和(或)源代码,如此使用者可以修改本函数库且可以重新连结,以产生包含修改过的函数库的修改过的可执行程序。
b. 在与函数库连结时使用适当的分享函数库连结机制。一个适当的机制是: (1) 在执行时使用已存在于使用者的计算机中的函数库副本,而不是将函数库的函数复制到可执行程序里,以及 (2) 如果使用者安装了一份修改过的函数库,只要修改过的版本在接口上与该作品在编译连结时所用的版本是兼容的,则该执行程序可以与修改过的函数库运作良好。
c. 在该作品内提供书面报价,有效期不少于三年,以提供同样的使用者上述条款中的内容,费用不得超过该程序发布的实际成本。
d. 如果所发布的作品是由指定的地点提供拷贝索取,则由同一地点提供上述内容的等价拷贝索取。
e. 确定使用者已经收到该作品的一份复制,或是被许可人已经寄给该使用者一份复制品。
对于一个可执行程序,其所需的“使用函数库的作品“的形式必须包括任何要从中再产生可执行程序时所需的资料与工具程序。然而,有一个特殊例外,其所散布的内容不需要包括任何一般与“可执行本程序的操作系统”的主要部分 (如编译器、核心等) 一起发布的部分 (不论是源代码或可执行码),除非这些组成部分和可执行作品结合在一起。有一个可能情况是,这些要求与其它通常不与操作系统在一起的私有函数库的版权限制相抵触,这样的抵触表示被许可人不能将它们与本函数库一起用于被许可人散布的可执行程序中。
LGPL许可证允许将使用本函数库的函数库设备,以及其它不在本许可证范围内的函数库,对等地放入一个单独的函数库中,并在基于本函数库的作品以及其它函数库在其它状态下同意可以个别散布,以及被许可人做到以下两点的情况下,被许可人可以散布此结合的函数库:
a. 将基于本函数库的作品单独不与其它函数库设备结合地,与此结合的函数库一同散布。该作品必须在上述条款的规范下散布。
b. 在此结合的函数库中明显地指出其中一部分的作品是基于本函数库,并且说明那里可以找到同样不具结合形式的作品。
Ⅲ、 MPL许可证
MPL(MPL是The Mozilla Public License的简写),最初是1998年初Netscape的 Mozilla小组为其开放源代码软件项目设计的软件许可证。MPL许可证出现的最重要原因就是Netscape公司认为GPL许可证没有好好平衡开发者对源代码需求与他们获得的利益。[注24]同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA认定的开放源代码软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处:
(一)、MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码代码库上加一个接口,除了接口程序的源代码以MPL许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。[注25]
(二)、MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。
(三)、对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。
(四)、对源代码的定义
在GPL许可证中,对源代码的定义如下:“源代码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的”原本”(原文为:“script”)。作为特殊例外,发布的源码不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序,内核等)。除非这些组成部分和可执行作品结合在一起。如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问和复制源码可以算作源码的发布,即使第三方不强求与目标码一起复制源码。
而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的“原本”(原文为: “script”),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”
(五)、MPL许可证中对于被许可人发布和修改的权利、义务同GPL许可证没有什么区别只是就修改的源代码以网络发布的形式有一个时间的要求,即该网页的保留时间不能少于12个月。
但是MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和怎么修改都得有描述。
Ⅳ、BSD许可证
BSD许可证原先是用在加州大学柏克莱分校发表的各个4.4BSD/4.4BSD-Lite版本上面(BSD是Berkly Software Distribution的简写),后来也就逐渐沿用下来。1979年加州大学伯克利分校建立了BSD Unix,被称为开放源代码的先驱,BSD许可证就是随着BSD Unix发展起来的[注26]。BSD许可证现在被Apache和BSD操作系统等开放源代码软件所采纳。
相较于GPL许可证和MPL许可证的严格,BSD许可证就宽松许多了,一样是需要附上许可证的原文,不过比较有趣的是,它还要求将所有程序发展者的版权资料放上去,所以拿到以BSD许可证发行的软件可能会遇到一个小状况就是这些版权资料许可证占的空间比程序还大。
在所有开放源代码软件许可证中,BSD许可证可能对被许可人来说是最“宽容”的,因为它尽可能的赋予了被许可人使用源代码的权利。它的宗旨是:“这些就是源代码,做被许可人想做的任何事情,我们不会介意,只要被许可人在试用和销售与本源代码有关的产品时不要忘记标明我们的劳动。[注27]”只要标明了源代码的出处,被许可人在以下问题将不受限制:再许可问题、将这些源代码用在自己的程序中而按自己的要求进行程序的发布和软件的许可[注28]。所以说,对于要研究和借鉴源代码的软件人员来讲,能选用BSD开放源代码软件库中的软件是最合适不过的。
四、开放源代码软件许可证给我们的几点启示
(一)、开放源代码软件许可证的特点小结
前面我们分析了GPL、LGPL、MPL、BSD许可证。除此之外,还有NOKIA许可证、MIT许可证、APPLE许可证等等,通过对比研究我们可以发现,由于要达到向社会贡献源代码的目的,这些开放源代码软件许可证有许多的共同点,主要体现在以下几点:
(1)、开放源代码软件许可证都会规定在被许可人接受本许可证获得源代码之后,有将源代码再发布的义务,以促进开放源代码运动。
(2)、开放源代码软件许可证都有一个“不担保”(即No Warranty)条款。 由于源代码程序准予免费使用,在一般情况下,对程序没有担保。除非另有书面说明,版权所有者或其他提供程序的人们“一样”不提供任何类型的担保。不论是明确的,还是隐含的。包括但不限于隐含的适销和适合特定用途的保证。全部的风险,如程序的质量和性能问题都由被许可人来承担。如果程序出现缺陷,被许可人承担所有必要的服务,修复和改正的费用。
(3)、开放源代码软件许可证都会规定一些关于修改、复制和再发布的条款,目的也是在保证初始人权利的前提下,尽最大可能向社会贡献源代码。只是各许可证对授予被许可人的各项具体的权利略有一些差异,这可能与“开放源代码首创行动组织”OSIA对开放源代码软件许可证的认定只有原则性的规定有关。
至于不同点,只在于向被许可人授予的权利方面有比较细微的差异,为了便于表明几种开放源代码软件许可证之间的区别,我们用下面的表格表示出来:
是否允许可以同其他非开放源代码软件代码混合 是否可以将对源代码的修改不公开 是否可以不加任何限制的任意再许可
GPL许可证 否 否 否
LGPL许可证 是 否 否
BSD许可证 是 是 否
NPL许可证 是 是 否
MPL许可证 是 是 否
APACHE许可证 是 是 否
(二)、按规则办事
我们前面用了很大篇幅介绍开放源代码运动、许可证的认定和几种开放源代码软件许可证,目的就是能够让我们了解一下国际上关于开放源代码软件发展的规则。目前,我国的开放源代码软件也正处于一个大发展的阶段,但是我们一定按规则办事,这里所谓的按规则办事主要是指两个层面:
一是指我们的开放源代码软件的发展不能闭门造车,尤其在开放源代码的首次发布时,要重视开放源代码软件许可证。我们既可以借鉴国外成功的开放源代码软件许可证,也可以自己拟订开放源代码软件许可证,通过OSIA的认定,让自己的许可证版本列入到OSI计划认定的许可证中,以扩大我国开放源代码软件的名声。再进一步讲,等我们开放源代码软件发展到一定程度,我们可以充分借鉴OSIA的发展经历以及OSI证明商标的战略,制定有关标准,发展开放源代码软件产业。
第二个层次是指我们在使用人家的源代码,一定要遵循规则。别人发布出来的源代码不是不能用,关键要看怎么用,使用一定要遵循规则,这个规则就是许可证上规定的权利和义务。我们绝不能一味蛮干甚至擅自据为己有,那样不仅是违约行为,还会让国外同行耻笑。
(三)、在规则允许前提下从开放源代码软件中发掘垄断性权利的思考
由于开放源代码软件的商业化是比较特殊的,因此许多人在考虑通过源代码获取经济利益的途径。在前面刚刚谈到要按规则办事,因此,在本节中,我们在分析开放源代码软件许可证的基础上,提出我们的几点意见:
(A)、源代码初始提供人的可以使用的措施
以GPL许可证来说,GPL许可证是开放源代码软件许可证领域里要求最严的一种许可证,因为GPL要求任何对原源代码的修改等行为产生的整套源代码都必须按照GPL许可证的要求进行发布。这就为想通过GPL发布的源代码进行商业软件开发的人提供了一个很大的难题,至于被许可人有无可能绕开这一限制,将在下一段里具体讨论,在这里,我们站在第一许可人的角度,考虑有什么办法在进行对外的源代码的GPL许可的同时,还保障自己一定的经济利益。
虽然说开放源代码是一种软件精神的宏扬,但对于贡献源代码的人来讲,在贡献源代码的时候基本上是无任何经济收入,那么贡献源代码的人如果想获得经济利益怎么办呢?下面,我们将源代码的贡献者称为第一许可人,探讨以下获利的途径:[注29]
第一种办法是将源代码同硬件结合,虽然GPL要求第一许可人将程序的源代码公开,但是并不禁止第一许可人在硬件中加入含有源代码程序,这样,通过硬件的销售,许可人是可以获得经济利益的。比如Cygnus公司就是通过这样的硬件销售和维护方式获得经济收益的。
第二种办法就是第一许可人将自己的源代码库分成两个部分,一部分按照GPL许可证的要求,将源代码贡献出来,对于另一部分的源代码,可以将其经过TCP/IP加密后上网,这样,只有那些经过付费的人才能获得这部分源代码。
除了GPL许可证,其他许可证也允许这样做。
(B)、利用开放源代码软件开发具有知识产权保护的垄断技术的可行性分析
我们先以GPL许可证为例,因为GPL许可证是一个非常严格的许可证,它从软件的角度杜绝了几乎所有能够在开放源代码软件中添加商业专有知识产权垄断保护的可能性。任何厂商,如果想利用基于GPL许可证的开放源代码软件来进行软件开发,它必须将自己开发出来的新技术也公布于世,并且不能申请专利保护。那到底有没有办法即利用基于GPL许可证的开放源代码软件的技术来构造自己的产品,又能够绕过GPL许可证实现对自己的产品在竞争上的保护?
具体的想法是绕过GPL许可证对软件产品的发布限制,而在软硬件的结合上来限制可能的竞争对手来模仿自己的技术。
1、为什么要从"软硬件的结合"来入手
如果仔细的研究GPL许可证和LGPL许可证,就会发现这确实是一套非常严谨的法律文件,几乎从软件技术的角度是无法将开放源代码软件或其派生品纳入到专有知识产权的垄断之下的。
我们先看看GPL许可证对源代码的定义:作品的源码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的“原本”(原文为 “script”)。作为特殊例外,发布的源码不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序,内核等)。除非这些组成部分和可执行作品结合在一起。
我们再看看GPL许可证中对使用开放源代码软件库的限制中最“狡猾”的一个:一个通过编译或连接的形式与库一起工作,并且不包含从库的任何部分派生出的任何代码的程序,被称为“使用库的作品”。这种独立而且不是从库中派生出来的作品,不受本许可证条款的限制。然而,与“使用库的作品”相连接而创建的可执行程序是库的一个派生(因为它包括了库的一部分),而不是“使用库的作品”。因此该可执行程序要受到本许可证条款的限制。
由上面的内容可以看到,如果是想在软件的建构上来绕开GPL许可证是不太可能的。就我们的认识来讲,即便是费尽心思跟自由软件联盟GNU玩文字游戏,最终也很有可能是不得不向它低头。
也许会有人说,我还是有办法将自己基于开放源代码软件开发的技术封闭起来的,因为GPL许可证对操作系统上相对产品独立的编译工具是没有严谨的限制的,那就有可能在这个缺口上进行技术垄断。这一点我们不否认,因为是有一个实例的:有一个名叫coventive的公司,他们最开始就是用自己开发的编译工具将现成的Linux 内核做(原文是“Make”)成非常小的二进制产品,将其应用到嵌入式的领域,现在做的非常的好。对于这种“Make”的技术,GPL许可证是没有办法限制的,他们确实做到了保护自己的技术特色。但是这种方式不是长远之计,我们认为它有以下的局限性:第一,通过优化编译的途径不能改变(改善)软件的本质特性;第二,通过编译技术所保持的竞争优势会随着计算技术的硬件水平的进步而逐步削弱;第三,编译技术很难申请专利,即使作为商业机密保守的话也会因为技术发展空间有限最终失去竞争优势。因此这只能是权宜之计,不能作为开发产权保护的商用软件的根基。[注30]
由于特定的软件总是要和特定的硬件相结合才能够正常工作,也就是说,如果被许可人只是将源代码公布,而封闭自己的硬件标准,那么即使竞争对手得到了被许可人的源代码,由于没有硬件标准,具体的技术也是无法实现的。如果能够制定比较复杂的硬件标准,那么即使是由源代码逆推,能够在市场竞争允许的时间内得到硬件标准的可能性也非常的小。由于这种硬件标准的制定时要和软件产品紧密结合的,所以我们称这种方法为“软硬件的结合”,并且认为从这里入手可以在利用开放源代码软件的基础上开发具有知识产权保护的垄断技术。
2、如何从“软硬件的结合”入手,开发具有知识产权保护的垄断技术
说白了就是如何能够在利用开放源代码软件技术的基础上为自己开发出来的技术申请专利保护。在这里举一个例子,通过来表述一下思路。
甲公司开发出来一种防火墙系统,这种系统的软件部分大量采用了开放源代码软件中GNU的很多项目成果。由于这些项目成果都是遵循GPL许可证发行的,这就意味着甲公司必须把包含有他们大量心血的产品的所有源代码及相应的库,及其它GPL许可证规定的相关文档以规范的明示的形式完全向开放源代码软件的世界公开。甲公司的这套防火墙系统的硬件是自己设计的,而且采用了非常一种非常复杂的技术。设计者在系统中建立了一个实实在在的数据缓冲区,这个缓冲区同外界公网和内部局域网都没有永久的连结,而是通过在缓冲区两端断续接通的实电路接口来实现数据传输,并且保证任何时候只有一个端口接通。就是说,在一个确定的时刻,缓冲区要么和外部公网相通,要么和局域网相通。内部的局域网只能从防火墙系统的缓冲区内获得数据,永远是和外部公网断开的,而没有内部的请求外部的非法数据是无法通过缓冲区的,因此从外来侵入的角度最大程度保证了内部局域网的安全性。甲公司对自己的这套硬件设计标准申请了专利保护,并按照GPL许可证公开了这套产品的相关源代码。
虽然业界的人得到了这些源代码,但是和这些代码密切相关的硬件规范却被申请了专利而保护起来了,这样一来,利用GPL许可证产生的新技术并没有能够按照开放源代码软件的精神让别的技术同僚自由的学习,也没有被自由的传播开来。单单的看源代码,没有开放的硬件规范,那只能是像看天书一样的浪费时间而没有任何结果;如果要实现它的思想,或者是在这个技术的基础上作进一步的开发,就得使用它的专利,接受垄断思想的约束。
这就是从“软硬件的结合”入手,开发具有知识产权保护的垄断技术的一个比较简单的例子。要实现这个目标,要有以下三点必要条件:
第一,软件和硬件的相关程度非常的大,以至于如果没有了硬件的规范,很难读懂软件的源代码,很难理解软件的思想。
第二,所作的开发成果能够在GPL许可证的产品中发布,能够成为现有GPL许可证实现的计算机系统的一个部件和子系统。否则不光技术的开发很难继续进行,不能利用开放源代码软件的知名度也会使产品的推销成为公司的一大负担。
第三,垄断技术的开发者并不是从事软件制造业为主的(例如RedHat,BluePoint等),而是以提供服务为主。这是因为这类公司很难以发行开放源代码软件的价格来发行专用的商业软件,另外利用开放源代码软件的技术来开发商用软件很难保证在履行GPL许可证的义务同时保证自己的技术成果不被泄漏。