二、GPL许可证

GPL许可证是General Public License的缩写。GPL许可证是自由软件联盟GNU的开源软件许可证的一种,是开源软件领域最负盛名的一种许可证,但同时,GPL许可证也是开源软件领域对被许可人权利限制最严格的一种。[1]

(一)GPL许可证概要

GNU自由软件之父Richard Stallman在倡导自由软件联盟计划时,从软件的版权许可协议入手,创设了一种与其开源软件发展相适应的“通用公共许可协议”(General Public License,GPL),凡想加入GNU的软件著作人都要接受这份许可协议,宗旨就是保证用户有无限复制和修改的权利。并且在GPL的导言部分中,对自由软件和知识产权的相关问题进行了论述。

1.GPL“自由”的法律含义

前面已经提过,开源软件这一定义的来源是从技术角度,而自由软件这一定义本身就是版权意义上的范畴。自由软件的“自由”体现为通过版权许可给予的自由,而不是自由的没有知识产权。也就是说,自由软件不是没有版权,它首先是承认软件的版权——软件有原始的版权所有者,然后纳入自由软件的版权许可约束,使每个人在维持该许可的条款不变的情况下,都有权复制、修改和发布软件或其衍生的工作,这就是所谓的自由软件的自由理念。Richard Stallman在《自由软件联盟宣言书》(《GNU Manifesto》)中有这样一段对知识产权的论述:“仔细研读过知识产权法律条款的人会发现,知识产权并不是一种固有的权利,现行的各种知识产权都是立法机构通过专门立法赋予的权利,所有的知识产权都是社会给予的许可。”[2]这是Richard进行自由软件发展工作的法律立足点,他要取得知识产权法上的论证,并且他认为知识产权是一种社会赋权,既然知识产权作为一种权利是立法上授予的权利,并且知识产权法也允许运用“许可”这种方法,通过契约的方式来变更和调整知识产权的权利人与使用者之间的权利义务,于是Richard从许可这一个角度着手,使自由软件的运作在不同于商业软件的运作,即扩大所谓的“自由”时,能有自己的法律依据——在承认版权的前提下,通过软件的版权许可来实现自由软件的自由权利的要求。

Richard反对使用“知识产权”这个词。他认为我们应该具体地说“版权”、“专利”或者“许可证”,因为这些东西各个国家有具体的法律定义。而知识产权则是一种模糊的抽象,没有具体定义。这个含混的名词不仅误导公众,给予专有软件厂商本来不该有的大众支持,而且让这些厂商有更大的机会控制市场。Richard特别建议发展中国家政府,千万不要建立《软件专利法》。因为这样的法律只会让发达国家的那些专有软件大公司霸占发展中国家市场,控制发展中国家的信息产业,控制发展中国家用户。

2.GPL与自由软件的版权许可

对于普通的商业软件,软件开发商与使用者之间一般都会设立软件使用许可协议,即“一般商业许可”(General Business License,GBL)。这种许可协议一般由开发商单方拟订,用户接受协议是使用软件的前提,而获得许可的前提是支付费用购买软件产品。许可条款一般按照版权法或专门的软件保护条例,或者通过双方合意达成略高于版权法和软件保护条例保护标准的软件许可使用条款。

对于这种显然不适合自由软件的GBL,Richard在倡导自由软件联盟计划时,从软件的版权许可协议入手,创设了一种与自由软件发展相适应的GPL许可证,凡想加入GNU的软件著作人都要接受这份许可协议,宗旨就是保证用户有无限复制和修改的权利。更有趣的是,相对于“著作权”(“Copyright”)这一名词,Richard新造了一个词,将这种许可协议叫做“Copyleft”。[3]GPL许可证在导言部分就明确了这项许可协议的法律立足点:(1)承认软件的版权;(2)提供这种许可协议以使获得授权的复制,散发和修改软件的权利。[4]GPL是自由软件著作人同意的保证任何人有共享和修改自由软件的许可协议,GPL有13条主要条款,其中社会公众作为被许可人享有最主要的4项权利:(1)为了任何目的运行该程序;(2)有自由获得源代码的权利,并在此基础上研究程序是如何运行的,并可为了个人的目的改变该程序;(3)有自由散发该复制件的权利;(4)有自由改进程序,并要求将自己的改进向公众公布的权利。由这些规定可以看出自由软件的权利人在保留权利的同时,已经在相当程度上向社会公众许可了复制权和修改权。同时GPL也规定社会公众有以下义务:用户在发布源代码和一切派生工作时不收费(除必要的工本费外),不附加其他条款,并必须附带GPL条款。这样任何人无论是否作了修改,都必须连带传递复制和修改这个软件的自由度,使得自由软件工作得到延续和认可。

GNU所采用的“自由软件”的称谓是一个版权意义上的范畴。自由软件认为软件的源代码应该是属于全人类的公共知识产权,应该在编制和使用程序的人之间自由地传播,而不应该是商人谋取利益的手段。对这一知识产权的任何限制最终都将造成发展的限制和阻碍。自由软件的倡导者们不是企图将别人的软件共化,他们的做法是将自己的软件作品纳入自由软件的范畴,贡献给全世界。GPL许可证是一种与传统知识产权概念截然不同的全新版权体系。它与传统的软件知识产权的不同在于:它保证任何人都有发布自由软件的自由(如果愿意,可以对此项服务收取一定的费用);保证任何人能够得到源程序或者在需要的时候能够得到源程序;保证任何人能够修改自由软件或将自由软件的一部分用于新的自由软件;而且还保证任何人知道他们能够做这些事情。为了保护这些权利,GPL许可证作出如下规定:禁止任何人不承认这些权利,或者要求其他人放弃这些权利。如果修改了自由软件或者发布了软件的副本,这些规定就转化为确定的责任。

当然,GPL许可证既然是一种软件知识产权的保护方式,它并不排斥软件开发者从软件中获取利益,只是盈利的方式有所改变:从过去依赖软件的销售,转向主要提供软件及信息服务。而且,现有商业软件嫁接到GNU/Linux等自由软件上时,也不一定非要公布源代码和提供免费,这意味着,自由软件可以与商业软件共存。

当使用商业软件时我们都会看到一个版权信息,它通常是说被许可人没有权利对被许可人买的软件进行、分销。至于理解和修改,因为根本就没有源码所以就无所谓“理解”和“修改”。毋庸讳言,在我们的身边,至今有人还未注意到有关版权的信息,因此,不知道我们究竟放弃了自己的哪些权利,而我们或许会为此付出代价。

其实,自由软件的本质不是免费,它是赋予使用者运行、散布、研究、改进软件的自由,并保证这些自由不会因为私有软件的介入而丧失:学习程序如何工作、修改使之适合被许可人的需要;散布,使被许可人和被许可人的邻居、朋友共享软件;改进程序,将被许可人的改进公之于众,使整个社会受益等权利。它的本质是“思想共享、知识共享、源码共享”,是非垄断,是鲜活的思想贡献。借助别人的优秀思想,加上被许可人自己独特思维使全社会受益。如果被许可人没有钱,被许可人可以通过免费的渠道,如从朋友处或通过因特网下载。如果被许可人很有钱,被许可人可以以捐赠的方式用高价购买,这一切取决于自己。

3.GPL与软件专利

作为软件生产大国和专利制度比较发达的美国,软件专利的数量也是很大的,软件专利的独占权与自由软件所倡导的“自由”精神格格不入,Richard的GNU计划书中还专门提到了这一点。他认为“自由软件面对的最大威胁就是软件专利”。由于美国对软件专利这样的独占权的保护期长达17年,这显然与“自由”精神抵触,另外更重要的就是由于自由软件在发布、改进过程中融入了许多人的劳动,多多少少有可能涉及自由软件所最不愿意遇到的所谓软件专利侵权诉讼。比如说,LZW公司1983年申请的一个压缩技术的专利,导致自由软件联盟GNU涉及生产该压缩制品的自由软件迟迟不能在网上发布,在1998年,一个生产MP3压缩音响制品的自由软件又被停止在网上的发布,因为可能面对软件专利侵权的诉讼。目前对付这种软件专利侵权诉讼的方法也就是两个:一是申请宣告该专利无效;二就是寻找其他的替换方法去实现自由软件发布的目的,但这些又似乎都是不得已而为之的对策。不光是GNU的开源软件遭受过软件专利诉讼,MIT的开源软件X Windows系统遭到了AT&T公司的诉讼,X Windows系统被控侵犯了其4,555,775号专利。该专利包括在一个允许多个进程拥有窗口的窗口操作系统中“后援存储”技术的使用。当一个窗口的内容被另一个活动的窗口遮盖住的时候,将被遮盖窗口的内容存储于屏幕之外的存储器中,一旦当前活动窗口消失,被遮盖的窗口可迅速回复,这就是“后援存储”技术。事实上。MIT早在Lisp机器系统上就使用了“后援存储”技术,这甚至比AT&T利用这项技术的时间还早。但是,由于MIT的软件人员认为这项技术太普通了,而没有公开发表。AT&T的专利申请被专利机关批准,使得MIT不能再使用这项技术。[5]

一旦将一项软件技术申请为专利,他人即使是独立思考和完成的软件,只要涵盖专利的必要技术特征,就不得使用,否则构成侵犯专利权。软件公司所开发的软件,在不知不觉中就成了侵犯专利权的牺牲品。鉴于此,许多软件组织已发出了反对软件专利的呼声。

GNU的自由软件受到专利的威胁来自两个方面:一是不受GPL约束的第三人拥有某项软件专利,而自由软件的原始开发者或后续修改者在程序或其衍生作品上同样使用了这项技术;二是自由软件的再发布者以个人名义将自由软件中的某项技术获得专利,事实上将自由软件变为私有。对于后一个专利问题,GPL有权力约束专利申请人,GPL明确地规定:要么申请到专利后允许任何人自由使用(这等于没有专利),要么不准许有专利。对于第一个专利问题,GPL许可证是无权约束专利权人的,而且如果在该专利有效区域内发布该自由软件,可能会导致专利侵权责任。对于这个情况,GPL许可证作出了无奈的规定:在GPL的导言部分中,还专门有一项关于自由软件可否申请软件专利的条款:“鉴于任何自由软件时刻处于软件专利的威胁之下,我们希望能避免这种情况:自由软件的再传播者在实施过程中使得这项软件程序获得专利独占权,正是基于此目的,我们明确地要求承诺任何自由软件可以去获得专利授权的前提是一旦获得软件专利授权必须向所有的人以符合自由软件使用条件的标准许可使用该专利,否则就不可去申请软件专利”。GPL也考虑到了更为严酷的情况:在某些国家由于专利问题,自由软件的发布和使用受到限制。这种情况下,原始版权人可以增加限制发布地区的条款,将这些国家明确排除在外。针对开源软件本身,从这里可以看出GPL多少是排斥软件专利的。

(二)GPL许可证有关复制、发布和修改等权利的约定

GPL许可证适用于任何包含版权所有者声明的程序和其他作品,版权所有者在声明中明确说明程序和作品可以在GPL许可证条款的约束下发布。GPL许可证中对源代码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的“原本”(原文为:“script”)。作为特殊例外,发布的源码不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序,内核等)。除非这些组成部分和可执行作品结合在一起。[6]而“程序”是指任何这样的程序或作品。而“基于程序的作品”指的是程序或者任何受版权法约束的衍生作品,也就是说包含程序或程序的一部分的作品,可以是原封不动的,或经过修改的和(或)翻译成其他语言的(程序)。在GPL许可证中,翻译包含在修改的条款中,许可证条款不适用于复制,发布和修改以外的活动。运行程序的活动不受条款的限制。仅当程序的输出构成基于程序作品的内容时,这一条款才适用(如果只运行程序就无关)。

GPL许可证规定只要在每一副本上明显和恰当地出版版权声明和不承担担保的声明,保持此许可证的声明和不担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,被许可人就可以用任何媒体复制和发布被许可人收到的原始的程序的源代码,可以为转让副本的实际行动收取一定费用,也有权选择提供担保以换取一定的费用。

可以修改程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品,即版权法上所说的演绎作品。只要同时满足下面的所有条件,就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。[7]

a.必须在修改的文件中附有明确的说明:被许可人修改了这一文件及具体的修改日期。

b.必须使被许可人发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。

c.如果修改的程序在运行时以交互方式读取命令,就必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者被许可人提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。

如果能够确定作品的一部分并非程序的衍生产品,可以合理地认为这部分是独立的,是不同的作品。当将它作为独立作品发布时,它不受此许可证和它的条款的约束。但是当将这部分作为基于程序的作品的一部分发布时,作为整体它将受到GPL许可证条款约束。准予其他许可证持有人的使用范围扩大到整个产品,也就是每个部分,不管它是谁写的。

因此,GPL许可证这项条款的意图不在于索取权利或剥夺全部由被许可人写成的作品的权利,而是履行权利来控制基于程序的集体作品或衍生作品的发布。此外,将与程序无关的作品和该程序或基于程序的作品一起放在存贮体或发布媒体的同一卷上,并不导致将其他作品置于此许可证的约束范围之内。

GPL许可证允许以目标码或可执行形式复制或发布程序(或符合GPL许可证第2条的基于程序的作品),只要被许可人遵守下面的条款:

a.在通常用作软件交换的媒体上,和目标码一起附有机器可读的完整的源码。这些源码的发布应符合上面条款的要求,或者

b.在通常用作软件交换的媒体上,和目标码一起,附有给第三方提供相应的机器可读的源码的书面报价。有效期不少于3年,费用不超过实际完成源程序发布的实际成本。源码的发布应符合上面的要求。或者

c.和目标码一起,附有被许可人收到的发布源码的报价信息(这一条款只适用于非商业性发布,而且只收到程序的目标码或可执行代码和按b款要求提供的报价)。

如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问和复制源码可以算作源码的发布,即使第三方不强求与目标码一起复制源码。除非明确按许可证提出的要求去做,否则被许可人不能复制、修改、转发许可证和发布程序。任何试图用其他方式复制、修改、转发许可证和发布程序是无效的。而且将自动结束许可证赋予被许可人的权利。然而,对那些从被许可人那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。[8]每当重新发布程序(或任何基于程序的作品)时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制,发布或修改程序的GPL许可证。[9]

总之,GPL有三个重要的限制:(1)用户不可以在使用一个受GPL许可证保护的软件基础上,加入一些专有软件,构成一个更大的软件。也就是说,一个GPL软件的所有部件都必须遵循GPL的规定。(2)用户不可以将一个GPL软件加以修改(比如加上了自己创造的软件),然后将修改的部分变成专有软件。也就是说,用户的创造或增值软件应该公开给社会共享。(3)GPL软件的用户不可以修改这个软件的GPL许可证。

有很多支持开放源码的软件人员认为GPL许可证的限制太严了,不利于开源软件的普及。比如,GPL许可证的第1条限制,就使得GPL软件不能与其他软件一起使用。电脑中有一类软件,称为库函数(Library,简称库),它们是人们常常用到的一些底层小型软件。比如计算基本数学函数(sin,log等)的数学库。专有软件厂商一般都会自动提供这些库函数,而GPL软件可能还来不及提供,或效率不够好。如果去除第1条限制,允许GPL许可证下软件和专有软件混合使用,将能增加GPL软件的使用面。LGPL许可证(Library General Public Licence)就是在这样的背景下诞生的。它去除了GPL的第1条限制,允许GPL软件使用专有的库软件。这样,用户可以使用一个GPL编译器,但这个开放源码的编译器可以调用一个专有的数学库软件。

[1] GPL许可证原文见http://www.gnu.org/copyleft/gpl.html,最后访问时间:2005-6-24。

[2] GNU宣言书(GNU Manifesto)网页:http://www.gnu.org/gnu/manifesto.html,最后访问时间:2005-6-24。

[3] Copyleft定义见http://www.fsf.org/,最后访问时间:2005-6-24。

[4] “通用公共许可协议”(General Public License,GPL)的具体文本见http://www.gnu.org/copyleft/gpl.html,最后访问时间:2005-6-24。

[5] 陈际红:《GNU GPL的规则与Linux在中国的发展》,http://www.netlawcn.com/member/chjh/0001.htm,http://www.netlawcn.com/second/content.asp?no=386,最后访问时间:2005-6-24。

[6] GPL许可证中对源代码的定义见第3条第3款。

[7] 见GPL许可证第2条。

[8] 见GPL许可证第4条。

[9] 见GPL许可证第6条。