法艺花园

标题: 软件开发与GPL[1]的法律探析 [打印本页]

作者: [db:作者]    时间: 2014-4-5 07:32
标题: 软件开发与GPL[1]的法律探析
李成蹊               

在当今世界,计算机产业在全球信息化的背景下,可谓如日中天,与之密切相关的计算机软件产业较之计算机硬件日新月异的升级换代毫不逊色,称得上炙手可热。计算机软件产业的蓬勃发展,引发诸多新的法律问题。特别是近年兴起的开放源代码软件方兴未艾,以其不同凡响的品质和运作模式,在越来越广泛地得到应用的同时,也引起法律界越来越多的关注。特别是最近美国THE SCO集团警告Linux用户企业“侵犯了UNIX的知识产权”,因此企业利用开放源代码软件时的合法性进一步受到关注。虽然销售开放源代码软件本身很难成为商业模式,但是目前市场上已经出现了与服务组合而成的多种商业模式,这些商业模式包括:基于开放源代码软件的客户服务、培训服务、技术托管外包服务等。而开放源代码软件商业化最关键的问题是如何解决知识产权问题。
计算机软件是一个人机交流的控制系统,软件是整个计算机系统中控制计算机,具体实现用户需要的各种功能的核心部分。计算机软件是程序、数据及相关文档的完整集合。其中程序是按事先设计的功能和性能要求执行的指令序列,数据是使程序能正常操纵信息的数据结构,文档是与程序开发、维护和使用有关的图文材料。简而言之,计算机软件是人与计算机交流的媒介,是用户操纵计算机完成一定工作任务的工具。
本文着力从计算机软件开发过程入手,分析软件开发的法律特征,以及与之相关的《GNU通用公共许可证》(GPL)法律问题。
一、软件开发的特点及其法律分析
1、软件是一种逻辑实体,而不是有形的物质实体。软件权利本身属民法的无形财产权,是知识产权的一种。计算机软件是通过确定软件目标、制定实施方案、实施软件开发,使计算机完成某一特定的功能的过程,从软件开发的这一功能性、新颖性特征上讲,适宜于用专利权进行保护;另一方面,计算机软件本身的表达类似于数学公式,其内容也由符号和数字构成,特别是目标代码均由二进制或十六进制的数码构成,符合著作权中的“作品”属性,也适用于用著作权进行保护。如何对计算机软件的知识产权进行保护,自上世纪50年代,特别是自1965年奥尔施莱格在联邦德国《工业产权与版权》杂志上发表“计算机应当和可能受保护吗?”一文之后,如何保护和适用何种法律来保护计算机软件成为世界各国法律界、产业界一直争论不休的问题。由于软件是带有“作品性”和“技术功能性”的特殊的知识产权客体,所以究竟用版权法还是专利法保护成为多年来争论的关键。自1972年菲律宾在版权法中规定软件版权之后。各国家纷纷将软件列入版权法保护范围。WIPO在1978年和1983年分别推出《保护计算机软件示范法条》和《计算机软件保护条约》草案,建议以版权法保护计算机软件。但是由于软件著作权保护方式的不足,使用专利法作为来保护软件知识产权的做法也在司法实践存在,并且大有专利保护扩张的趋势。当前各国普遍采用以《伯尔尼公约》为代表的著作权保护方式对软件的知识产权进行保护方式。计算机软件著作权的内容主要有发表权、署名权、修改权、复制权、发行权、出租权、信息网络传播权、翻译权及应当由软件著作权人享有的其他权利。按对用户的权利许可程序不同,软件大致可分为:商业软件、共享软件、自由软件、免费软件等。
2、软件运行的需维护性。计算机软件在运行过程的故障率较高,需要大量的维护工作。任何机械、电子设备在运行和使用过程中,其故障率大致遵循如图1所示的U型曲线。而软件的情况与此不同,软件不存在磨损与老化问题,其理想故障率如图2所示的L型曲线。但软件的实际故障率曲线是如图3所示的带锯齿状的L型曲线。
这是由于软件要解决的问题的复杂性和程序本身逻辑结构的复杂和隐蔽性,而软件的编写依赖于人(程序员)的认知能力和智力、知识水平以及当时的技术水平等条件的限制,在编制软件阶段不可能克服所有的问题。加之,软件的运行故障具有隐蔽性,即使有最好的质量保证机制,软件设计中的缺陷在所难免,在实践中,为解决这些软件故障,往往通过编写程序补丁的方式来进行,我们经常听说的“XXX程序补丁”即是此类。
从图3所示软件运行的故障率可以看出,较传统的工业技术而言,软件运行的故障率呈波动状态,这就决定了软件运行需要大量的维护工作。另一方面,随着时间的推移原来的软件运行环境发行了变化(如操作系统的升级),软件也有适用性维护的需要。
3、从软件模型分析软件开发的特点。
在编制软件的过程中离不开软件模型,软件模型主要有:瀑布模型、演化模型、螺旋模型、喷泉模型等,我们主要从螺旋模型(见图4)对软件的编制过程进行系统的分析,软件开发大体包括四个阶段:制定计划、风险分析、工程实施、客户评价。
软件模型是程序员的设计思想的具体外化表达过程,是一个软件作品的创作过程。沿着螺线旋转,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,在制定计划阶段,程序员需要确定软件目标,选定实施方案,弄清项目开发的其他条件等。再经风险分析,分析所选方案,考虑如何识别和消除风险;实施工程软件开发,最后是评价开发工作,提出修正建议的客户评价阶段。
(1)软件开发的衍生性。
软件模型的衍生性特点会产生大量的改进软件和新软件,也就是说包含程序或程序的一部分的作品。GPL中也明确指出:“所提到的‘基于程序的作品’是指的是程序或者任何受版权法约束的衍生作品。”软件的编制沿螺线自图中标出的A点开始内向外旋转一圈时,由需求计划(一个想法)开发出了一个软件,这是最初的软件作品,该作品包括一个思想和思想的软件表达形式,已具备著作权的基本要素。想法已变成了软件作品,但软件开发并不会到此为止,以后每当没螺线旋转一圈便会开发出更为完善的一个新的软件版本。并且,在整个过程中软件的修正和客户评价是不可缺少的,事实上,因为客户需求的千差万别,永远不可能有最终完善的软件版本,软件总是在不断地改进和推出新的版本。此螺旋会无休止地旋转下去,由众多不同的程序员编写出改进软件和其他软件,特别是在源代码公开的情况下,更是如此。
改进软件和新软件(后续软件)与原有软件的版权冲突或其他权利冲突,如专利权的冲突在所难免。软件的开发与维护,特别是后续开发,往往涉及到不同的民事主体,涉及诸多知识产权的归属、许可等法律问题。软件维护和后续开发,是对已有软件进行编辑、修改的演绎行为,从著作权的角度,后续开发人对后续软件享有著作权,但在行使该著作权时不能侵犯在先权利人的权利。由于软件开发的衍生性,这些权利的边界往往十分模糊,加之现行法律规定过于原则,而在实际的权利冲突中,往往不仅涉及版权,还会涉及到专利等其他法律问题,尤其是再涉及到GPL软件,使软件开发的法律关系更趋复杂。
(2)软件维护和后续开发依赖源代码。计算机目标软件的维护要通过修改源程序(源代码)来进行,后续开发也要依赖于源代码来完成。计算机程序通常包括源程序(源代码)和目标程序(目标代码),源程序通常是软件程序员用计算机高级语言编写而成,源程序(源代码)经过编译成为计算机可直接运行的目标程序(目标代码)。软件程序员开发软件的主要工作在于按用户需求编写出源程序,再将源代码编译成可在计算机上直接运行的目标程序。我们如果把源代码比喻成一副中药配方的话,目标程序就是按这配方熬制的药汤,药汤能够治病,但我们一般不能从药汤直接看出中药的配方一样,目标程序(我们通常所说的软件)能满足客户的需求,但其维护和后续开发则需要像了解中药配方一样,了解其源代码。
4、开放源代码有强大的纠错能力。上文已经论述过软件故障的易发性和隐蔽性,及软件的维护和后续开发在很大程度上要依赖于源代码进行。因为源代码的开放,一方面任何地方和任何用户都可以方便地使用、复制、修改这些软件,另一方面又都参与了软件的纠错和维护,因为源代码的开放,也将程序中的错误公开给了数量巨大的用户,单个个体的创新观念能迅速地被整个社会所共享,能最大限度地利用社会分散资源,高效率地维护和衍生开发出大量新软件。大多数开放源代码软件都遵循《GNU通用公共许可证》协议,下面本文就软件开发涉及到GPL协议等法律问题作具体论述。
二、软件开发涉及GPL协议的法律探析
(一)GPL(《GNU通用公共许可证》)之特点
GPL是自由软件基金会发布的一个软件授权许可证,全称是《GNU通用公共许可证》(GNU General Public License),1989年发布第一版,现通行的是第二版(1991年6月版)。本文前面已经论述,源代码对计算机软件维护和后续开发的重要性,而绝大多数开放源代码软件的授权方式是GPL。因此,商业化开放源代码软件首要就是彻底理解GPL,由于GPL是在欧美知识产权法之上产生并用英语写成,其内容也有很多不明确的地方,因此用户在使用时往往会感到不安。
GNU是Richard Stallman提出的一个自由操作系统的开发计划,该开发计划依托自由软件基金会(Free Software Foundation)。自由软件基金会(FSF)致力于消除对计算机程序在复制、分发、理解和修改方面的限制。自由软件基金会致力于开发新的自由软件,以及将这些软件构造成为一个协调一致的系统。除了开发GNU之外,FSF还分发以CD-ROM为载体的GNU软件拷贝和手册,只收取分发费用,它还接受免税的馈赠以支持GNU的开发。FSF的大多数资金来自它的软件分发服务。所有的 GNU 软件和派生作品均适用《GNU 通用公共许可证》(GPL)。自由软件库的内容主要包括操作系统、语言系统、窗口系统、网络支持、编辑器、软件工程工具、文字处理和科学计算等各类应用软件。目前较为流行的Linux系统即属于GPL软件。
1、适用GPL协议的软件(以下简你GPL软件)作者享有软件版权。GPL采取两项措施来保护权利。(1)给软件以版权保护。(2)给你提供许可证。它给你复制,发布和修改这些软件的法律许可。即授予其他任何人以合法复制、发行和修改软件的权利。依《伯尔尼公约》第3条的规定,当作品完成之时,无论作品是否已经出版,都应受到该公约的保护,该公约第5条第2款明确规定,享有著作权的前提不以办理任何手续为前提。即公约成员国民的作品一经完成即按《伯尔尼公约》享有版权。GPL软件也同样适用这一原则,且GPL明确标明了版权所有。有学者认为GPL软件的版权是不完全版权。笔者不同意此种看法。GPL软件的版权人,在附条件(公开源代码)许可他人修改、复制、分放后,版权人自己的权利仍然是完整的。版权人自己仍享有署名、修改、复制、分放等权利。许可的行为是权利的非排他性许可,属权利的行使,而不是放弃。这一点正是GPL软件区别于无主物的关键所在。
3、GPL软件源代码开放,但与软件是否免费无关。“我们指的是自由而不是价格。我们的 GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时能得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。”可见,GPL软件可以自由修改、复制、发放,GPL本身未限制是否收取费用,用户可以免费获得,但并不是一定免费获得,这是GPL软件与免费软件的区别。免费软件通常指那些价格免费、允许分发,但不允许修改、复制的软件,这些软件不提供源代源,不是自由软件。电脑公司一般在出售电脑整机时预装或提供一些不要求客户支付对价的软件,免费软件虽然在价格上使用“free software”,但免费软件的意思是用户可以免费获得软件的使用权,但无权进行修改、复制。这种说法与GPL的“free software”的意义是不同的。
3、GPL软件中均含有GPL文本
GPL要求适用许可证的软件必须使用GPL协议,并附有GPL的文本。比如在 Linux 系统中,GPL文本存放于不同目录下的命名为 COPYING 的文件里。例如,键入 cd /usr/doc/ghostscript* 然后再键入 more COPYING 可查看 GPL 的内容。
4、对GPL软件进行分发仍需要适用GPL协议
GPL中以格式条款的形式明确了“如果你打算为了发布的目的修改,更新或改进任何受通用公共许可证约束的软件,你所修改的软件同样必须受到GNU通用许可证条款的约束。”可见GPL是附条件的许可。GPL在赋予了用户修改、复制、分发权利,也要求用户在发布GPL软件副本时,无论是否修改,也无论是收费的还是免费,也必须将一切权利给予接受者,必须保证其能收到或得到源程序。即用户获取GPL软件的许可是以承担向他人开放源代码等义务为条件的。
5、使用GPL的实用工具程序生成的目标程序也适用GPL协议
我们知道,软件的编制常常要借助一些实用的工具程序来进行,在使用这些工具程序时,同样要注意GPL版权方面的问题。适用GPL保护版权的不仅有大量的应用性的软件,也有许多实用的程序库和工具程序。如:GNU dbm、GNU bison等,程序员可以通过使用这些工具程序来开发、编制软件。但根据GPL所编制的软件也是自由软件。例如,使用 bison 生成代码,所得的代码也适用于 GPL,编制者也必须向用户提供源代码。
6、专利权的限制
为了避免GPL软件来自软件专利的威胁。GPL规定,自由软件的再发布者如果要以个人名义获得专利,则必须以允许该专利被每个人自由使用为前提。否则就不准有专利。这也是一个典型的格式条款,是许可方的单方意思表示,再发布人要么接受此条款,允许专利为每个人自由使用,要么不申请专利。
7、GPL不对软件提供担保,但也可以通过提供担保而获得报酬。PGL明确了“自由软件没有担保(no warranty)。如果由于其他某个人修改了软件,并继续加以传播。我们需要它的接受者明白:他们所得到的并不是原来的自由软件。由其他人引人的任何问题,不应损害原作者的声誉。”GPL软件作为自由软件明确不承担担保责任,也是对GPL软件自身权利的保护。因为软件故障的隐蔽和高发率的特点,在软件运行过程中需要大量的经常性的维护工作,软件运行的这一特点在本文已作论述。因为软件的这一特点也为GPL软件的商业维护和基于担保而获取报酬的商业运作,留下了获取报酬的空间。GPL同样规定“你可以通过提供担保获取报酬”。
(二)合理利用GPL进行软件开发,避免侵权。
实际上国内有很多用户采用了开放源代码软件和商用软件联合开发的思路,这样开放源代码软件的界限不明确。如果开发商将商用软件混入开放源代码软件中用户也难以发现,而这种情况事后会导致侵犯著作权的纠纷。在软件开发中,以不违反GPL协议的方式,既充分利用GPL软件资源,又避免侵犯GPL的合法版权。
(1)用替代软件的工具。避免侵犯GPL版权的方法有,开发商业软件或共享软件不使用GPL 的保护范围内的工具软件来编制程序。软件开发者为了不受GPL的约束,可以使用 GPL 的保护范围以外的工具软件来编制程序,以避免侵犯GNU的版权。
(2)假如准备以二进制的形式发布应用程序(像大多数商业软件那样),则必须确保自己的程序未使用 GPL 保护的任何软件。如果软件通过库函数调用而使用了别的软件,则不必受到这一限制。大多数函数库,受另一种 GNU 公共许可证 LGPL(GNU 程序库公共许可证)的保护。
(3)使用程序库。LGPL 允许在自己的应用程序中使用程序库,即使不公开自己的源代码。但是,LGPL 还规定,用户必须能够获得在应用程序中使用的程序库的源代码,并且允许用户对这些程序库进行修改。大多数 Linux 程序库,包括 C 程序库(libc.a)都属于 LGPL 范畴。因此,如果在 Linux 环境下,使用 GCC 编译器建立自己的应用程序,程序所链接的多数程序库是受 LGPL 保护的。如果想以二进制的形式发布自己的应用程序,则必须注意遵循 LGPL 有关规定。
(4)使用动态链接。遵循 LGPL 的比较好的一种方法是使用动态链接。使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体。通过动态链接,用户可以直接使用更新后的函数库,而不用对应用程序进行重新链接。
(三)GPL版权存在的几个问题。
1、在软件开发中不可避免地会存在GPL软件与非GPL软件混合使用的情况,按GPL协议,混合使用时所开发出的新软件也要遵循GPL协议,这样无形中扩大了GPL的适用范围,此时在先非GPL软件版权人的权利如何保护,在法律层面尚属空白,如果当事人达不成协议,则难以界定各方的权利界限。
2、GPL以版权保护为前提,版权保护要求独创性,保护作品的表达形式,并不保护思想内容,如果一个GPL的后续开发软件因为不能满足GPL的要求而不能发布(例如该后续软件拒绝开放源代码),只须做部分修改,使其在表现形式上与原表现形式“看起来”不同,就可不再受GPL约束。而在软件开发中这种的形式上的变化很容易实现,因为采取版权保护模式,又不能像专利侵权中那样按“等同原则”来进行实质审查。
结  语:软件开发是知识产权中技术方法和法律调整方式结合最为紧密的方面之一。GPL兴起使源代码的开放渐成趋势,因GPL软件所具有的易维护性、维护的高效性、后续开发的便利性,有必要从软件开发的特点入手,分析 GPL许可协议的法律特征,厘清专利、版权等法律关系,避免因侵权纠纷,降低软件开发的社会成本。充分利用GPL资源[29],促进软件产业的规模发展。
                                                                                                                                 注释:
            
1、  孙涌 《现代软件工程》北京希望电子出版社2002年8月
2、  王立福、麻志毅、张世琨《软件工程》北大出版社 2002年3月
3、  《计算机系统应用》2002年第5期
4、  吴汉东 主编《知识产权法》中国政法大学出版社2002年7月修订版
5、  曹建明 主编《知识产权审判与指导》2003年第1、2辑
6、  http://jeffwu.51.net/gnu/
7、  GNU通用公共许可证(GPL) 中文第二版
8、  张平、卢海鹰:“从拒绝保护到大门洞开纵论计算机软件的可专利性”载《中外法学》2001年第2期
9、  徐顺成:“中国软件产业的现状与未来”载《中国科技产业》2002年第1期
注释:
GPL(GNU General Public License)是自由软件基金会FSF(Free Software Foundation)发布的一个软件授权许可证,全称是《GNU通用公共许可证》。
GNU 是 GNU's Not UNIX 的缩写。它是自由软件基金会的一个项目,该项目的目标是开发一个自由的 UNIX 版本。
自由软件基金会(FSF)开发一个自由的 UNIX 版本,这一 UNIX 版本称为 HURD。尽管 HURD 尚未完成,但 GNU 项目已经开发了许多高质量的编程工具,包括 emacs 编辑器、著名的 GNU C 和 C++ 编译器(gcc 和 g++),这些编译器可以在任何计算机系统上运行。
http://www.qinyu.net/archives/000284.html
在本文有详述
张平、卢海鹰:“从拒绝保护到大门洞开纵论计算机软件的可专利性”载《中外法学》2001年第2期
吴汉东《知识产权法》中国政法大学出版社2002年7月修订版,第49页
程序的编制从软件项目需求定义直到软件使用后废止为止,针对系统开发、运作和维护所实施的全部过程称为软件模型。
指在软件开发过程中,基于一个已有的设计思路(或软件)会不断开发出不同的改进软件和后续新软件,本文姑且称之为软件的“衍生性”。
见GPL第二版中“有关复制,发布和修改的条款和条件”第0.条
即我们日常所见的,在计算机上使用的程序,如WINDOWS、杀毒软件等。这些程序通常是使用二进制代码编写的目标程序,能满足用户完成一定工作任务的需要。
http://www.qinyu.net/archives/000284.html
GNU 是 GNU's Not UNIX 的缩写。它是自由软件基金会的一个项目,该项目的目标是开发一个自由的 UNIX 版本,这一 UNIX 版本称为 HURD。尽管 HURD 尚未完成,但 GNU 项目已经开发了许多高质量的编程工具,包括 emacs 编辑器、著名的 GNU C 和 C++ 编译器(gcc 和 g++),这些编译器可以在任何计算机系统上运行。
麻省理工学院的Richard Stallman在80年代后期提出自由软件的概念,并基于此成立自由软件基金会(FSF)
自由软件基金会(FSF)主要通过帮助开发GNU操作系统的方式来实现这一目标。
Linux 的开发使用了许多 GNU 工具。Linux 系统上用于实现 POSIX.2 标准的工具几乎都是 GNU 项目开发的,Linux 内核、GNU 工具以及其他一些自由软件组成了人们常说的 Linux。
《GNU通用公共许可证》1991.6第二版
copyright (C)1989,1991 Free Software foundation,Inc.
《GNU通用公共许可证》1991.6第二版
还可以通过提供担保收取费用。
在这里必须区别“free”一词的双重含义:一是自由,二是免费
一般是二进制目标代码软件的拷贝,不含软件的源代码
http://jeffwu.51.net/gnu/gpllgpl.htm
GNU dbm(即 gdbm)数据库类的程序库是非常著名的 GPL库
GNU bison 分析器生成程序是一个实用的 GPL 编程工具
比如使用 Berkeley 数据库 db 来替代 gdbm;使用 yacc 来替代 bison。
GNU LGPL(GNU 程序库公共许可证)的内容全部包括在命名为 COPYING.LIB 的文件中,如果安装了内核的源程序,在任意一个源程序的目录下都可以找到 COPYING.LIB 文件的一个拷贝
遵循 LGPL 的一种方法是,随应用程序一起发布目标代码,以及可以将这些目标程序和受 LGPL 保护的、更新的 Linux 程序库链接起来的 makefile 文件。
GPL程序库的数量和内容十分丰富,中国自由软件库已存放了120G的自由软件,正计划升级至300G最终达到500G,内容包括操作系统、语言系统、窗口系统、网络支持、编辑器、软件工程工具、文字处理和科学计算等各类应用软件。                                                                                                                    出处:无出处




欢迎光临 法艺花园 (https://www.llgarden.com/) Powered by Discuz! X3.2