Linux、GNU和自由
Richard Stallman 著由于 Joe Barr 的文章批评了我对待SIGLINUX的做法,所以我要呈现事实真相,并阐述我的理由。
当SIGLINUX邀请我演讲的时候,它是一个“Linux用户组”;也就是说,一个GNU/Linux系统的用户团体,他们称整个系统为“Linux”。因此我礼貌地回复他们如果要让来自GNU工程的人为他们演讲,那么他们理应正确地对待GNU工程,并称呼该系统为“GNU/Linux”。该系统是GNU系统的一个变种,而且GNU工程是它的主要开发者,因此按照社区的传统,应该以我们选择的名字来称呼它。除非有重大的原因造成的例外,我通常会拒绝为不以此方式给予GNU适当荣誉的机构演讲。我尊重他们的言论自由,但我也有自由不演讲。
随后,SIGLINUX的Jeff Strunk尝试改变社团的政策,并且请求自由软件基金会将该社团列在我们的GNU/Linux用户组页面。我们的网站管理员告诉他,我们不会以“SIGLINUX”的名字把它列出,因为这个名字暗示了此社团是关乎Linux的。Strunk提议将名字改为“SIGFREE”,而我们的网管认为这样可行。(Barr的文章说我们拒绝了此提议。)然而,此社团最终仍决定维持“SIGLINUX”这个名字。
此时,这个问题再度引起我的注意,同时我并建议他们考虑其他可能的名字。为了避免称呼此系统为“Linux”,他们有许多的名称可以选择,并且我也希望他们可以选出一个他们喜欢的。就我所知,此事就此搁置了。
正如同Barr所写:这是真的吗?有人认为这些行为是一种可与微软的垄断相比拟的“强力行为”吗?也许吧。拒绝一项邀请不是一种压制,但是这些坚信整个系统是“Linux”的人有时候会发展出一种让人惊讶的扭曲观点。为了让这个名字看起来是正当的,他们必须将小丘视为大山,同时也把大山视为小丘。如果你能忽略事实,并且相信Linus Torvalds自1991年开始开发了整个系统,或者如果你能忽略你对于公正的原始信条,并且相信即使Torvalds并没有开发整个系统,他也应该单独获得此赞誉,那么你相信“在当你提出要求时,我欠您一次演讲”也只是一小步而已。
只要想一下:GNU工程开始了整个操作系统的开发,数年之后,Linus Torvalds加入了一个重要的部份。GNU工程说,“请平等地叙述我们的工程”,但是Linus却说,“不要让他们分享任何荣誉;单独以我的名字来称呼整个系统!”现在请想像这个人的心态:他看着这些事件并且指控GNU工程太过自我。需要强烈的偏见才能作出如此彻底的错误判断。
一个有偏见的人可以说有关GNU工程所有的不公平的事,并且认为自己是正当的;他的伙伴会支持他,因为他们需要彼此的支持来维护他们的偏见。反对者会被斥责;因此,如果我拒绝参与以“Linux”为旗帜的活动,他们也许会认为那是不可饶恕的,并且要我为他们随后感到的恶意负责。当这么多人要我称这个系统为“Linux”时,我这个只是开始了它的开发的人,怎么可能不同意呢?而且武断地拒绝一场演讲,就是强迫他们不高兴。那是一种压制,和微软一样糟糕!
现在,你可能在想为什么我不直接对这个议题充耳不闻并避开所有这些恼人的事。当SIGLINUX邀请我演讲的时候,我大可以说“不了,很抱歉”,那么这件事到此就结束了。为什么当时我不那样做呢?因为我乐意承担个人被污蔑的风险来获得一个为GNU工程正名的机会。
称呼这个GNU系统的派生版本为“Linux”的人,是那些基于技术优势来选择软件的人,他们并不在乎这软件是否尊重他们的自由。有像Barr这类型的人,他们希望软件“脱离意识形态”,并且批评任何说自由是重要的人。有像Torvalds这类型的人,会对社区施加使用非自由软件的压力,并且挑战任何人:或者立即提供(技术上)更好的程序,或者闭嘴。还有一些人说技术的决定不应当因为要考虑其社会后果而被“政治化”。
在70年代,计算机用户因为没能珍惜他们的自由而失去了重新散布和更改软件的自由。计算机用户在80以及90年代重新获得了这些自由,因为一群理想主义者,也就是GNU工程,相信正是自由让软件变得更好,并且愿意为了这个信仰而努力。
我们今天拥有了一部份自由,但是我们的自由并不安全。它受到由广播“保护”讨论群(参看www.eff.org/)组提出的CBDTPA(以前的SSSCA)法案的威胁,该群组提议禁止自由软件涉足电视广播,它所采取的方式有:软件专利(欧洲正在考虑是否要有软件专利)、微软关键协议的保密契约、以及每个以非自由软件“(在技术上)更好”来诱使我们远离可用的自由软件的人。如果我们不够关心如何去保护它,我们会像我们第一次失去它们一样地再次失去我们的自由。
关心的人够多吗?这取决于许多事情;其中包括,GNU 工程有多少影响力,Linus Torvalds 有多少影响力。GNU 工程说,“珍惜你的自由!”。Joe Barr 说,“仅在技术层面从非自由或自由软件中选择!”。如果人们认可 Torvalds 为 GNU/Linux 系统的主要开发者,那不只是不准确,而且也同时让他的讯息更具影响力——而那讯息是“非自由软件也行;我自己就在使用并开发它”。如果他们承认我们的角色,他们就会多听听我们,而我们给他们的讯息将是“这个系统之所以存在,是因为人们在乎自由。加入我们,珍惜你的自由,团结在一起我们就能保有它”。参看 GNU 工程 来了解相关历史。
当我要求人们称呼这个系统为GNU/Linux时,有些人以可笑的藉口和稻草人来回应。但是我们可能并没有失去什么,因为他们很有可能一开始就不友善。在此同时,其他人认可了我给出的理由,并且使用那名字。这样,他们就帮助其他人了解为什么GNU/Linux系统确实存在,进而也就提高了我们传播“自由是一个重要的价值”这一观念的能力。
这也是为什么我不会避开偏见、毁谤和苦恼的原因。它们伤害我的感情,但是一旦成功,这项努力将会帮助GNU工程为自由的奋斗。
由于这和Linux内核以及Linus Torvalds目前使用的非自由版本控制系统Bitkeeper有关,因此我也在此一并论述这个议题。
Bitkeeper议题
(参看下面的最后更新。)
使用Bitkeeper作为Linux源码的储存工具对于自由软件社区具有重大的影响,因为任何想要密切追踪Linux修定版本的人只能安装该非自由软件才行。肯定至少有数十或甚至数百名的内核黑客已经这么做了。他们之中大部份的人已经渐渐地说服了自己使用非自由软件是没有关系的,以避免在自己电脑上装有Bitkeeper带来的认知冲突造成的不良感觉。对此我们可以做些什么呢?
一个解决方式是为Linux源码设定另一个储存库,使用CVS或其他自由的版本控制系统,并设置新版本自动加载。这样可以使用Bitkeeper来对最新的版本进行存取,然后再将新的版本安装到CVS中。这种更新操作可以自动且频繁地运行。
自由软件基金会不能这样做,因为我们不能在我们的机器上安装Bitkeeper。我们的机器上现在没有非自由的系统或应用程序,而且我们的原则也是必须维持这种方式。运行Bitkeeper储存工具的操作需要某个愿意将Bitkeeper安装在他的机器上的人,除非有人可以找出或做出一个使用自由软件来运作的方式。
Linux源码本身有着更严重的问题:它们实际上包含一些非自由软件。相当多的设备驱动程序包含了代表固件程序的数组,它们会被安装在这些装置内。这些程序不是自由软件。在设备寄存器写入的数据是一件事;大量二进制代码是另外一回事。
在Linux“源码”文件中出现的这些只有二进制形式的程序,造成了另一个问题:那就是,Linux的二进制码到底是否可以合法地再发布。GPL要求“完备的相关源码”,而数字字符串并非源码。按照相同理由,添加这样的二进制码到Linux源码违反了GPL的规定。
Linux开发者有个项目是将这些固件程序转移到单独的文件中;该项目需要数年的时间才会成熟,不过当其完成时将会解决这个问题;我们可以作出一个“自由的Linux”版本,而其中不包括任何非自由的固件程序。但是如果大多数人都在使用非自由的“官方”Linux版本,那么该项目本身并没有什么用处。这很有可能发生,因为自由版本在许多平台上,如果没有非自由的固件都将无法运行。“自由的Linux”工程将不得不弄明白这些固件究竟做些什么,并且为它之编写源码,也许要以汇编语言为要运行的嵌入式处理器平台来撰写。这将会是件极其艰巨的工作。但是如果我们在早几年就开始一点一滴地进行,而不是等它堆积起来,它就不那么艰巨了。通过招募人员来进行这项工作,我们将不得不克服由某些Linux开发者所散播的观念:这件工作是不必要的。
作为内核的Linux通常被视为自由软件的旗舰,然而它目前的版本却有一部份是非自由的。为什么会这样?就像决定使用Bitkeeper的问题一样,这个问题反应出了Linux原始开发者的态度,就是认为“技术上更好”比自由更重要。
历史告诉我们:珍惜你的自由,否则你将会失去它。以“不要以政治来烦我们”作为回应的人,是那些不愿接受教训的人。
最后更新:从2005年起,Linux内核的源代码不再使用BitKeeper管理。参看文章,致谢Larry McVoy。Linux源代码仍然含有非自由的固件blobs,但是在2008年1月,我们维护了一个自由版的Linux,并被自由的GNU/Linux发行版使用。