什么是自由软件?自由软件强调的是用户的自由,而不是价格。简单来说,如果一个软件赋予了用户如下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。2年之后,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的前瞻性,随着整个IT环境和社会环境的不断变迁,经受了16个年头的考验。在这期间,一些人从自由软件社团中分裂出来,发起了开源软件运动。并最终形 成了今天的局面:自由软件、开源软件和专有软件。
社会环境不断变化,早晚有一天会出现GNU GPL的运行版本无法应对新出现的威胁用户自由的挑战,这时就要升级GNU GPL。在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的前2个版本都是Richard Stallman自己撰写,然后小范围内讨论一下,就发布了。而GNU GPL version 3升级是一次面向社会的公开过程。为什么呢?显然,GNU GPL已经是应用最广泛的软件许可证之一,其影响力已经渗透到产业的各个层面,因此其升级必将备受瞩目,同时饱受争议。GNU GPL本身是一个法律文件,对于绝大多数人来说,其措辞是晦涩的,但应用的主要对象恰恰是缺少法律知识的程序员和用户,因此,下面我们用程序员和用户的语 言来讨论一下GNU GPL version 3主要解决了哪些问题。
1、阻击数字霸权管理
从某些利益 集团的角度出发,有人发明了数字版权管理(Digital Rights Management),用于保护他们的权利;从社会的角度出发,对于公众来说,这是数字霸权管理(Digital Restrictions Management)。(从社会的角度来说)版权的本质是限制,而不是保护。所以,300年前发明的版权法体系强调的是赋予人们的后天权利,而不是天然 权力。随着数字时代的到来,越来越多的内容将以数字载体的形式出现(而不是传统的载体),比如:电子书越来越流行;MP3各式的音乐越来越流行;维基百科 越来越流行等等。在进入数字时代之前,我们可以阅读到父亲留给我们的书籍,虽然这些书籍已经购买了几十年,但还呆在家里的书架上,出版商没有冲进家门,夺 走这些书,因为保留书籍是用户的权力。到了数字时代,有人正在努力剥夺用户的这一权力,具体的办法就是堂而皇之的“数字版权管理”。现在数字霸权管理技术 正在开始普及,而用户还没有来得及思考这一问题,现实总是这么残酷。
在法律方面,已经开始有了配套的法律体系为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法案的困扰。
2、禁止TIVO化(Tivoization)
Tivo是一个在美国流行的机顶盒设备,里面使用了GNU GPL version 2授权的软件。结果呢,Tivo通过其硬件设计,实现了拒绝运行修改过的软件。换句话说,Tivo只能执行Tivo公司发行的软件,拒绝执行用户自己修改 后的软件。这使用户丧失了自由度0和自由度1。
为了解决这个问题,GNU GPL version 3要求厂商向用户提供必需的信息,以确保(用户)修改后的软件能够在(自己花钱购买来的)设备上正常运行。从用户的角度来看,这是一个朴素的要求。如果用 户连自己花钱买来的设备都不能控制,而是被厂商控制,那么世界会变成什么样子?每个用户家里都被安置了一个特洛伊木马么?
3、防护来自软件专利的威胁
任 何一个有实用价值的软件,都是一个复杂的系统,里面包括了大量的软件设计和实现。由于软件专利的大量存在,给软件开发者带来了巨大的法律风险。当我们开发 一个复杂软件的时候,很难去一一确认自己的软件系统里是否已经触犯了某个现存的软件专利。因此,在某种程度上,软件专利制度正在限制软件产业的发展,这是 一个制度性问题。不过,从竞争的角度来看,软件专利又为大公司提供了良好的法律武器,成为打压竞争对手的重要手段。
由于对称版权 (copyleft)成功突破了专有软件公司的专有软件发行体系,因此专有软件公司越来越倚重软件专利来打击自由软件。在2006年底,微软公司和 Novell签署了一项包括交叉专利保护在内的合作协议,并在此后声明Linux kernel侵犯了微软公司的软件专利。对此,自由软件社团要求微软公司指出Linux kernel侵犯了哪些软件专利,如果属实立即修改等等。对此,微软又表示不起诉相关的自由软件开发者云云。
这是专有软件公司典型 的心理恐吓战术(FUD),通过软件专利,专有软件公司不断威胁自由软件社团。对此,GNU GPL version 3给出了解决办法:“在发行GNU GPL version 3授权的自由软件的时候,需要授予下游用户相应的一切软件专利使用权。另外,如果获得版权许可的人通过起诉来剥夺其他用户的相应权力,那么他们将被立即终 止相应的版权权力”。这就保护了开发者和用户,以免有人试图铤而走险起诉他人。
4、提升许可证的兼容性
当开 发者试图将一个自由软件的一部分代码融入另外一个自由软件的时候,需要考虑的问题之一就是这2个自由软件的许可证是否兼容。清晰的许可证兼容策略,有助于 简化开发者的工作。GNU GPL version 3和Apache License 2.0是兼容的,Apache License 2.0也是一个广泛使用的自由软件许可协议。因此这有助于自由软件社团内部的合作。下面是一个自由软件基金会提供的GNU GPL version 3的兼容性介绍,帮助大家理解许可证的兼容性:
图例:GNU GPL version 3兼容性介绍
箭头的传递代表着兼容性的传递,这种传递可以跨越多个箭头,比如:Modified BSD License与GNU GPL version 3是兼容的,以此类推。
5、全球化
不同国家的版权法在用词造句上各有不同,有的时候,即使是同一个词语,赋予的含义也是不一样的。对此,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宣战,拉开了文档格式标准之争的序幕,最终微软的OOXML标准在首轮投票中失败,未能成为国际标准。2007年9月,软件自由日经过4年的 星星发展,已经在全球形成燎原之势,相比去年的北京一场,今年在中国北京、天津、南京、上海、厦门、广州、南宁、武汉、西安等许多城市同时举办了这一活 动。
这一系列事件,昭示着自由软件运动的蓬勃发展,自由软件社团正在形成一股强大的力量影响着数字时代的未来!2007年已经过去了,我们很怀念。2008年已经到来,我们期待自由软件的更多精彩。
One World, One Freedom!
说明:本文发表在《程序员》杂志2008年第2期。
暂时没有评论