这是针对英文原版页面的中文翻译。

BYTE杂志对Richard Stallman的采访

Richard Stallman 和 BYTE 杂志的编辑讨论其公众领域兼容 Unix 的软件系统(1986年7月)


Richard Stallman 目前从事着可能是最雄心勃勃的自由软件开发工程,GNU 系统。他写的 GNU 宣言发表于 Dr. Dobb's 杂志的 1985 年 3 月刊。在此宣言中,Stallman 这样描述 GNU 工程:“我将编写一个完整的、兼容 Unix 的软件系统,这样我就可以把它自由地分发给要使用它的人…GNU 完成后,每个人都将能够自由地获得一个优秀的软件系统,就像获得空气一样。”(GNU 是 GNU's Not Unix 的缩写;其中的“G”要发音。)

众所周知,Stallman 是 EMACS 的作者,它是 Stallman 在 MIT 人工智能实验室时开发的一个功能强大的文本编辑器。所以,毫不意外,GNU 工程的第一部分软件就是一个新的 EMACS。GNU EMACS 声名卓著,是目前你可以找到的最好的 EMACS 之一。

BYTE:我们看了你在Dr. Dobb's杂志1985年3月刊上的GNU宣言。从那以后,发生了些什么?那就是GNU真正的开始吗?你在那之后是怎么推进的?

Stallman:Dr. Dobb's的文章并不是GNU工程的开始。作为请求计算机制造商提供资助的提议,我在做好了开始GNU工程的准备之时,撰写了GNU宣言。他们并不想介入,我进而决定与其花费时间寻求资助,不如花费时间编写代码。GNU宣言大约在我写好它的一年半之后得以发表,此时我差不多已经开始发布GNU EMACS程序了。从那时起,我除了让GNU EMACS更完善和运行在更多的计算机平台上,我还基本上完成了C编译器的优化,以及所有运行C程序所需要的其他软件。其中包括一个代码级别的调试器,它有许多其他Unix代码调试器没有的功能。比如,它带有便利的调试器变量,这样你就可以保存一些参数;它还有所有你打印的变量的历史记录,这样你就能非常容易地追踪列表结构。

BYTE:你已经完成了现在这个广为流传的编辑器,并且接近完成编译器。

Stallman:我期望在10月份完成编译器。

BYTE:那么内核怎么样?

Stallman:我目前计划从 MIT 写的内核开始,该内核最近公开发布,其中包含有我要使用的一些想法。这个内核叫 TRIX;它基于远程过程调用。我仍然需要添加许多该内核目前还缺少但和 Unix 兼容所需要的功能。我还没有开始这项工作。我将在完成编译器之后着手内核的工作。我还要重写文件系统。我计划使之按照合理的顺序写入数据块,以保持磁盘结构总是一致的,只需这样做就可以使文件系统在出错时安全。然后我会添加版本号。我会使用一套复杂的体系来调和人们通常在 Unix 系统上使用版本号的方法。你应当能够不用版本号就可以定义文件名,但是你也可以明确地使用版本号来定义文件名;这两个方法都不应该影响那些现存的、并未针对此功能做修改的常规 Unix 程序的使用。我认为我有一个体系可以实现这个功能,只需试一试就可以知道是否真的可以。

BYTE:你有没有一个简单的说明来告诉我们GNU系统怎么就比其他系统更优秀?但是从你刚才所说来看,至少在文件系统方面你将超越Unix做得更好。

Stallman:C 编译器也将输出更好的代码而且运行更快。调试器也更好。对于每个部件,我可能找到改进的方法,也可能找不到。但是你的问题没有单一的回答。在某种程度上说,我通过重新实现获益,因为这使许多系统都变得好得多。从另一方面说,这也因为我在此领域工作多年而且经历过许多其他系统。因此,我可以引入很多想法。该系统更好的一个例子是该系统会支持任意大小的文件、任意长的文件行以及任意的文件字符。Unix 系统在这方面较差。就软件工程的原则来说,你本不应该有随意的限制,这并不新鲜。但是在编写 Unix 时,加入限制一直是实际的标准,可能只是因为他们在为很小的系统编写 Unix。GNU 系统只有系统内存耗尽才是极限,因为此时它有太多的数据而没有地方存储。

BYTE:而如果你有虚拟内存,将不太可能达到系统极限。你可能只是要永远等着结果的输出。

Stallman:实际上,远在你等待结果之前,系统极限就达到了。

BYTE:你可以谈谈GNU EMACS都能够在什么机器和环境下运行吗?现在它可以在VAX机器上运行;它可以运行在个人电脑上吗?

Stallman:我不确定你说的个人电脑指的是什么。例如,Sun机器是不是一台个人电脑?GNU EMACS要求至少1兆字节的内存,最好更多。它一般用在支持虚拟内存的机器上。除了某些C编译器的各种技术问题之外,几乎任何带有虚拟内存并运行较新的Unix版本的机器都可以运行GNU EMACS,现状也是这样。

BYTE:是否有人试着把它移植到Atari或Macintosh机器?

Stallman:Atari 1040ST还没有足够的内存。我希望下一代Atari机器能够运行它。我还认为未来的Ataris机器将有某些形式的内存映射。当然,我不是在为今天流行的计算机设计软件。在我开始该工程时,我就知道这会历时多年。所以,我决定我不会花费精力为目前受限的环境开发一个更差的系统;反之,我要按照最自然和最优秀的方式来编写这个系统。我确信几年之后,流行的机器将具有充足的内存。事实上,内存的增加速度是如此之快,以至于我在为人们引入虚拟内存的速度之慢感到吃惊了;而这是非常重要的。

BYTE:我觉得人们不会认为这对单用户机器真的是必要的。

Stallman:他们不明白单用户并不意味着单程序。对类Unix的系统来说,即使只有你一个人使用,能够同时运行许多不同程序当然也是重要的。你也许可以在有足够内存的非虚拟内存机器上运行GNU EMACS,但是你可能无法良好地运行GNU系统或Unix系统的其他部分。

BYTE:LISP占GNU EMACS的多大比例?我在想用它来作为学习LISP的工具是不是很有用。

Stallman:你当然可以这么做。GNU EMACS含有一个完整的、虽然不是非常强大的LISP系统。对编写编辑命令来说,它足够强大。虽然它不能和诸如Common LISP这样能够真正用来做系统编程的系统来比,但是它包含了一个LISP语言所需要的一切。

BYTE:你可否预告一下,什么时候你可能会发布一个可用的环境,如果把我们的机器或工作站置于该环境,我们就可以不用你发布的代码之外的任何工具来完成相当部分的实际工作?

Stallman:很难说。可能是一年,当然也可能更长。也可以想象它会更短,但是看来不太可能了。我认为我会在一两个月内完成编译器。我要做的剩余的大块工作就只有内核了。我最早预计GNU会花费大约两年,但是现在两年半过去了,我还没有完成。部分原因是我在一个最终被发现是死胡同的编译器上耗费了大量时间。我不得不全部重写。另一个原因是我为GNU EMACS花费了大量时间。我最初认为我根本不用这么做的。

BYTE:请谈谈你的发行计划。

Stallman:我不把软件或手册放到公众领域,这么做的原因是我要确保所有的用户有分享的自由。我不想有人改进了我的程序然后以专属的形式发行。我不能让那样的事有机会发生。我要鼓励这些程序的自由改进,最好的方法就是消灭人们做专属改进的诱惑。是的,有人会不再做改进,但是更多的人会做出同样的改进并使之自由。

BYTE:那么你如何保证做到这一点呢?

Stallman:我对这些程序使用版权并明确声明人们获得拷贝和修改这些程序的权利,但是只有在他们使用同样的条款发布这些程序时才行,如果他们要发布的话。你不必非得发布你对我的程序做出的修改—你可以只是自用,你也不必把它交给或告诉别人。但是一旦你要交给别人,那么你就必须按照我所使用的条款来做。

BYTE:你对你的C编译器产生的可执行代码声明权利吗?

Stallman:版权法没有赋予我对编译器的输出具有版权,所以我没有方法根据版权法对编译器的输出声称任何权利,事实上,我也没有想过这么做。我不赞成人们使用任何编译器开发专属软件,但是不让他们使用我的编译器做开发看起来也不会特别有用,所以我不会这么做。

BYTE:你的限制也适用于人们使用你的程序的部分代码去干其他的事这种情况吗?

Stallman:是的,如果他们包含了比较大的代码片段。如果只是两行代码,没问题;版权法不用于这种情况。重要的是,我采取这些条款首先确立了版权,而版权正是所有软件囤积者用来阻止其他人干事情的手段。所以这些条款只适用于版权法适用的场合。我相信人们应当遵守这些条款的原因并不是法律。人们应当遵守这些条款是因为每个正直的人在发布软件时都会鼓励他人继续分享这些软件。

BYTE:感觉你好像在用提供这些软件工具的方法诱使人们进入你的思考模式:他们可以使用,但是只有在他们接受你的哲学时。

Stallman:是的。你还应当看到这是在用软件囤积者构建的系统反过来对付他们。我在使用该系统来保护公众不受软件囤积者的伤害。

BYTE:考虑到制造商不想资助该工程,你觉得当GNU工程完成时,谁会使用它?

Stallman:不知道,但这不是重要的问题。我的目的是使人们有可能拒绝来自专属软件的枷锁。我知道有人想要这么做。现在,也有人对此无所谓,但是这不用我操心。我对他们以及他们影响的人只是感到有些沮丧。现在,有个人觉得专属软件的条款不舒服,而且除了不再使用电脑他感到无所适从。好吧,我来给他一个舒服的选择。

还有其他因为GNU系统的技术优势而使用的人。比如,我的C编译器可以产生和任何其他C编译器一样好的代码。而GNU EMACS一般被认为比其商业对手要好得多。GNU EMACS也不曾被人资助,但许多人也在用。所以,我认为许多人也会因为其技术优势而使用GNU系统的其他部分。即使我不知道如何使GNU系统更好,我也会开发它,因为我要使它对社会更好。GNU工程实际上是一个社会工程。它利用技术手段来改变社会。

BYTE:那么人们接受GNU对你相当重要。它不只是一个产生软件并分发给人们使用的学术练习。你希望它将来改变软件行业的运作模式。

Stallman:是的。有人说没人会使用GNU,因为它不带有诱人的商标;还有人认为它极其重要,所有人都将会使用它。我无法知道将来会发生什么。我也不知道其他改变这个我所处行业的丑行的方法,所以我只能这么做。

BYTE:你能谈谈这意味着什么吗?你显然觉得这是一个重要的政治和社会声明。

Stallman:这是一个变革。我在试着改变人们获取知识和信息的普遍方法。我认为,企图私有知识、企图控制人们是否有权使用知识或者企图阻止人们分享知识都是蓄意破坏。它是一种耗费整个社会资源来谋私利的行为。就像一个人为了获取一块钱而去破坏两块钱的财富。我认为除非只有死路一条,任何有良知的人是不会这么做的。当然做这事的人是相当富足的;我只能认定他们是道德沦丧的人。我希望看到人们因为编写自由软件和鼓励他人分享自由软件而获得嘉奖。我不希望看到人们因为编写专属软件而获得嘉奖,因为这不是真的在为社会做贡献。资本主义的要义是人们通过制造获得金钱,进而鼓励人们进一步去制造有用之物,如此自动往复。但是这个道理对私有知识不成立。通过私有知识获利不是在鼓励真正有益的活动,相反真正有益的活动没有被鼓励。我觉得要重点说明的是,信息和诸如汽车、面包之类的实物不同,因为人们自己就能够复制和分享信息,如果没人阻止的话。这是有益的活动。而面包则不同,如果你有一块面包,你想再来一块,你不能把你的面包放到面包复制机再复制一个。你只有通过和制造第一块面包一样的步骤才能再做出一块面包。所以,人们有没有复制面包的权利没有关系—没法复制。

书籍直到最近才只在印刷机构印制。过去,你可以自己动手复制一本书,但是这并不实用,因为比起印刷机来手抄太费功夫了。而且手抄书本的质量也远不吸引人,所以无论怎样,除了能够大规模生产,你是不会去用手抄来复制书本的。因此,版权实际上并没有剥夺公众的阅读自由。版权并不能禁止买书人的所作所为。

但是计算机程序就不一样了。磁带也不一样。现在,图书也有些不一样了,但是对大多数图书来说用复印件复印还是比买一本要费太多的功夫,而且质量也不那么吸引人。目前,我们正处在一个阶段,版权无害和可接受的情况正在变成有害和不可忍受的情况。因此,那些被污蔑为“盗版”的人实际上正在尝试被禁止做的某些有益的事。版权法完全是设计来为帮助某些人彻底掌控某些信息的使用并为自己牟利的。但是它们没有设计成帮助那些要确保公众有权获得信息并阻止他人剥夺公众该权利的人。我认为法律应该承认公众拥有的一类作品,它们不同于公众领域的作品,正如公园不同于垃圾桶里的东西一样。它不应该被任何人拿走,它是要为所有人不被干扰地使用。如果有人发现自己使用公众作品的权利被剥夺了,那么他应该诉之法律。

BYTE:但是难道盗版者要获得程序拷贝的原因不是要使用该程序,而是要使用该知识创造更好的东西?

Stallman:我看不出这里有什么重要的分别。更多的人使用该程序就意味着对社会的更多贡献。就像你的面包,不是被吃一次而是被吃一百万次。

BYTE:有些用户是因为技术支持而购买的商业软件。你的发行方法怎么提供技术支持?

Stallman:我怀疑这些用户受到误导而且没有考虑清楚。有技术支持当然是好事,但是当他们思考这怎么会和销售软件或专属软件有关系时,他们就难以自圆其说了。专属软件并不保证就会有良好的技术支持。只是因为销售商说他们会提供技术支持,并不意味着技术支持就会是优良的。 而且他们也会关门。事实上,人们认为GNU EMACS比商业EMACS有更好的技术支持。一个原因是我可能比编写其他EMACS的人更高明,但是其他的原因是所有人都有源代码,而许多人都会根据源代码做研究,这样你就没必要非得让我来做技术支持。即使只在下一个发布版里集成进去人们报告给我的问题的修复,也是一个良好的免费技术支持。你总可以雇人来为你解决问题, 当软件是自由的,技术支持就是市场竞争。你可以雇佣任何人。我发布有一个EMACS的服务名单,它列举了人名、电话和他们的技术支持费用。

BYTE:你是否收集他们的问题修复?

Stallman:奧,他们发给我。我要求所有希望列在名单上的人承诺,作为技术支持的一部分,他们不会要求客户对提出的需求保密,也不会对为GNU软件做出的变更保密。

BYTE:因此你不允许人们利用自己知道而别人不知道的解决方法来竞争。

Stallman不。他们可以从谁更聪明、谁更可能发现问题的解决方法、谁更了解更通用的问题或者谁能更好地向你解释该如何做为基础来竞争。他们有很多方面可以竞争。他们需要做得更好,但是他们不能主动妨碍竞争对手。

BYTE:我假设这就像购买一部汽车。你不必非得到原始制造商那里获得技术支持或后续保养。

Stallman:或者说是购买房屋—如果只有原始建造商才能修复房屋的问题,那将是怎样的情况?这就类似专属软件强加的不合理。人们给我讲过Unix上发生的一件事。因为制造商销售改进版的Unix,他们会收集问题修复但是最多只提供二进制代码。结果就是问题并没有真正被解决。

BYTE:大家都在独自修复问题是重复劳动。

Stallman是的。这里还有一个帮助从社会视角了解专属信息问题的观点。请考虑责任险1危机。为了从社会得到补偿,受损害的人不得不雇佣律师并把钱分给律师。这对事故的受害者是一个愚蠢和低效的帮助。想想人们为了和对手竞争而投入的时间。再想想比笔还贵的包装盒—只是为了保证笔不被偷走。难道在每个街角投放一些免费的笔不是更好?想想那些阻拦交通的收费站。这是不可思议的社会现象。人们通过妨碍社会来挣钱。一旦他们能够妨碍社会,他们就会收钱才放过人民。信息私有的内在浪费会变得越来越重要,最终会形成乌托邦社会和现实社会的差别:在前者,人们不必为谋生而工作,因为机器把工作都做了;而后者正如我们现在,每个人都把时间花费在重复别人的工作上。

BYTE:就像在软件里键入版权声明。

Stallman:更像是监督每个人确保他们没有非法的复制品,并重复所有他人已经完成的工作,因为这些工作是专属的。

BYTE;怀疑的人可能会关心你靠什么谋生。

Stallman:靠咨询。当我做咨询时,我总是保留把咨询工作的代码分享出来的权利。而且,我也能通过邮寄我写的和其他人写的自由软件拷贝来谋生。很多人花150美元来要GNU EMACS,不过现在这些钱都归于我创立的自由软件基金会。基金会并不付我工资,因为这将导致利益冲突。反过来,基金会会雇人为GNU工作。只要靠咨询我还能谋生,我觉得这是最好的谋生手段。

BYTE:目前GNU官方发布的磁带里都有什么内容?

Stallman:现在,磁带里有 GNU EMACS(一个适用于所有电脑的版本); Bison,一个替代 YACC 的程序;MIT Scheme,是 Sussman 教授的超精简 LISP 语言分支;以及 Hack,一个类似 Rogue 的地牢探险游戏。

BYTE:打印手册和磁带一起发行吗?

Stallman:不。打印的手册每本15美元,或者你自己打印。请也复制本次访谈并分享之。

BYTE:如何获得一份手册的拷贝呢?

Stallman:请写信给自由软件基金会,675 Massachusetts Ave., Cambridge, MA 02139.

[当前地址 (自 2005 起) 是:
地址:51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
语音:+1-617-542-5942
传真:+1-617-542-2652]

BYTE:当GNU系统完成后,你将做什么呢?

Stallman:我不确定。有时我想我将在软件的其他领域做同样的事。

BYTE:因此,这只是对整个软件行业一系列攻击的第一波?

Stallman:希望如此。但是也许我将去过简单的生活,做些足够谋生的工作。我不必过昂贵的生活。闲暇时,我会找到一些有趣的人一起度过,或者学习一些我不懂的东西。

译注

  1. liability insurance,责任险,又称第三方责任险。通常指承担第三方责任的保险。