标题:GNU计划 作者:Richard Stallman 来源:http://www.fsf.org/gnu/thegnuproject.html 翻译:江雄 <[email protected]> 1999年2月25日 版本:0.6
译后感
可以说GNU之父Richard M. Stallman这篇文章非常好地回答了一个经常被问到的 问题:“什么是GNU?”,因此尽管可能已经有人译出了全文,我仍然忍不住自 己译了一次,就当是一遍仔细的阅读。这遍细读没有白费,我澄清了自己很多以 前不太清楚的关于GNU自由软件的问题。
比如:
- GNU的历史和RMS的早期经历如何? - GPL和LGPL是什么,有何区别? - 我们仅需要自由软件就够了吗?关注自由 - 自由软件能否用于商业目的? - 开放源码和GNU的区别 - Qt和KDEm面临什么样的问题,GNOME和Harmony是怎么来的? - 自由软件为何不能使用GIF格式,为何gzip需要重写? - 软件专利对自由软件的威胁 - 为何需要好的自由文档? - GNU HURD是什么? - 完整的操作系统是怎么定义的?(甚至可以理解为“使人能够操作计算机的系 统”)
由于本人水平有限,译文中的有不少词语翻译得不是很恰当,语法毛病一定也不 少,不当之处希望大家协助改进,以形成一个比较完善的译本。谢谢。
名词翻译疑问: community 现译为社团 hacker 黑客,还有其它更确切的译法吗? free software 如何翻译?自由?免费?似乎应该倾向于前者 windows 一般意义上的 windows,如 X windows,Windows System, 译作窗口还是视窗? SASE 是什么词的缩写? Copyleft copyright 是版权,即出版权,copyleft 如何译呢?:) shell 如何翻译才顺口? philosophy 哲学,还是思想?
----------------------------------------------------------------------
版权
作为GNU文档的中译版本,此文的版权遵照GNU GPL的规定以及任何GNU GPL为文档
发行专设的条款。
因此你有权:
自由地阅读此文档。 自由地复制此文档,包括电子版或者生成纸制品拷贝。 自由地修改并再发行此文档。 自由地将其应用于商业目的,只要保持它的GPL许可条件不变。
----------------------------------------------------------------------
GNU计划
-- Richard Stallman, 发表在《开放源码》一书中。
最初的软件共享社团
当我1971年进入MIT的人工智能(AI)实验室工作的时候,我成了多年来就已经存在 的软件共享社团的一部份。软件共享并不局限于我们特定的社团;它就象计算机 一样古老,正如同菜谱共享和烹饪的出现一样古老。但是我们所做的远不止这些。
AI实验室使用了一种分时的操作系统ITS(非兼容分时系统),由实验室的黑客[注 1]职员设计并在当时的大型机Digital PDP-10上用汇编语言写成。作为这个社团 中的一员,一名AI实验室的系统黑客,我的工作是改进它。
当时我们的软件并未称为“自由软件”,因为这个词还没有出现;但事实就是如 此。当其它大学或者公司的人想要移植或者使用一个软件时,我们很高兴就让他 们用。如果看到有人用的是你不熟悉的、有趣的系统,你总是可以要求拿到源码 ,来亩痢⑿薷摹⒒蛘卟鹂哪?橛迷谀愕男鲁绦蛑小?BR> [注1]“黑客”这个词常用来意指“破坏安全者”,实际上是大众媒体导致的混淆 。我们这些黑客拒绝使用这种意思,而是用它来指代那些“热爱编程并且乐意使 用聪明技巧”的人。
该社团的瓦解
情况在八十年代Digital停产PDP-10系列的时候发生了急剧的变化。六十年代PDP -10优雅、强大的体系结构无法自然地过渡到八十年代认为是合理的大地址空间, 这意味着构成ITS的所有程序都过时了。
AI实验室的黑客社团在此不久后就瓦解了。1981年,迅速发展的Smbolics公司雇 用了AI实验室的几乎全部黑客,人数减少后的社团无法继续维持。(Steve Levy的 《黑客》一书记叙了这些事件,并清楚地描写了当时最初的黑客社团。)当AI实验 室在1982年购置一台新的PDP-10机器时,它的管理员决定使用Digital的非免费的 分时系统,而不是ITS。
当时的现代计算机,如VAX或者68020有它们自己的操作系统,但都不是免费的: 即使是获得一个可执行版本,你也需要签署保密协议。
这意味着,在使用一台计算机之前,你必须承诺不去帮助你的邻居。相互协作的 团体是不允许的。私有软件所有者的惯例是,“如果你和邻居共享软件,你就如 同海盗。如果你需要什么改进,乞求我们来做吧。”
这样一种观念也许会令一些读者吃惊:私有软件社会系统--声称你不能共享或者 修改软件的社会--是反社会的、不道德的、完全错误的。但是对这样一个分割大 众,令我们无助的社会,我们还能说什么呢?对这种观念吃惊的读者也许是对私 有软件社会已经习惯了,或者是在从私有软件工业的角度来判断它,软件出版商 花费了很长时间的艰难工作使人们确信这才是看问题的唯一方法。
[译注:好象我们并不会对这种观念感到意外。:]
当软件出版商谈到“加强”他们的“权力”或“阻止盗版”的时候,他们所说的 意思实际上是次要的,这种说法的真正意义隐含于他们认为当然正确的未明说的 假定中;期望公众无异议地接受它。那么,让我们来看看这些假定。
一个假定是:软件本身连带着勿容置疑的、与生俱来的、拥有软件和对所有该软 件用户的权利。(如果这是与生俱来的权利,那么无论他们对大众产生多大的损 害,我们都不该反对。)有趣的是,美国宪法和司法传统拒绝承认这种观点,版 权并非与生俱来的权利,而是人为的、政府强加的、限制用户拷贝软件的天然权 利的专利权。
另一个未明说的假定是:软件唯一重要的是他能让你做什么样的工作--亦即我们 计算机用户不该关心我们可以有什么样的社会。
第三个假定是:如果我们不对程序的使用者施加公司的权利,我们就得不到任何 能用的软件(或者,就无法得到完成这样那样工作的程序)。在自由软件运动显示 出我们不用镣铐锁上软件就能制造充足的有用软件之前,这个假定也许还有点道 理。
如果我们拒绝于接受这些假定,并以用户为第一位,从普通的、通常的道德角度 来判断这些问题,就会得到截然不同的结论。计算机用户应该能自由地修改程序 满足自己的需要、自由地共享软件,因为帮助其他人是社会的根本。
限于篇幅,这里不再探究这个结论背后的大量推证,请读者参考web网页 http://www.gnu.org/philosophy/why-free.html。
完全道义上的抉择
我所在的社团消失后,仍然一如继往是不可能了。我面临的是一个完全道义上的 抉择。
很容易做出的选择是加入私有软件世界,签署保密协议,承诺不帮助我的黑客同 道。很可能我也会在开发在保密协议保护下发行的软件,于是增加了迫使其它人 也背叛同道的压力。
这样我可以挣到钱,也许也可以拿编程来取乐。但我知道在我职业生涯之后,我 将回顾的是花费数十年时间来建造分隔人们的墙,会觉得自己毕生所做的事只是 把世界变得更坏。
当有个人拒绝给我和AI实验室提供我们打印机控制程序的源码时(在这个程序中缺 少某些功能,使用打印机非常令人丧气),我体会到接受保密协议后的感受。因此 我不能对自己说保密协议是无辜的。他拒绝和我共享之后我非常生气;我无法转 过脸来又对每个人都做同样的事。
另一个直接了当、但不愉快的选择,是离开计算机领域。这样我的技能不会被滥 用,但他们会被浪费。我不会因分隔阂限制计算机用户而负罪,但这种负罪感仍 然会发生。
因此我寻找了一条编程者可以做点好事的道路。我问自己,是否有这样的一个或 很多程序,我可以写出来并让以前的社团再次成为可能呢?
答案是明显的:我们需要的首先是一个操作系统。这是开始使用计算机的关键软 件。有了操作系统,你可以做很多事;而没有的话,你根本就用不了计算机。有 了一个免费的操作系统,我们就会又有一个合作的黑客社团--并邀请任何其他人 加入。而且任何人都可以不必图谋剥削他/她的朋友们就能使用计算机。
作为一个操作系统开发者,我正好有这样的技能。因此,虽然我不能想当然地认 为如此,我意思到我该来做这件事。我选择了和Unix兼容的系统,以使它能够移 植,而且Unix用户能很容易转到它上面来。它的名字GNU源于黑客传统,是一个 递归的缩写词:“GNU's Not Unix.”。
一个操作系统不仅仅是一个运行其它程序所需要的内核,七十年代,每个称得上 是操作系统的都包含命令处理、汇编器、编译器、解释器、调试器、文本编辑器 、邮件阅读程序,以及很多其它程序。ITS有,Multics有,VMS有,Unix也有。 GNU操作系统也该有这些东西。
后来我听到这样的话,是Hillel说的[注1]
我不为自己,谁为我自己? 只为自己,我是什么东西? 现在不开始,更待何时?
[译注:也许就是:人不为己,天殊地灭;若只为己,是为何物?还不开始,更待 何时?]
[注1]作为无神论者,我不崇拜任何宗教首领,但我有时发现自己会钦佩一些他们 的话。
自由,自由
“自由软件”这个词有时会导致误解--它和价格没有任何关系,不是“免费”的 意思,而是自由。因此,这就是自由软件的定义:如果满足下列条件,一个程序 对你而言,就是自由软件。
你有运行该程序的自由,不管出于什么目的。 你有修改该程序,满足自己需要的自由。(为在实践中实现这样的自由,
你必须能有源码,因为没有源码而想修改程序是极度困难的。) 你有再发行它的拷贝的自由,以无偿或者有偿的形式。 你有发行该程序修改后的版本的自由,使整个社团能从你的改进中受益 。 由于“free”一词是指自由,而不是价格免费,软件的销售版和自由版之间没有 冲突。事实上,销售软件的自由是至关重要的:自由软件CD合集的销售对整个社 团是很重要的,它们的销售也是为自由软件开发筹集资金的重要途径。因此,一 个人们能自由地收集到这样的合集里的程序不是自由软件。
由于“free”一词的含混,人们已经花了很长时间想找个替代词,但还没有找到 合适的。英语较其它语言有更多的词汇和细微差别,但它没有一个简单的、无异 义的词来表达“自由的”之意,即自由自在--“unfettered”是意义最接近的一 个。象“liberated(解放的)”、“freedom(自由)”和“Open(开放)”等词都有 不当的意思或某些缺点。[译注:似乎中文在这里体现了一点点优势,尽管中文 词汇未必有英文多,但“自由软件”一词足够,含义相当明确。]
GNU软件和GNU系统
开发一个完整的系统是一项非常巨大的工程。为尽快发展,我决定改写和使用一 些不管在哪里已经存在的一些自由软件程序。例如,我很早就定下了用TeX作主 要的文本编排器;几年后,我决定使用X Windows系统,而不是为GNU重写一个视 窗系统。
由于这个决定,GNU系统不同于一个所有GNU软件的合集,GNU系统包括一些不是G NU的软件,即其它人为其自己的目的开发的程序和项目,但因其为自由软件,我 们可以使用。
项目的商业化
1984年1月,我从MIT辞职,开始写GNU软件。离开MIT是必要的,这样MIT就不能干 涉GNU作为自由软件发布。如果我还属于那里的职员,MIT就可以要求拥有这些工 作,就会施加他们自己的发行条款,或者将全部工作转为私有软件包。出于发起 它的目的:建立一个新的软件共享社会,我不希望做了这么多工作却于此目的毫 无益处。
尽管如此,Winston教授,然后是MIT AI实验室的领导,亲切地邀请我仍然使用实 验室的设备。
开始的脚步
在开始GNU计划之后不久,我听说了自由大学编译器工具,即VUCK(荷兰语中自由 一词以V打头)。这是一个为处理多种语言而开发的编译器,包括C和Pascal,并且 支持多种机器。我给它的作者写了信问GNU计划能否使用它。
他的回信是嘲笑式的,说大学是自由的但编译器不是。由此我决定我为GNU计划写 的第一个程序是一个多语言、多平台的编译器。 为避免全部由我重写整个编译器,我取得了Pastel编译器的源码,它是Lawrence Livermore实验室开发的跨平台编译器,用扩展的Pascal语言写成,并设计为系统 编程语言。我增加了一个C的前端处理,开始把它移植到Motorola 68000计算机。 但是后来发现此编译器需要数兆字节的栈空间,而手头的68000 Unix系统只允许 64K,因此我只好放弃移植。
接着我确认,Pastel编译器被设计成这样的,分析整个输入文件,生成语法树, 将整个语法树转变为一串机器指令,然后生成整个输出文件,在这一系列过程中 不释放任何存储空间。此时,我决定不得不自己重写一个新的编译器,就是现在 的GCC。Pastel编译器一点都没有用上,但我设法改写并使用了我写的C前端处理 。但这已经是好几年以后了。早先我写了GNU Emacs。
GNU Emacs
我在1984年9月开始写GNU Emacs,1985年初,它开始可以用了。这使我开始使用 Unix系统进行编辑工作;由于没有兴趣使用vi或ed,我以前一直在别的类型的机 器上进行编辑工作。
此时,人们开始使用GNU Emacs,并产生了如何发布它的问题。当然,我把它放在 我使用的MIT计算机的ftp服务器上(这台机器,prep.ai.mit.edu就成为主要的GN Uftp发布站点;几年后它退役了,我们将此名字转给了新的ftp服务器。)但在那 个时候,很多有兴趣的人还不在互联网上,不能用ftp得到它。因此问题就是,我 该对这些人怎么说。
我可以说,“找一个上了网、而且愿意为你拿一份拷贝的朋友帮忙”。或者象我 以前在最初的PDP-11 Emacs发布时做的:告诉他们:“寄给我一盘磁带和SASE, 我把Emacs放在里面寄给你。”但我当时没有工作,在设法从自由软件中挣钱。因 此我宣布我愿意给想要的人寄一盘磁带,但要收150美金。就这样,我开始了自由 软件发行业,成为当今发行完整的基于Linux的GNU系统的公司的先驱。
一个程序是否对每个用户都是自由的呢?
如果一个程序在离开作者时是自由软件,并不意味着它对每个拿到拷贝的用户都 是自由的。例如,公共领域软件(没有版权的软件)是自由软件,但任何人都可以 把它修改然后私有化。类似地,很多自由程序是有版权的,但在简单的同意许可 下发布,允许产生私有的改进版本。
一个很好的例子就是X Window系统。它是MIT开发的,作为自由软件在同意许可下 发布,并很快被很多计算机公司所接受。他们把X加入到私有的Unix系统中,只提 供可执行码,并附加上保密协议。这些X拷贝和他们的Unix一样,不再是自由软件 。X Window系统的开发者并不认为这是问题--他们本来就期望它发生。他们的目 标不是自由,而仅是“成功”,即:“拥有很多用户”。他们不关心这些用户是 否拥有自由,只要数量很多就行了。
这导致一种荒谬的情形,就是对自由的两种解释和对“这个程序还自由吗?”的 两种不同答案。如果你以MIT版本的发行条款为基础作出判断,可以说X是自由软 件。但如果衡量普通X用户的自由,就得说它是私有软件。大多数X用户使用的是 随Unix系统配的私有版本,不是自由的版本。
Copyleft 和 GNU GPL
GNU的目标是给予用户自由,而不是流行、受欢迎就行了。因此我们需要使用防止 GNU软件变成私有软件的发行条款。我们使用的办法叫“copyleft”。[注1] Copyleft使用版权法,但是把它反过来用,服务于与通常相反的目的:不是作为 软件私有的方法,而是保持软件的自由。
Copyleft的中心思想是:我们允许每个人运行程序、拷贝程序、修改程序以及发 布改进版--但不允许施加他们自己的限制。这样,作为“自由软件”标志的关键 的自由就授予了每个拥有拷贝的用户;这样的自由成为不可剥夺的权利。
为有效地使用copyleft,修改的版本也必须是自由的。这确保在我们工作的基础 上的其它工作发表后也能为我们的社团所用。当从事编程工作的编程者自愿改进 GNU软件时,要靠Copyleft保护他们,防止他们的雇主说:“你不能共享这些改 动,因为我们将用它来做我们此程序的私有版。”
如果我们想确保我们程序的每个用户的自由,改动也必须自由的要求非常关键。 私有化X Window系统的公司通常作的改动是移植到他们的系统和硬件上。这些改 动和X的大量代码相比是比较小的部份,但他们不是无关紧要的。如果进行改动 是成为否认用户的自由的借口,那么这个借口就很容易被任何人都利用。
一个与此相关的问题是:把自由的程序和非自由的代码相结合。这种组合不可避 免地成为不自由的;非自由部份所缺少的任何自由,在组合整体都将缺乏。允许 这样的组合好比在大船上凿个致沉的窟窿。因此copyleft的一个关键要求是堵上 这个洞:任何对copyleft程序的增加和组合都必须使组合后的更大的版本也是自 由的和copyleft的。
我们为大多数GNU软件使用的特定copyleft是GNU一般公用许可,缩写为GNU GPL。 在特定情况下我们有其它类型的copyleft。GNU手册也是copyleft的,但使用一种 简单得多的类型,因为用于手册的GNU GPL不必如此复杂。
[注1] 在不知1984还是1985年,Don Hopkins (非常有想象力的一个家伙) 寄给我
一封信,信封上写了一些有趣的话,包括这么一句:“Copyleft--all rights reserved.”我于是借用了“copyleft”一词来为我当时发展的发行观念命名。
-- ※ 来源:.网易虚拟社区北京站 http://bj.netease.com.[FROM: 203.127.155.65] 发信人: [email protected] (华生医生), 信区: Opensoftware 标 题: [译文] GNU计划 -- RMS (2/2) 发信站: 华生医生 (Thu Feb 25 13:55:38 1999) 转信站: Netease!Netease2
自由软件基金会
随着对Emacs的兴趣不断增长,其他人加入到GNU计划中来,我们决定此时又是寻 求资助的时候了。于是1985年我们建立了自由软件基金会,一个用于自由软件开 发的免税的慈善机构。FSF同时接管了Emacs的磁带发行业务;后来它扩展到在磁 带中包含其他自由软件(GNU的以及不是GNU的),并出售自由的手册。
FSF也接受捐赠,但它的大部份收入来源于销售--销售自由软件以及其它相关业务 。今天它销售源码CD、执行码CD、印刷精美的手册(全都可以再自由发行和修改) 以及豪华发行版(我们为你所挑选的平台制作所有软件的合集)。
自由软件基金会的雇员写出并维护了许多GNU软件包。著名的两个是C程序库和 shell程序。GNU C程序库是在GNU/Linux上运行的每个程序和Linux打交道的东西 。它是自由软件基金会的成员Roland McGrath开发的。多数GNU/Linux系统上使 用的shell程序是BASH,即Bourne Again Shell[注1],由FSF雇员Brian Fox开发 。我们资助这些程序的开发,因为GNU计划不仅是开发工具和环境。我们的目标是 完整的操作系统,这些程序是达到目的所需要的。
[注1]“Bourne Again Shell”是对“Bourne Shell”开的玩笑,后者是Unix上常 用的shell程序。
自由软件支持
自由软件思想排斥了特定的普遍的商业实践,但它并不反对商业化。当商业机构 尊重用户的自由时,我们祝愿他们早日成功。
销售Emacs拷贝演示了一种自由软件业务。FSF接管此业务时,我需要另一条谋生 的途径,在和我开发的自由软件有关的销售服务中我找到了它。这包括教学指导 ,如如何对GNU Emacs编程,如何定制GCC,软件开发等,多数是移植GCC到新的平 台。
现在这些类型的自由软件业务都有很多公司在从事它们。一些公司发行自由软件 CD合集;其它的出售从回答用户问题到修补bug,到增加新功能各种层次的技术支 持。我们甚至还看到有依靠发起新的自由软件产品的自由软件公司。
然而要注意,很多公司冠有“开放源码”的称号,实际上其业务却是和自由软件 一起运行的非自由软件。这些不是自由软件公司。它们是私有软件公司,其产品 将用户引向偏离自由的方向。他们称之为“增值”,这反映了他们希望我们采纳 的价值观:便利高于自由。如果我们更看重自由,我们应该称它们“弱自由”产 品。
技术目标
GNU的主要目标是成为自由软件。即使GNU在技术上并无优于Unix之处,它还有社 会方面的优点:允许用户彼此合作,以及道义上的优点:尊重用户的自由。
但很自然地要用已知的好的实践标准来衡量这些工作--如,动态分配的数据结构 可以避免任何固定尺寸的限制,以及在任何有意义的时候都支持可能的8位字节数 据。另外,由于决定不支持16位机器,我们排除了Unix集中于小内存的考虑(显然 GNU系统完成的时候32位机器会成为标准),除非在超出1M的时候,并不设法降低 内存消耗。在处理特别大的文件不是那么重要的程序中,我们鼓励编程者将整个 输入文件一次性读入内存,然后扫描其内容,这样无需再考虑I/O。
这些决定使很多GNU程序在速度和可靠性上超过了它们的Unix同伴。
捐赠的计算机
随着GNU计划名声的增长,人们开始给GNU捐赠运行Unix的机器。这些机器非常有 用,因为开发GNU的部件的最容易的办法就是在Unix系统上做,然后逐渐替换掉该 系统中的部件。但是它产生了道义上的问题:我们使用Unix的拷贝到底合不合适 。Unix过去(和现在)是私有软件,GNU的思想是我们应该不使用私有软件。但是, 根据自我防卫的暴力行为是正当的这样一种推理逻辑,我认为如果私有软件包对 于开发自由的替代软件、从而帮助其他人停止使用私有软件非常关键时,这样的 私有软件的使用是正当的。
但是,即使这是一种正当的恶行,它毕竟还是恶行。如今我们没有任何Unix的拷 贝,因为我们已经用自由的操作系统替换了它。在无法替换一台机器的操作系统 时,我们连机器也换掉。
GNU任务清单
随着GNU计划的进行和越来越多的系统部件被找到或开发出来,终于列出一个剩余 的差距变得很有用了。我们用它来雇用开发人员写需要的部分。这个清单成为GN U的任务清单。除了缺少的Unix部件,我们列出了各种各样其它的有用的软件和文 档计划,我们认为,这是一个真正完整的系统是应该具备的。
如今,GNU任务清单中几乎不缺少任何Unix部件了--除了一些不太要紧的,其它工 作已经完成了。但清单中充满了可能要称作是“应用程序”的项目。任何对一小 部分用户有吸引力的程序都可能会很有用,可以加到操作系统中。
甚至游戏也被包括在任务清单中--一开始就有。Unix包括游戏,因此GNU也该有。 但游戏的兼容性不成其为问题,因此我们不必遵从Unix包含的游戏清单。相反地 ,我们列出了广泛的、不同种类的、会受用户欢迎的游戏。
GNU库GPL
GNU C程序库使用了一类特别的copyleft,叫GNU库一般公用许可,允许该程序库 和私有软件相链接。为什么要有这个例外呢?
这和根本原则无关;没有任何规则说私有软件有资格使用我们的源码。(为何要为 一个断然拒绝和我们共享的项目作贡献呢?)C程序库以及其它任何库代码,使用 LGPL是出于策略性的考虑。
C程序库完成的是一般性的工作;每个私有系统或者编译器都带有C程序库,因此 ,仅使我们的C程序库可被自由软件使用不会给自由软件带来任何额外的好处--它 只会打击对我们的程序库的使用。
一个系统是个例外:在GNU系统(包括GNU/Linux)中,GNU C程序库是唯一的C程序 库。因此GNU C程序库的发行条款决定了私有程序是否可以在GNU系统上编译。道 义上没有理由要让私有软件在GNU系统上运行,但从战略上看,排斥它们会更加对 推广使用GNU系统的不利,而不是鼓励自由应用程序的开发。
这就是为何C程序库使用LGPL是一个好的战略。对于其它库,需要就具体情况进行 考虑来作出战略上的决定。当一个库完成了一个特别的工作,有助于写出某类特 定的程序,就用GPL发行它,使它限于自由软件使用,这是帮助其它自由软件开发 者的一个方法,让他们获得对私有软件的优势。
[译注:关于库代码使用LGPL还是GPL的问题,也有颇多争论,一种更加仁慈的看 法是,即使某些库能让自由软件获得优势,为“re-invent the wheel”避免做无 用功,也应该使用LGPL发行,将其开放给私有软件使用。]
考虑GNU Readline库,它是开发出来提供BASH的命令行编辑功能的。Readline是 在通常的GPL下发行的,而不是LGPL。这可能的确减少了Redline被使用的机会, 但这对我们没有损失。同时,为使用Readline,至少有一个有用的应用软件成为 了自由软件,这对整个社团的确是件好事。
私有软件开发者拥有金钱能提供的好处;自由软件开发者需要相互之间提供优势 。我希望有一天我们能有一大批GPL保护下的程序库,而私有软件中没有类似的东 西,来提供构造新的自由软件的有用的模块,形成将来自由软件开发的主要优势 。
的确挠到痒处?
Eric Raymond说“每个优秀的软件都是从挠到开发者的痒处开始的”。也许有时 的确是这样,但很多基本的GNU软件都是为一个完整的操作系统开发出来的,它 们源于预想和计划,不是来自冲动。
例如,我们开发了GNU C程序库,是因为类Unix系统需要C程序库,开发了 Bourne-Again Shell(bash)是因为类Unix系统需要shell,开发了GNU tar是因为 类Unix系统需要tar程序。我自己的程序也一样--GNU C编译器、GNU Emacs、GDB 和GNU Make。
有一些GNU程序是开发出来对付对我们的自由的某些威胁的。因此,我们开发了g zip来代替Compress程序,由于LZW算法的专利它不再能用于我们这个社团。我们 找到人来开发LessTif,更近期的是GNOME和Harmony,解决某些私有程序库带来 的问题(如下所示)。我们在开发GNU Privacy Guard,来代替流行的、非自由的 加密软件,因为用户应该不需要在隐私和自由之间作出抉择。
当然,写这些程序的人变得对它很感兴趣,而且有很多功能由于很多人自己的需 要和兴趣被他们加到里面。但这并不必须是这些程序之所以存在的理由。
意料之外的发展
在GNU计划之初,我想象我们会开发出整个GNU系统,然后作为一个整体发行它, 然而事情却不是这样。
由于GNU系统的每个部件都在Unix系统上实现,远在完整的GNU系统出现之前,每 个部件都可以运行在Unix上。其中有些程序变得非常流行,用户们开始扩展和移 植它们--移植到多种不兼容的Unix版本中,有时也移植到其它系统。
这种过程使这些程序更加强大,并且成为引入资金和贡献者到GNU计划的纽带。但 它很可能也将起码能工作的系统的完成延迟了几年时间,因为GNU开发者的时间被 用来维护这些移植版和在已有的部件中增加功能,而不是继续一个接一个地开发 缺少的其它部件。
GNU Hurd
到1990年,GNU系统几乎完成了;唯一缺少的主要部件是内核。我们已经决定将我 们的内核实现为一组运行在Mach之上的服务进程。Mach是先后在Carnegie Mello n大学和Utah大学开发出来的微内核。GNU HURD是在Mach上层运行的一组服务进 程(或gnu羚羊群[译注:因为GNU的标志就是一只羚羊的头]),完成Unix内核的种 种功能。开始开发的日子被拖延了,因为我们要等待Mach以自由软件形式发行, 它曾作过如此许诺。
选择这个设计的一个原因是要避免似乎是最艰巨的一项工作:在没有源码调试器 的情况下调试核心程序。Mach已经解决了这个问题,我们预期用GDB把HURD服务 进程当用户程序来调试。但花了很多时间才使它成为可能,而且多线程的服务进 程彼此还发送消息,使其非常难以调试。为使HURD稳定地工作花了好多年时间。
Alix
GNU核心最初并没有要称为HURD,它原来的名字叫Alix--源于我当时的情人的名字 。她是一个Unix系统管理员,曾经指出她的名字如何适合于作为Unix系统版本的 通常命名模式;她还跟朋友开玩笑说,“应该有个人用我的名字命名一个核心” 我没说什么,但决定用一个叫Alix的核心来让她惊喜一下。
这个名字没有长久。主要的核心开发者,Michael Bushnell(现在的Thomas)喜欢 用名字HURD,并重新定义Alix为核心中的某一部分--负责捕获系统调用并给HURD 服务进程发送消息来处理它的部分。
最后,Alix和我的关系破裂了,并且她改了个名字;与此无关的是,HURD的设计 也修改了,C程序库直接发送消息给服务进程,这使得Alix这个部件从设计中消 失了。
但在这些事情发生之前,她的一个朋友在HURD源码中邂逅了Alix这个名字并告诉 了她,因此这个名字也算完成了使命。
Linux和GNU/Linux
GNU Hurd还没有准备好作为产品使用。幸运的是,另一个内核出现了。1991年, Linus Trovalds开发出Unix兼容的内核并称它为Linux。1992年左右,Linux和尚 未很完整的GNU系统相结合,产生了一个完整的自由操作系统。(当然,组合它们 是个充实的工作。)我们今天能真正运行一个GNU系统,的确要归功于Linux。
我们称这个版本的系统为GNU/Linux,来表明它的组成是GNU系统和Linux核心。
未来的挑战
我们已经证明了我们开发大范围的自由软件的能力。这并非意味着我们是不可征 服和无可阻挡的。有几个挑战令自由软件的未来未为可知;遭遇它们需要坚定的 努力和毅力,有时要持续数年。它将需要人们在重视他们的自由、不让任何人夺 去它时所展示的那种决心。
下面四个段落讨论这些挑战。
硬件秘密
硬件制造商越来越倾向于对其硬件规范保密。这给写自由的驱动程序让Linux和 XFree86支持新的硬件带来困难。我们现在有了完全自由的系统,但如果不能支持 明天的硬件我们将不再拥有它们。
有两种办法对付这个问题。编程者可以通过逆向工程来查明如何支持这些硬件。 我们其它人可以使用自由软件支持的硬件;但我们的人数增加时,硬件规范保密 将成为弄巧成拙的做法。
逆向工程是艰巨的工作;我们有决心足够坚定的编程者去从事它吗?是的--如果 我们建立起强大的观念让自由软件成为原则性问题,并且非自由的驱动程序令人 无法忍受的话。我们中大量的人会花费额外的钱,或者甚至一点额外的时间,使 我们能使用自由的驱动程序吗?是的,如果拥有自由的决心深入人心的话。
非自由的程序库
让非自由的程序库运行在自由操作系统上实际上是自由软件开发者的陷阱。该库 的吸引人的功能就是诱饵;如果你使用它,就掉入了陷阱中,因为你的程序对一 个自由操作系统就没用了。(严格地说,我们可以包含进你的程序,但没有那个 程序库,你的程序运行不了。)更糟的是,如果一个使用私有程序库的程序流行 起来,就会诱使更多其他编程者进入这样的陷阱。
头一个这样的例子是80年代的Motif工具。虽然那时还没有自由操作系统,很明显 Motif会给它带来什么样的问题。GNU计划的回应有两种:要求各个自由软件项目 同时支持自由的X工具控件以及Motif,或者要求有人来写一个Motif的替代品。这 项工作进行了很长时间;直到1997年,由Hungry.com的编程者开发得LessTif才强 大到可以支持大多数Motif应用程序的程度。
在1996和1998年之间,在一个丰富的自由软件合集KDE中使用了另外一个非自由的 GUI工具库:Qt。
自由的GNU/Linux系统无法使用KDE,因为我们无法使用Qt库。然而,有些GNU/Li nux的商业发行者并不特别严格遵循自由软件原则,在他们的系统中加进了KDE-- 成为了一个功能更强但自由更少的系统。KDE开发组还在积极地吸引更多编程者使 用Qt,而且上百万的新“Linux用户”从未了解到这里面存在的问题。情况很严重 。
[译注:最近有消息说Qt改变了许可方式(下面作者会提到的),这对所有GNU/Lin ux的使用者和开发者无疑是个好消息,也可以说是GNOME项目的一个胜利。为此而 开发的GNOME,更是给大家带来了福音。相信在1999年,GNOME日渐成熟的的新版 本会让大家惊喜不已。]
自由软件社团的反应有两种:GNOME和Harmony项目。
GNOME,即GNU网络对象环境(GNU Network Object Model Environment),是GNU的 桌面系统计划。它由Miguel de Icaza于1997年开始,在Red Hat Software软件公 司的支持下开发。GNOME开始旨在提供类似的桌面工具,但专使用自由软件。它有 技术上的优势,如支持多种语言,而不仅限于C++。但它的主要目的是为了自由: 不受限于任何非自由软件的使用。
Harmony项目是Qt的一个兼容替代库,其设计目的是让KDE软件没有Qt也可以运行 。在1998年11月,Qt的开发者宣布了其许可方式的改变,这种改变实行后,能让 Qt成为自由软件。虽然无法肯定,但我想这部份归功于我们社团对Qt非自由软件 带来的问题的坚定反应。(新的许可方式不太方便而且不公正,因此仍应该尽量 避免使用Qt。)
我们如何对付下一个非自由程序库的诱惑呢?整个社团都能对这样的陷阱保持警 惕吗?或者说我们中很多人会为便利而放弃自由,从而导致大问题吗?我们的未 来处决于我们的思想。
软件专利
我们面临的最坏的威胁来自软件专利,它可以把自由软件使用专利算法和功能的 限制延伸到20年之久。LZW压缩算法专利是在1983年申请专利的,我们现在仍然无 法发行能正确生成GIF压缩文件的自由软件。1998年,由于专利诉讼的危险,有个 生成MP3压缩音频文件的自由程序被迫从GNU发行中去掉了。
[译注:GIF图形文件压缩格式的改进和替代者PNG(Portable Network Graphics, http://www.cdrom.com/pub/png/)应该不久就能实用。但MP3的确是一个问题。]
有多种对付专利的办法:我们可以寻找证据表明某项专利已经无效,也可以寻找 替代的办法。但这些办法都只能在有时候行得通。一旦它们都没有效果,某项专 利可能会迫使所有的自由软件都缺少用户需要的某些功能。如果这样我们怎么办 ?我们中为自由而看重自由软件的人当然还会使用自由软件。我们会设法不使用 专利的功能来完成工作。但那些因希望成为技术高手而看重自由软件的人可能会 因为某项专利妨碍了它而称其为一种失败。因此,虽然需要讨论“教堂”开发模 式在实际中的效力和一些自由软件的可靠性及能力,我们不能停留于此,我们必 须关注自由和原则。
自由文档
我们的自由操作系统的最大缺陷不在于软件--而是在其中缺少好的自由手册。文 档是任何软件包的基本部份;如果一个重要的自由软件没有配上好的自由文档, 那将是一个重大缺陷。如今我们有很多这样的缺陷。[更不用说中文文档了。-- 译注]
和自由软件一样,自由文档也是一种自由,而不是价格上的问题。自由文档的规 则几乎完全和自由软件一样:它关系到给予所有的用户某种自由。必须允许再发 行(包括商业销售)、以及电子和印刷版本,以使程序的每个拷贝都能配有手册。 允许修改也非常关键。根据一般的规则,我想允许人们修改任何种类的文章和书 籍并非必需的。例如,我想你或者我都没有义务要允许修改类似此篇的文章,因 它阐述的是我们的行为和看法,不能篡改。
但也存在特定的原因,需要认为自由软件文档的修改权是至关重要的。当人们行 使他们修改软件、增加或者改变其功能的权利时,如果他们尽责的话,也会修改 其手册--以便仍然能为改过的程序提供确实有用的文档。不允许编程者尽责完成 工作的手册不符合我们社团的要求。
施加一些如何修改文档的限制没有问题。例如,要求保留原作者的版权声明、发 行条款、或者作者名单都是可以的。要求修订版带有修订声明也是没有问题的。 甚至可以包含不允许被删除或修改的章节,只要这些章节和技术性问题无关。这 些限制是可以的,因为他们不会阻碍尽责的编程者为改过的程序修订文档。换句 话说,它们不妨碍整个社团最大限度地利用这些手册。
然而,必须允许修改手册中的所有技术内容,并通过常用的媒体发布、通过所有 的常用渠道;否则,这些限制就妨碍了社团,手册就不是自由的了,我们就需要 另一个手册。
自由软件开发者会有此理智和决心来生产全部范围的自由手册吗?仍然,我们的 未来依靠我们的思想。
我们必需关注自由
目前估计有一千万GNU/Linux系统的用户,如Debian GNU/Linux和Red Hat Linux 。自由软件开发的优势,已经使得用户纯粹因为实际需要而来支持它。
它的良好结果是显而易见的:更大的开发自由软件的兴趣,更多自由软件业务的 顾客,更能鼓励商业公司开发商业自由软件,而不是私有软件产品。
但对软件的兴趣比对其思想的了解要发展得快得多,这导致一些问题。如上所述 ,我们迎接挑战和威胁的能力依赖于我们为自由而战的意愿。为确使我们的社团 有这个意愿,我们需要将其传播给进入社团的新的用户。
但我们这方面做得不好:吸引新用户加入社团的努力远远超过了指引他们成为社 团公民的努力。我们两方面都得做,并保持两者的平衡。
“开放源码”
当一部份社团成员在1998年决定停止使用“自由软件”一词而是用“源码开放软 件”时,教给新用户自由的观念变得更加困难了。
[译注:关于这个措辞上的问题现在有不少讨论,但我想中文的使用者没有这个问 题。这些讨论主要是想明确“开放软件”和“免费软件”在英文中的区别(因它们 都拼作“free software”),在中文中没有这个问题。]
有些人倾向于这个新词,其目的在于避免“自由”和“免费”的区别--是个正当 的目标。然而,其他一些人是在分离推动自由软件运动的精神原则而迎合商业主 管和用户,他们中许多人的想法是利益比自由、社团和原则更重要。因此,“开 放软件”的“花言巧语”关注的是制作高质量、强大的软件的潜力,而回避了自 由、社团和原则的问题。
众多《Linux》杂志是这样一个鲜明的例子--它们充斥着能运行在GNU/Linux上的 私有软件的广告。当下一个Motif或Qt诱饵出现时,这些杂志会警告编程者远离它 吗?还是为它做广告呢?
商业支持可以从很多途径为自由软件社团作贡献;所有其它途径都是平等的、有 用的。但为赢得他们的支持而更少地关注自由和原则是危险的;它使前面提到的 吸引和教导公民的不平衡更加严重了。
“自由软件”和“开放源码”描述的是软件的同样的范畴,但或多或少,它们表 达了不同的意思,关于软件、关于价值的含义。GNU计划仍将使用“自由软件” 一词,来表达这样的思想:自由,而不仅是技术,才是重要的。
努力!
犹大的哲学(它里面没有“尝试”一词)[抱歉我不太懂犹大的哲学。--译注]看来 很优雅,但不适合于我。我在做大部份工作的时候,还在为我是否能完成而焦急 ,还不太清楚我所做的是否足够达到其目标。但我努力了,因为在我敌人和我的 城堡间只有我一人[意指作者自己是此运动的先锋--译注。]。令我惊喜的是,我 有时也有成功。
有时我会失败;我的城堡会垮掉一些。于是我发现另一个威胁我的城堡,并准备 又一次战斗。日复一日,我学会了寻找威胁来源,并挡在我的城堡前,呼吁其他 黑客来加入战斗。
目前,我经常并非是单独一人。看到大群的黑客加入队伍使我欣慰和高兴。我意 思到,这座城堡将继续存在--至少到现在。但危险逐年增加,现在微软已经明确 地针对我们的社团。我们不能想当然认为未来是自由的。不要抱有幻想!如果你 要保住自由,你必须准备来保卫它。
版权所有:Copyright (C) 1998 Richard Stallman 更新日期1998年12月7日
-- ※ 来源:.网易虚拟社区北京站 http://bj.netease.com.[FROM: 203.127.155.65]
|
|