2007年6月29日,自由软件基金会(Free Software Foundation)发布了GNU GPL version 3,时隔16年,自由之剑再次升级。这是2007年自由软件社团的头等大事,影响深远。如果一个软件赋予了用户如下4个自由度,那么这个软件就是自由软件:
● 出于任何目的,运行软件的自由
● 学习软件如何工作,以及为了满足自己的需要修改软件的自由(显然,这个自由度的前提是能够访问软件的源代码)
● 为了帮助你的邻居和朋友,将你的软件拷贝给他的自由
● 为了能够让整个社团受益,公开发行改进之后的软件的自由(显然,这个自由度的前提是能够访问软件的源代码)
为了实现上述的理想,捍卫用户使用软件的自由,Richard Stallman在1983年发起了自由软件运动,以GNU(GNU's Not Unix)工程为核心,开发了大量优秀的自由软件,比如GNU Emacs, GNU GCC、GNU GDB等,最终的目标是要开发一个完整的、自由的操作系统:GNU Operating System。随着这些自由软件日渐流行,一个现实的问题摆在眼前:“如何保证已经发行的自由软件能够继续自由下去?”。如果不能解决这个问题,那么自由软件运动必将失败。这时,Richard Stallman创造性地发明了对称版权(copyleft)思想,并在1985年实现了第一个对称版权(copyleft)许可证,GNU Emacs General Public License,作为GNU Emacs的许可证。从那时起,每个自由软件都有自己的许可证,比如GNU GCC的许可证是GNU GCC General Public License。1989年,Richard Stallman合并了众多不同的许可证,这就有了GNU GPL version 1。两年之后,1991年,为了解决“软件专利”和“系统库”的问题,升级了GNU GPL version 1, 发布了GNU GPL version 2。
在GNU GPL version 2的守护之下,大量的优秀自由软件不断涌现,其中名气最大的就是Linux Kernel。并最终实现了最初的愿望,开发一个完整的自由的操作系统——GNU/Linux。从1991年起,GNU GPL version 2连续运行了16年,这充分说明GNU GPL version 2的前瞻性。在这期间,一些人从自由软件社团中分裂出来,发起了开源软件运动。并最终形成了今天的局面:自由软件、开源软件和专有软件。
在2007年,GNU GPL经历了16年以后的一次重要升级,发布了GNU GPL version 3。这次GNU GPL升级是一次艰难的自由之旅。事实上,在2005年底,自由软件基金会就启动了升级的程序,在更早的时候,Richard Stallman就开始思考和策划,最初的计划是最早在2006年9月发布GNU GPL version 3,最晚时间是2007年3月,期间经历3个草案版本。可最终的发布日期是2007年6月,经历了4个草案。下面我们用程序员和用户的语言来讨论一下GNU GPL version 3主要解决了哪些问题。
阻击数字霸权管理
从某些利益集团的角度出发,有人发明了数字版权管理(Digital Rights Management),用于保护他们的权利;从社会的角度出发,对于公众来说,这是数字霸权管理。版权的本质是限制,而不是保护。所以,300年前发明的版权法体系强调的是赋予人们的后天权利,而不是天然权力。随着数字时代的到来,越来越多的内容将以数字载体的形式出现。在进入数字时代之前,我们可以阅读到父亲留给我们的书籍,虽然这些书籍已¾¬购买了几十年,但还呆在家里的书架上,出版商没有冲进家门,夺走这些书,因为保留书籍是用户的权力。到了数字时代,有人正在努力剥夺用户的这一权力,具体的办法就是堂而皇之的“数字版权管理”。
在法律方面,已经开始有了配套的法律体系为DRM撑腰,比如:Digital Millennium Copyright Act(俗称“千禧年法案”)和European Union Copyright Directive。在这些法律的保护下,如果有人开发了违反DRM的软件,将会受到法律制裁。这是对软件开发者和自由软件的极大侵害。因此GNU GPL version 3要解决这一问题。
是的,GNU GPL不会(也不能)限制人们开发什么类型的软件,但可以阻止他人向自由软件里强加限制的行为。这就是解决DRM问题的思路。GNU GPL version 3的第3款指出:“当你发行GNU GPL version 3软件的时候,你将放弃禁止他人实施技术规避手段的法律权力”。这就意味着你可以免受类似DMCA法案的困扰。
禁止TIVO化(Tivoization)
Tivo是一个在美国流行的机顶盒设备,里面使用了GNU GPL version 2授权的软件。结果呢,Tivo通过其硬件设计,实现了拒绝运行修改过的软件。换句话说,Tivo只能执行Tivo公司发行的软件,拒绝执行用户自己修改后的软件。这使用户丧失了自由度0和自由度1。
为了解决这个问题,GNU GPL version 3要求厂商向用户提供必需的信息,以确保(用户)修改后的软件能够在(自己花钱购买来的)设备上正常运行。从用户的角度来看,这是一个朴素的要求。如果用户连自己花钱买来的设备都不能控制,而是被厂商控制,那么世界会变成什么样子?每个用户家里都被安置了一个特洛伊木马么?
防护来自软件专利的威胁
任何一个有实用价值的软件,都是一个复杂的系统,里面包括了大量的软件设计和实现。由于软件专利的大量存在,给软件开发者带来了巨大的法律风险。当我们开发一个复杂软件的时候,很难去一一确认自己的软件系统里是否已经触犯了某个现存的软件专利。因此,在某种程度上,软件专利制度正在限制软件产业的发展,这是一个制度性问题。不过,从竞争的角度来看,软件专利又为大公司提供了良好的法律武器,成为打压竞争对手的重要手段。
由于对称版权(copyleft)成功突破了专有软件公司的专有软件发行体系,因此专有软件公司越来越倚重软件专利来打击自由软件。在2006年底,微软公司和Novell签署了一项包括交叉专利保护在内的合作协¬议,并在此后声明Linux kernel侵犯了微软公司的软件专利。对此,自由软件社团要求微软公司指出Linux kernel侵犯了哪些软件专利,如果属实立即修改等等。对此,微软又表示不起诉相关的自由软件开发者云云。
这GNU GPL version 3给出的解决办法是:“在发行GNU GPL version 3授权的自由软件的时候,需要授予下游用户相应的一切软件专利使用权。另外,如果获得版权许可的人通过起诉来剥夺其他用户的相应权力,那么他们将被立即终止相应的版权权力”。
提升许可证的兼容性
清晰的许可证兼容策略,有助于简化开发者的工作。GNU GPL version 3和Apache License 2.0是兼容的,Apache License 2.0也是一个广泛使用的自由软件许可协¬议。因此这有助于自由软件社团内部的合作。图1是一个自由软件基金会提供的GNU GPL version 3的兼容性介绍,帮助大家理解许可证的兼容性:
箭头的传递代表着兼容性的传递,这种传递可以跨越多个箭头,比如:Modified BSD License与GNU GPL version 3是兼容的,以此类推。
全球化
不同国家的版权法在用词造句上各有不同,有的时候,即使是同一个词语,赋予的含义也是不一样的。对此,GNU GPL version 3做了一些术语定义,解决这些问题。
GNU GPL version 3还包括一些其他的修改,比如更加方便开发者提供源代码等等,篇幅有限,在此不一一阐述了。总得来说,从社会的角度来看,GNU GPL version 3在捍卫用户自由方面,向前又迈出了坚实的一步。GNU GPL的一小步是自由软件社团的一大步。
对于自由软件社团来说,2007年是风云变幻的一年,除了GNU GPL version 3发布,还发生了许多事情。以发生在中国的事情为例,2007年2月,哲思自由软件社区(ZEUUX Free Software Community)发起了《致招商银行的公开信》行动,首次将中国自由软件用户团结起来,争取用户自己的合法权益。2007年6月,倪光南院士撰文向微软OOXML宣战,拉开了文档格式标准之争的序幕。这一些列事件,昭示着自由软件运动的蓬勃发展,自由软件社团正在形成一股强大的力量影响着数字时代的未来!2007年已经过去了,我们很怀念。2008年已经到来,我们期待自由软件的更多精彩。
One World, One Freedom!
作者简介:
徐继哲,哲思自由软件社区创始人,该社区是中国大陆地区唯一专业的自由软件组织,与国际、国内自由软件组织有着广泛和深入合作,致力于在中国推广自由软件运动。http://www.zeuux.org
(本文来自《程序员》杂志0802期)
(责任编辑:A6)