这是发生在1981年的事。只是因为他签署了一项不对外泄露协议,他在背叛全世界。这是我第一次接触到不对外泄露协议,我是受害者,我的实验室也是受害者。很多软件工程师都会遇到被要求签署不对外泄露的协议,而且会有很多诱惑和好处会诱使他们这样做。人们会对自己做过的错事找各种借口,很多人都这么做,为什么我不能呢?但是我不会签署这样的协议,因为我清楚地记得我和我的实验室是受害者。尤其是你并不知道你会伤害谁,也许会是你最好的朋友。如果有人送给我一个很好的软件,但要求我不对外泄露,我会感谢他,但告诉他良知不让我这样做,我宁愿不要这个软件。到现在为止,我从未在已知的情况下签署过任何不泄露协议。
70年代ai实验室的成立可以说是计算机领域的悲剧,ai实验室开始编写专有的程序,使得我们原有的共享的源代码变得一点用处也没有了。除非你签署了不对外泄露协议,否则根本无法在一台先进的计算机上工作,因为他们编写了iss(不兼容软件系统)。我原有的社团环境已经不存在了。我将如何做?或许可以随历史潮流,也签署不对外泄露协议,并编写专有软件,我也可以此为生。但是将来回顾这一段历史,我是在用一生建筑分割人们交流的高墙。我不能这样做。另一个选择是离开计算机行业,但很多程序员认为离开计算机会挨饿。但今天的美国仍有几百万人与软件无关。我的专长就是编程,我相信我会做一名很好的服务生。这也是谋生的一种方式,但我在浪费我的技能。
寻找另一种可能
我在寻找另一种可能,做一名程序员并能为这个社会作出更大的贡献。我认为当时最需要的是开发出一套操作系统来改变这种窘境。由于当时的操作系统是专有的,而这是问题的起因,所以我决定从零开始,开发出一套操作系统,向所有人开放。
这个任务很艰巨,我不敢肯定我能完成它,但创立一个自由操作系统却是我的目标。问题是如何来设计这样一个操作系统。我知道有些程序写出来后是无用的,因为它只适用于某种类型的计算机,我不希望这样的事情发生。我想到了便携式软件,这在1983年是非常领先的。我想做一个与unix兼容的系统,让大家觉得用起来非常容易和方便。
下一步,就是起个名字。六七十年代曾经流行工程师愿意给自己的软件起一个别出心裁的名字。经过多种选择,我选择了gnu这个名字。这是我认为我在所有英语语言中最好的词汇了。再下一步就是找那些热衷于程序设计的人来开发它。我找到很多计算机厂商,问他们:你们每年使用unix需要向unix交几百万美金的许可费,为什么不拿出5万让我们开发新的自由操作系统呢?如果很多计算机厂家都能这样做,我们就有足够的经费完成开发工作,一旦成功了,将收效巨大,达到100:1的回报,那岂不更好吗?
尽管有人对此表示出兴趣,但没有人愿意提供赞助。于是,我决定自己开始写作。我的目标是编写自由操作系统。
1984年1月份,我辞去了我的工作,我必须这样做,因为在it和美国其他大学你的成果是归学校所有的,而我的目标是编写自由操作系统,让大家共享。从此以后,我再没有过正式的工作。幸运的是通过编写自由操作系统,我到现在还没有挨过饿。
假若每一个程序都有其所有者,所有者都有这么一个规则:使用程序的人要么付钱,要么就不准使用这个程序。那么有些人会说:&ldo;好吧,我付钱使用这个软件。&rdo;有些人说:&ldo;我不买它,这太贵了,我不用这个程序了。&rdo;每次都会有人不使用它,这样一来,这个程序就得不到很好的利用,部分就被浪费了。因为设计、测试、发展程序到一定程度所需花费的精力是一样的。如果我们的用户量得到了限制,那么我们做的工作就有部分会白白浪费。
但是社会上还有一部分是乐于去帮助别人的人。一个正常的社会只有在良好的心态下才能发挥作用,这也是许多宗教信仰鼓励乐于助人的原因,因为这对于人类社会来说非常重要。当我还是小孩子时,在学校里,教师会教育我们要&ldo;分享&rdo;,他们说你不能把带来的糖果一个人全吃了,要分给别的孩子,在中国也是这样吧?对此我并不奇怪。因为显而易见,乐于同你周围的人分享是非常重要的,孩子们都必须被教育。现在在美国,政府所做的正好相反,要求学校里教师教育孩子们把东西&ldo;存着&rdo;,以前我们被告诉要同别人分享,现在孩子们却被告知&ldo;不要与别人分享&rdo;。分给别人是错误的,分给别人意味着你是一个傻瓜。如果我们都不愿意帮助周围的人的话,这个世界将会怎样?我们难道愿意生活在那样一个人人自我,不愿帮助他人的社会里吗?
过去有人问我是不是没有人愿意为自由软件工作,因为他们认为这是免费软件,人们要无偿为它工作,因此造成了没有人愿意做和来做这件事情。15年之后的今天,我想已经有了答案,有些人是编软件拿报酬,但还有许多人却是即便没有报酬也在编写软件。我们编写出有用的软件,并让更多的人可以使用它,这就是自由软件的价值。自由软件的一大优势就是,在大家的共同努力下,这些程序总是不间断地更新。
当我写eacs时,大家都在想如何改进它,例如有人会说我在这里有一个设想,另外就有人会说这个新的设想我能实现它,接下来就会有一个接一个的程序出现,它们的出现是如此之快,我都赶不上了……我想在微软就不会有这个问题。人们改进软件是为了使它更有用,软件有用了,人们就开始使用它,开始改进它,这样的结果使自由软件更加具有可用性和可靠性。以往人们觉得自由软件不会起什么作用,但从今日事实看来,自由软件具有很高的可靠性,在日常工作、教育等方面都起着重要的作用。在医院医治病人、美国警局记录时都采用了自由软件配置的系统,因为他们知道这个系统永远不会瘫痪。这也是人们选择使用自由软件的一个极重要的原因。
从实用角度而言,开放源代码的程序也为商业提供支持。
当我们与商人谈的时候,自由软件支持商务也许是一个好的卖点,但是当我们与公众,与我们的系统用户谈的时候,或与我们的社团谈的时候,我们却没必要告诉他们这些,因为社会里自由的天性是最重要的,我们也要给他们选择的自由。
历史告诉我们,人们若想自由,惟一的方法是为自由奋斗,总有一些让你放弃自由的机会,人们总能听到&ldo;如果你放弃了这个自由,你就能得到某些好处&rdo;,总有一些人为了这些利益而放弃自由,所以假若我们要维护自由,就必须有珍视自由的人们。
在世界任何一个地方,如果你想要自由,就必须不懈地奋斗。在自由软件协会中工作的人说:&ldo;我坚持为自由软件工作,因为我想要&lso;自由&rso;。&rdo;在某种程度上,我赞成他们所说的,但我认为有些他们并未提到。在这里我必须阐明,自由软件工作与开放性源代码工作并不完全一样,两种运动有着很相似的目标,但其原因和其对公众所宣扬的主旨并不尽相同。后者无法达到一个和谐的工作环境,而没有其他人的帮助,软件将无法实现强大的功能和可靠性;另外,这种状况造成的结果将影响科学家们的相互合作精神,而正是这种合作精神使他们一起工作来提高人类的知识水平。这种精神曾经盛极一时,甚至当科学家们的国家处于战争时期的时候这种合作精神也普遍存在。