理察法·斯德尔曼 1999年10月29日
理察法·斯德尔曼是著名的自由软件运动领袖、GNU(自由软件协会)组织的创始人,是自由软件的精神领袖,是无数程序员和用户心中的“最后一个真正的黑客”、自由软件的奠基人。
大家好!很高兴能够来到中国。看到在座的有这么多自由软件的爱好者和追随者,我感到自由软件在中国有很大的潜力,你们将是中国自由软件未来的希望。今天,我要给大家介绍一下自由软件和GNU的发展。
使用软件的规则。
当人们要问:这个社会使用软件的规则是什么?考虑这个问题的通常是软件公司的人,他们完全是出于自私的角度来考虑这个问题的。他们为了管制住别人不从他们身上拿走钱而制订这个规则。
早在20世纪70年代,我就关注这个问题。当时我们这些程序员们是在一起合作共同分享这些软件成果。正因为如此,我得出了完全不同的结论。我们的社团是这样工作的:我们会从斯坦福获取新的程序软件,或者一些源代码去写一些更好的程序,来解决一些原有的问题;或者你可以用那些源代码去实现你的想法,写一段更好的程序,甚至你可以切下一段程序用于你工作的另一段程序上。人们把这个称为软件的再利用。这样你可以把一段程序用于很多方面,这是我们这个社团致力的方向,也可以称之为对人类知识宝库的贡献。
我们并不针对任何人,相反我们是为所有人工作的。我们这个社团包括MIT的实验室人员,还有像斯坦福和康尼伯格大学的人员,甚至一些计算机公司的人员也加入我们的行列。但我们这个社团与计算机使用者不同,我发现了一些计算机使用者最关心的问题。
打印机的启示。
举一个例子,施乐公司当时送给MIT一台激光打印机,这是一件非常珍贵的礼物,因为在当时是很先进的,MIT成为除施乐公司以外的唯一一家拥有激光打印机的公司。这台机器性能非常好,打印清晰度高,不像以往的打印机那样竖线会发生扭曲,线条打印得笔直、漂亮,它是由计算机控制的。
但它也有很多问题:如经常卡纸。这种情况下,我们知道怎么办,以往的打印机也会出现经常卡纸、清晰度低的问题,我们无法改变打印速度慢、卡纸的问题,但我们是软件工程师,我们可以用软件来弥补硬件的不足。比如打印作业完成后,我们可以用程序提示:“您的打印作业已完成”,这样打印者不用再等多余的时间。另外我本人也专门写了一段关于卡纸的提示。一旦卡纸便会通过屏幕告知打印者卡纸了;或者打印机出问题了,系统会显示:“机器故障,需要修理”。一旦出现这种情况,你必须马上去修理,也许不会马上有修理工来帮助你,但是有时会有两三个同事同时来到你的办公室,你们之间可以互相帮助,共同修理。
事实上,我们把打印机当成整个系统的一部分,保证系统整体稳定运行。所以当新的打印机出现类似问题的时候,我们也想做类似的软件修改。可是问题出现了:新的施乐打印机是用施乐专有软件控制的,我们没有源代码,连最基本的修改都做不成。我们都是当时全世界最优秀的软件工程师,可我们却一点办法都没有。所以人们对这台打印机感到很头疼。也许你打印后半个小时去看,却一张纸也没打印出来。又过了半个小时你去看,却发现一直在卡纸。于是你修理好了卡纸,回去又等了半个小时,心想这回成了,却发现打印了200页别人的东西,这是没有任何意义的。然而最令我们感到头疼的是有人故意不让我们把这台机器做得更好。他在背叛全世界。当时我听说康尼伯格大学的一位同事有这台机器源代码的拷贝件,所以我去了他在匹兹堡的办公室,想向他索要一份源代码拷贝件,他拒绝了,他说:“我已经承诺不会向任何人提供拷贝件”。我非常气愤,但是没有办法,只能扭头走了。这对于MIT的员工来说是一种悲哀,于是我们一直解决不了这个问题,机器也一直这样坏下去。相反这件事对我是个不小的触动。康尼伯格的那位工程师拒绝与我合作,也拒绝与你们合作,他是在背叛我们全体。
这是发生在1981年的事。只是因为他签署了一项不对外泄露协议,他在背叛全世界。这是我第一次接触到不对外泄露协议,我是受害者,我的实验室也是受害者。很多软件工程师都会遇到被要求签署不对外泄露的协议,而且会有很多诱惑和好处会诱使他们这样做。人们会对自己做过的错事找各种借口,很多人都这么做,为什么我不能呢?但是我不会签署这样的协议,因为我清楚地记得我和我的实验室是受害者。尤其是你并不知道你会伤害谁,也许会是你最好的朋友。如果有人送给我一个很好的软件,但要求我不对外泄露,我会感谢他,但告诉他良知不让我这样做,我宁愿不要这个软件。到现在为止,我从未在已知的情况下签署过任何不泄露协议。
20世纪70年代AI实验室的成立可以说是计算机领域的悲剧,AI实验室开始编写专有的程序,使得我们原有的共享的源代码变得一点用处也没有了。除非你签署了不对外泄露协议,否则根本无法在一台先进的计算机上工作,因为他们编写了ISS(不兼容软件系统)。我原有的社团环境已经不存在了。我将如何做?或许可以随历史潮流,也签署不对外泄露协议,并编写专有软件,我也可以此为生。但是将来回顾这一段历史,我是在用一生建筑分割人们交流的高墙。我不能这样做。另一个选择是离开计算机行业,但很多程序员认为离开计算机会挨饿。但今天的美国仍有几百万人与软件无关。我的专长就是编程,我相信我会做一名很好的服务生。这也是谋生的一种方式,但我在浪费我的技能。
寻找另一种可能。
我在寻找另一种可能,做一名程序员并能为这个社会作出更大的贡献。我认为当时最需要的是开发出一套操作系统来改变这种窘境。由于当时的操作系统是专有的,而这是问题的起因,所以我决定从零开始,开发出一套操作系统,向所有人开放。
这个任务很艰巨,我不敢肯定我能完成它,但创立一个自由操作系统却是我的目标。问题是如何来设计这样一个操作系统。我知道有些程序写出来后是无用的,因为它只适用于某种类型的计算机,我不希望这样的事情发生。我想到了便携式软件,这在1983年是非常领先的。我想做一个与Unix兼容的系统,让大家觉得用起来非常容易和方便。
下一步,就是起个名字。20世纪六七十年代曾经流行工程师愿意给自己的软件起一个别出心裁的名字。经过多种选择,我选择了GNU这个名字。这是我认为我在所有英语语言中最好的词汇了。再下一步就是找那些热衷于程序设计的人来开发它。
我找到很多计算机厂商,问他们:你们每年使用Unix需要向Unix交几百万美金的许可费,为什么不拿出5万美金让我们开发新的自由操作系统呢?如果很多计算机厂家都能这样做,我们就有足够的经费完成开发工作,一旦成功了,将收效巨大,达到100 ∶ 1的回报,那岂不更好吗?
尽管有人对此表示出兴趣,但没有人愿意提供赞助。于是,我决定自己开始编写。我的目标是编写自由操作系统。
1984年1月份,我辞去了我的工作,我必须这样做,因为在MIT和美国其他大学你的成果是归学校所有的,而我的目标是编写自由操作系统,让大家共享。从此以后,我再没有过正式的工作。幸运的是通过编写自由操作系统,我到现在还没有挨过饿。
假若每一个程序都有其所有者,所有者都有这么一个规则:使用程序的人要么付钱,要么就不准使用这个程序。那么有些人会说:“好吧,我付钱使用这个软件。”有些人说:“我不买它,这太贵了,我不用这个程序了。”每次都会有人不使用它,这样一来,这个程序就得不到很好的利用,部分就被浪费了。因为设计、测试、发展程序到一定程度所需花费的精力是一样的。如果我们的用户量得到了限制,那么我们做的工作就有部分会白白浪费。