QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1720|回复: 1

GNU操作系统与自由软件运动

[复制链接]
发表于 2004-9-21 17:10:22 | 显示全部楼层 |阅读模式
http://www.blogchina.com/new/display/?id=11665

什么是自由软件?(附加)
作者:Richard Stallman

“自由软件”实际上指的是一种自由,而不是价格。为了理解这个概念,你应该想想“自由言论”,而不是“免费啤酒”。

“自由软件”是指用户运行、拷贝、研究、改进软件的自由,更准确地说,是指三种层次的自由:

研究程序运行机制,并根据你自己的需要修改它的自由
重新分发拷贝,以使其他人能够共享软件的自由
改进程序,为使他人受益而散发它的自由
你也许或花钱、或免费得到了GNU软件的拷贝,然而,不管你如何得到拷贝,你都有复制和更改软件的自由,在GNU计划中,我们使用“copyleft”来合法地保护每个人的自由。

关于“自由软件”、“copylefted软件”以及其他种类软件之间的相互关系的描述请参见Categories of Free Software。

当谈论自由软件时,最好避免使用诸如“赠送(give away)”或“免费(for free)”之类的词,这是因为这些词隐含了有关价格的问题,而不是自由。一些诸如“盗版(piracy)”之类的常用词体现了我们希望你不要赞同的意见。关于这些术语的使用请参见Confusing Words and Phrases that are Worth Avoiding。



GNU操作系统与自由软件运动 
夏昊 洪峰 译

最初的软件共享群体

  1971年,当我开始在麻省理工学院人工智能(AI)实验室工作时,我成了那里
的软件共享群体的一分子,这个软件共享群体已经存在多年。其实,软件的共享并
不限于我们这一特定的群体,它的历史与计算机一样长久,这两者之间的关系就像
人类很早就交换食谱与烹饪一样。但我们做得比大多数人都做得更多。

  AI实验室当时使用了一种称为ITS(Incompatible Timesharing System,非兼
容分时系统)的分时操作系统,这是我们实验室工作人员专为Digital PDP-10(那
个时代的大型计算机)设计的操作系统,而且是用汇编语言开发的。作为这个群体
的成员,我是一个AI实验室的系统黑客,我的工作就是完善这一系统。

  当时我们并不把我们的软件称为"自由软件"(free software),因为这个词
语当时还不存在,但事实上那就是自由软件。每当其他大学或者公司的人要求移植
或者使用我们的某个程序时,我们总是应允的。如果你看到某人在使用一个陌生而
且有趣的程序时,你总可以要求查看它的源代码,以便可以读代码、对源代码进行
修改、或者套用原代码的一部分来创作新程序。

群体的崩溃

  八十年代年代初,Digital公司停止了对PDP-11系列的开发,那时情况发生了巨
变。以六十年代的标准来看,PDP-11系列的体系结构是精巧和强大的,但无法自然
地适应八十年代的技术所允许的更大寻址空间。这意味着,几乎我们所有的程序,
包括ITS,都一下子报废了。

  在这前不久,AI实验室的黑客群体已经分崩离析。1981年,从实验室分离出去
了一个公司,名为"Symbolics",几乎雇走了所有的黑客,剩下的群体盛况难再。
Steve Levy编写过《黑客》一书,这本著作十分传神地描述了这个群体鼎盛时期的
情况。当AI实验室于1982年购置了一台新的PDP-11机器时,系统管理员决定使用
Digital的非自由分时系统,而不是ITS。

  那个时代的流行计算机系统,如VAX和68020,都有自己的操作系统,但这些系
统都不是自由软件:即使为了获得机器码可执行程序的拷贝,也应该签署不公开协
议(nondisclosure agreement)。

  这就意味着,你开始使用计算机的第一步就是要保证不帮助你身边的人。相互
协作的群体是被禁止的。专有软件(proprietary software)所有者制订的规则是:
"与他人共享软件就是盗版行为;如果你需要对程序作任何修改,磕头央求我们吧。"

  专有软件社会系统(即声明用户不能分享或修改软件的系统)的观念是反社会
的、不道德的、完全错误的。这一观点可能会让一些读者惊诧不已。但是,对于一
个基于分裂公众、使用户孤立无援的价值系统,我们还能说些什么呢?对这一观点
感到难以接受的读者,可能早已对专有软件熟视无睹,或者从专有软件工业的角度
出发才作出了这样的判断。这也难怪,因为软件出版商已经长期为此努力工作,以
使人确信对于这一事情只能有一个观察角度。

  当软件出版商谈到"确保"他们的"权益",或"禁止盗版行为"时,他们实
际上所说的东西是次要的。他们在版权声明中真正传递的信息却是他们认为不言自
明的假设,公众似乎应该不加批判地接受之。现在让我们来逐条地检查这些假设。

  假设之一,是软件公司具备无可置疑的自然权力占有软件,从而有权凌驾于所
有用户之上。如果这确实是一种自然权力的话,那么无论它对公众有多大的伤害,
我们都无法反对。有趣的是,美国的宪法和司法传统拒绝这种看法;版权并非一种
自然权力,而是一种人为的、由政府强行实施的一种垄希?韵拗朴没Э奖吹淖匀?BR>权力。

  另一种没有挑明的假设是,软件的唯一重要意义在于软件可以允许用户做什么
--而我们计算机用户不应该关心我们必须接受什么样的社会。

  第三种假设是,如果不允许某个公司凌驾于其软件产品的用户之上,我们就不
会有任何可用的软件,或者永远不会有所需要的软件去完成这样或那样的特别任务。
这个假设一度显得颇有道理,但是后来的自由软件运动表明,我们可以创造出足够
多的有用软件,而无须加以一连串的限制。

  如果我们拒绝接受上述假设,并将用户置于优先的地位,从普通的、常识性的
道德价值出发审视这些问题,我们就会得到截然不同的结论。计算机用户应该可以
自由地修改程序以适应他们自己的需求,可以自由地共享软件,因为帮助他人是社
会存在的基础。

  这里没有足够的篇幅容纳得出这一结论的详细逻辑推理,因此我推荐你阅读我
们的Web主页,http://www.gnu.org/philosophy/why-free.htm。

艰难的道德选择

  虽然我原来的群体已经消В??掏??床⒎遣豢赡埽?皇俏颐媪僖桓龅赖卵?BR>择。

  一条简单的出路是加入专有软件世界,签署不公开协议,并许诺不再帮助我同
事中的黑客。这样做的结果很可能是我也开发软件,而且软件也以不公开协榈男?BR>式发布,从而对其他不愿意背叛同伴的人进一步施加压力。

  我有可能由此而发财,而且也从编写代码中获得乐趣。但我明白,在我的职业
生涯结束时,我回过头来看到的景象将是这些年来筑起高墙林立,并将人们分隔开
来,我会觉得自己的一生努力的结果会把这个世界搞得更糟。

  在此之前,我已有过接受不公开协议的经验。当时,别人拒绝向MIT人工智能
实验室和我提供我们打印机的控制程序的源代码。该程序缺乏某些功能,打印机的
使用起来极端麻烦。因此,我不能对自己说不公开协议是清白的。他拒绝与我们共
享代码,当时我非常愤怒。我不可能转头对其他每一个人都如法炮制同一作法。

  另一种选择,直截了当但令人不快,是离开计算机领域。如果那样,我的技能
就不会被滥用,但我的才能仍然会被浪费掉。我个人不会成为分隔、限制计算机用
户的帮凶,但社会上的分隔和限制依旧在发生。

  因此,我要寻求一种解决之道,使我作为一个程序员能够做些好事。我扪心自
问,我是否能写出一个或一些程序,能使我所珍视的群体再生呢?
  答案很清楚:最急需的首先是一个操作系统。这是开始使用计算机最至关重要
的软件--有了操作系统,可以做许多事情;没有操作系统,你连计算机都使用不
了。一个自由的操作系统,会使我们可以再度拥有一个相互合作的黑客群体,而且
进一步邀请其他任何人参与进来。每个人都可以安心使用计算机,而无须变成剥夺
自己朋友权益的同谋。

  作为操作系统开发人员,我拥有的技能正适合这项工作。因此,尽管我不认为
成功唾手可得,但是我觉得这是我的天赋。我决定将系统设计得与UNIX兼容以便移
植,同时也便于UNIX用户的移民到这一新的操作系统上来。我按照一项黒客的传统
选择了GNU这个名字,GNU是"Gnu’s not UNIX"(GNU不是UNIX)的递归同义
词。

  操作系统并不仅仅意味着一个恰好只能运行其他程序的内核。在70年代,任何
排得上号的操作系统都包括有命令解释器、汇编器、编译器、解释器、调试器、文
本编辑器和电子邮件软件包等等。ITS包括这些东西,Multics有,VMS有,UNIX有,
GNU操作系统也应该含有这些东西。很久之后我看到了以下的诗句,据传来自Hillel*:

如果我不为自己打算,谁会为我考虑?
如果我只为自己打算,我又变成了什么东西?
如果现在不动手,还要等到什么时候?

启动GNU工程的决定,正是基于同样的精神。

* 脚注:作为无神论者,我不盲从任何宗教领袖,但有时我不得不赞赏他们中某些
人的箴言。

Freedom中的自由

  "free software"这种术语有时会被误解--事实上它和价格毫无关系。它
的涵义是自由。这是自由软件的定义所决定的。对于你,某个特定的用户来说,如
果某个程序称为自由软件,那么:

  你拥有运行该程序的自由,而且可以用于任何目的。

  你拥有修改该程序以适应你个人需要的自由。(为了在实践中使这一自由成为
可能,你必须能够获得源代码,因为没有源代码而试图修改程序是极端困难的。)
  你拥有再发行拷贝的自由,可以是无偿的,也可以收费。

  你拥有发行该程序修改后版本的自由,从而使社团可以从你所作的改进中获益。

  因为这里"free"的涵义是自由而非价格,自由软件和销售拷贝之间并没有矛
盾。事实上,销售拷贝的自由是至关重要的:把自由软件收集到CD-ROM上出售对整
个社团都很重要,而销售它们又是为开发自由软件筹集资金的重要手段。因此,如
果人们无法将某个程序自由地收集到这些集合中时,这个软件就不是自由软件。

  由于"free"一词具有歧义,人们长久以来都在寻找另外的词来替代它,但直
到现在还没有找到其合适的替代词。英语的单词与单词之间的细微差别比世界上其
他的语言更多,然而它却缺少一个简单明了、没有歧义的单词表示自由(freedom)
中的"free"。"unfettered"(除去镣铐的)也许是词意与之最接近的词了。其
他诸如"liberated"(被解放的)、"freedom"(自由的)和 "open"(开放
的)也被考虑过,但是这样替代词要么语义不对,要么就是存在其他缺陷。

GNU软件与GNU系统

  开发一个操作系统是一个非常庞大的工程。考虑到可行性,我决定只要有可能
就采用和使用现成的自由软件。例如,最初我就决定使用TeX作为主要的文本格式
化工具;几年之后,我决定使用X Window系统,而不是另起炉灶为GNU写一个窗口
系统。    
                             
  由于这些决定,GNU系统不等价于所有GNU软件的集合。GNU系统中包括非
GNU软件、由其他人蛘咂渌??⑾钅砍鲇诟髯阅康亩?嘈吹某绦颍???蛭???BR>是自由软件,所以我们可以使用。

工程之发轫

  1984年1月,我辞去了在MIT的职务,开始专心致志编写GNU 软件。离开MIT是
必要的,这样MIT就无法干涉我将GNU作为自由软件发行。如果我继续在学校的工作,
那么MIT可以声称拥有我的工作成果,可以实施他们自己的软件发行条件,甚至可
以将它们变成专有软件。我无意在付出大量的劳动后,最终只是看到结果对自己的
初衷没有帮助。我的初衷是:创造一个新的软件共享群体。

  不过,当时MIT人工智能实验室的领导,温斯顿教授(Prof. Winston),却友
善地邀请我继续使用实验室的设备。

最初的步骤

  启动GNU工程之前不久,我听说荷兰自由大学有一种编译器软件包(又称VUCK,
荷兰语中表示"自由"的词以字母"V"开始)。这是一个为处理多种编程语言(
包括C和Pascal)而设计的编译器,并且支持多种目标机。我给它的创作者写了一
封信,询问GNU工程是否可以使用它。

  他的回信不无嘲弄,声称大学是自由的,但他的编译器不是。因此我决定为GNU
开发的第一个程序是一个支持多语言、多平台的编译器。

  我希望避免单枪匹马地开发整个编译器,我获取了在劳伦斯·利福摩实验室(
Laurence Livermore Lab)开发的多平台编译器,即Pastel的源代码。它支持Pascal,
本身就是专为系统编程而设计,而且是Pascal语言的一个扩展版本。我加上了一个C
的前端(frontend),然后开始将它移植到摩托罗拉68000计算机计算机上去。但我
不得不放弃,因为我后来发现该编译器需要许多兆字节的栈空间,而当时的68000
UNIX系统只支持64K。

  于是,我判定该Pascal编译器的设计思想是将整个输入文件处理成为一个语法
树,将整个语法树转化为一连串的"指令",然后生成整个输出文件,在全过程之
中不会释放任何内存。从那时起,我决心从头开始编写一个完整的编译器。这个新
编译器现在的名字就是GCC,它完全没有使用任何Pastel编译器的代码,但我设法用
上了我原来编写的C前端,不过这却是几年以后的事情了。我首先完成了GNU Emacs。

GNU Emacs

  我开发GNU Emacs的工作始于1984年,1985年初GNU Emacs便可以开始使用了。
这使我可以在UNIX机器上进行编辑工作。而在此之前,因为没有兴趣使用vi或ed,
我的文本编辑工作都是在其他系统上完成的。

  这时,人们开始希望能使用GNU Emacs,这就引发了如何发行的问题。我将它放
到了我所使用的MIT机器的匿名FTP服务器上(prep.ai.mit.edu这台计算机从此成为
GNUFTP发行的主站点。几年之后机器不复使用时,我们将它的名字转到新的FTP服务
器上)。但在当时,许多有兴趣使用GNU Emacs的人都不在因特网上,也就无法利用
FTP以获得Emacs的拷贝。那么,我应该告诉他们什么呢?

  我可以说:"找一个能上网的朋友,他会帮助你获得拷贝的"。或者按照我最
初在PDP-10上发行Eamcs的方式,对他们说:"寄给我一盘磁带和一个邮资已附的回
信信封,我会把Eamcs寄回给你的"。但当时我没有工作,正在寻找通过自由软件挣
钱的方法。 因此我宣布会为所有希望得到它的人邮寄一份,定价是150美元。这样,
我开始了商业性自由软件的发行业务,这也是当今众多销售完整的、基于Linux的GNU
系统的公司之滥觞。

程序对每个使用者都自由吗?

  一个程序作为自由软件离开原作者之手后,并不一定意味着它对于每个拥有拷
贝的人都是自由软件。举例来说,公用领域软件(public domain software,没有
版权的软件)是自由软件,但任何人都可以将它稍作修改的版本变成专有软件。同
理,许多自由软件虽然有版权声明,但发行许可证过于简单宽纵,以至有人可以将
它修改成为专有软件。

  这个问题的例证之一是X Window系统。X Window系统是在MIT开发出来的,它以
一种比较宽容的许可证发布之后,很快就被很多计算机厂商所采用。他们将二进制
码的X Window系统附加到各自专有的UNIX系统中,加上了与UNIX同样的不公开协议。
这些X Window系统的拷贝与UNIX一样,它们并不是自由软件。

  X Window系统的开发者事先并不认为这是一个问题--他们的意图正是这样,
并且期望这样的情况发生。他们的目的并非自由,而只是"成功",即"拥有许多
用户"。他们不关心这些用户是否拥有自由,而只要用户数量众多就可以了。

  这导致了一个自相矛盾的情况:对"这个程序自由吗?"这一问题,按照两种
不同的自由程度计算方法会得出不同的答案。如果你按照基于MIT发行版发行条件来
进行判断它所提供的自由,那么可以认为X Window系统是自由软件;但如果考虑一
般X Window系统用户的自由,你不得不认为它是专有软件。绝大多数X Window系统
用户以前是在使用UNIX系统附带的专有版本,而不是自由版本。

Copyleft与GNU GPL

  GNU 的目的是给用户以自由, 而不仅是为了争取大量用户。因此我们必须使用
某种发行条件,以避免将GNU软件变成专有软件。我们使用的方法称为"Copyleft"
(版权所无)(注)。

  注:在1984和1985年,唐·霍普金斯(Don Hopkins,一个非常富于想象力的家
伙)给我寄了一封信。在信封上他写了一些逗乐的话,其中包括:"版权所无--
所有权力都被逆转(copyleft-all rights reversed)"。于是,我就使用了Copy-
left一词以命名当时我正考虑的软件发行概念。

  Copyleft利用了版权法,但反其道而行之,以达到与通常相反的目的:将一种
将软件私有化的手段转变成了保持软件自由的手段。

  Copyleft的中心思想,是我们给予任何人运行、拷贝、修改以及发行改变后程
序的许可,但不准许附加他们自己的限制。从而保障了每个人都有获得"自由软件"
的软件拷贝的自由,它们成为了不可异化的权力。

  要保证Copyleft的有效性,那么修改后的版本出必须也是自由的。这保障了在
我们工作的基础上所完成的成果一旦公布后,也能为我们的社团所用。当专业编程
人员自愿帮助改进GNU软件时,"Copyleft"可以防止他们的雇主声称:"你不能
和人共享这些改动,因为我们会用它创建我们自己专有软件的版本。"

  所以为确保程序对每位用户都自由,那么所作改动也必须保持自由这个前提是
必不可少的。将X Window系统私有化的那些公司通常对程序做了某些修改,以便将
X Window System移植到他们的系统和硬件上。这些改动与整个X Window系统的广
泛内容相比并不算大,但并非微不足道,如果这些修改可以作为拒绝给用户以自由
的借口,人们都会轻而易举地利用这一借口。

  一个相关的问题涉及到将自由的程序与不自由的代码相组合。这样一个组合将
不可避免地失去自由性;无论不自由的部分缺乏何种自由,都会使整个程序丧失自
由。一旦允许这种漏洞存在,那么所造成的损失可以大于再沉一艘"泰坦尼克"号。
因此,"Copyleft"的一个关键要求是封堵这一漏洞:任何添加或者组合到自由软
件上的部分都不允许附加其他限制,从而保证其结果的整体是自由的、版权所无的
(Copylefted)。

  作为Copyleft的一种特定实现形式,我们用"GNU公众许可证(简称GPL)"来
标明绝大多数GNU软件的许可证。我们还有在特殊情况下使用的其它种类的"Copy-
left"许可证。GNU的使用手册也采取了Copyleft许可证,但使用的一种大大简化
的方式,因为手册不需要GNU GPL那样的复杂度。

自由软件基金会(The Free Software Foundation)

  随着人们使用Emacs的兴趣日益增加,其他人也开始参与GNU工程,我们觉得这
是再次寻求资助的时机。所以我们在1985年创办了自由软件基金会(FSF),这是
一个完全致力于自由软件开发的免税福利机构。FSF同时也接管了Emacs磁带发行
业务,接着FSF在磁带上增加了GNU的和其他非GNU的自由软件,并出售自由软件的
使用手册,FSF的业务得到了进一步的扩展。

  FSF接受捐赠,但它的绝大多数收入来源于销售自由软件拷贝以及其他服务。
今天它销售的产品包含含有源代码的光盘,可执行程序的光盘、印制精美的使用
手册(全都包括修改和再发行的自由)及其豪华版(我们为客户指定的平台制作
完整的软件包)。

  自由软件基金会的雇员编写了并维护着数量相当多的GNU 软件包。其中值得
一提的两种是C Library和shell(命令解释器)。任何运行于GNU/Linux系统之
上的程序都用GNU C Library作为与Linux内核通信的中介。它是由自由软件基金
会的一位工作人员Roland McGrath开发的。绝大多数GNU/Linux系统上使用的shell
都是BASH (Bourne Again Shell)*,它由FSF雇员Brian Fox开发。

  * 脚注:Bourne Again Shell (Bourne Shell再世)是对UNIX上常见的shell
"Bourne Shell"开的玩笑。

  我们资助了这些程序的开发,因为GNU工程的注意力并不只局限于工具和开发
环境。我们的目的是一个完整的操作系统,而这些程序是实现这一目的所必须的。

自由软件的支持

  自由软件的哲学拒绝一种广为流传的特定商业行为,但它并非反对商业,如果
商业机构尊重用户的自由,那么我们希望他们成功。

  销售Emacs的拷贝就展示了一种自由软件的商业运作方式。当FSF接管了这项业
务后,我需要另一种方法养家糊口。解决办法是围绕我原来开发的自由软件来销售
服务。这包括教授如何使用GNU Emacs编程、如何定制GCC之类的课题,以及怎样开
发软件(主要是将GCC移植到新的平台上)。

  今天,上述的每一种自由软件业务模式都被一些公司采用。其中一些发行自由
软件的集合(收集在CD-ROM上),另一些销售支持(技术服务),支持级别很广泛,
从回答用户的问题到解决软件中的臭虫,乃至增加重大的新特性。我们甚至开始看
到市场上出现了发行自由软件新产品的公司。

  但要注意,一些将自己与"开源软件"(Open Source)概念相联系起来的公
司,事实上是将他们的业务建筑在与自由软件一起工作的非自由软件上。这不是自
由软件公司,而是专有软件的公司,他们推出产品诱惑用户远离自由。他们美其名
曰"增值",这个名字也反映出了他们希望我们接受他们的价值观:方便超越自由。
如果我们相比之下更珍视自由的话,我们可以把他们的产品称之为"减少自由"的
增值品。

技术目标

  GNU的基本目标在于自由软件。即使GNU在技术上对UNIX无优势可言,它仍然具
有社团意义上的优势,允许用户相互合作,还有道德意义上的优势,尊重用户的自
由。
  但使用广为接受的技术质量标准来评判我们的成果,那也是自然而然的。例如,
动态地分配数据结构以避免任意固定尺寸限制,同时在任何有意义的场合下都正确
处理所有可能的8位代码。

  在此之外,我们决定不支持16位的机器(当时已经清楚,GNU系统完成之时,
32位的机器即将普及),不致力缩减内存使用量除非超过1兆字节,这就否定了当时
UNIX对小内存的关注,当处理大文件并非关键问题时,我们鼓励程序员将整个输入
文件读入内存,然后遍历它的内容而不用去顾及输入/输出。

  这些决定使许多GNU程序同时在可靠性和速度上都超越了它们的UNIX竞争对手。

捐赠的计算机

  随着GNU工程的声誉日益增长,人们开始向工程捐赠运行UNIX的机器。它们非
常有用,因为开发GNU元件最简便的方式莫过于先在UNIX系统上编程,然后将系统
的元件逐一替换,但它们也引发了一个伦理方面的问题:我们拥有一个UNIX拷贝是
否正确。UNIX过去是,现在也是专有软件。GNU工程的哲学认为我们不应该使用专
有软件。然而,与在正当防卫中使用暴力相似,我按照这一推理得出了一个结论:
我确信,在为开发自由软件去替代专有软件,和帮助他人停止使用专有软件时,如
果需要使用专有软件的确是问题的关键的话,那么使用专有软件是合乎情理的。

  但是,即使这样做是有理的锒瘢??暇谷匀皇且恢肿锒瘛=裉煳颐遣辉儆涤?BR>任何版本的UNIX,因为我们已经使用了自由的操作系统替代了它们。如果我们不能
使用自由的操作系统去替代机器上的操作系统,那么我们会替换机器本怼?/P>

GNU任务清单

  随着GNU工程的进展,越来越多的系统元件被发现或者被开发出来。最后,列
出一个剩下课题的清单对我们来说有了意义。我们使用这份任务清单招集开发者以
编写剩余所欠缺的部分。这一清单以GNU任务清单命名。除了尚缺的UNIX组成部分,
我们还包括了各种各样的、我们认为一个真正完整的系统应该具备的其他有用软件
以及文档项目。

  时至今日,几乎没有任何UNIX的成分还遗留在GNU任务清单之中--那些工作已
经完成,某些不重要的除外。但清单现在充满了可以称为"应用程序"的项目。任
何程序,只要它的适用而不仅限于很小一部分用户,都可以成为操作系统的有用组
成部分。甚至游戏程序也包括在任务清单之内--从工程一开始就这样。UNIX包括
了游戏程序,自然GNU自然也该这
发表于 2004-9-21 17:19:50 | 显示全部楼层
长啊,真xx的长
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-12-4 17:41 , Processed in 0.070856 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表