BYTE 对理查德·斯托曼的采访

理查德·斯托曼与 BYTE 编辑讨论他公开发布的与 Unix 兼容的软件系统(1986 年 7 月)。


理查德·斯托曼承担了迄今为止可能最雄心勃勃的自由软件开发项目——GNU 系统。在他的《GNU 宣言》(发表于 1985 年 3 月的《Dr. Dobb's Journal》)中,斯托曼将 GNU 描述为一个“完整的与 Unix 兼容的软件系统,我正在编写它,以便我可以免费将其提供给所有可以使用它的人……一旦 GNU 完成,每个人都可以免费获得良好的系统软件,就像空气一样。”(GNU 是 GNU's Not Unix 的首字母缩写;g 发音为 /ɡ/)。

斯托曼以 EMACS 的作者而广为人知,EMACS 是他在 MIT 人工智能实验室开发的强大的文本编辑器。作为 GNU 项目的一部分而生产的第一个软件是 EMACS 的新实现,这并非巧合。GNU EMACS 已经作为目前任何价格下可用的最佳 EMACS 实现之一而享有盛誉。

BYTE:我们在 1985 年 3 月的《Dr. Dobb's》杂志上读了您的 GNU 宣言。此后发生了什么?那真的是开始吗?此后您取得了怎样的进展?

斯托曼:《Dr. Dobb's》杂志上的发表并不是该项目的开始。我写《GNU 宣言》时,我正准备开始该项目,作为向计算机制造商寻求资金的提案。他们不想参与,我决定与其花时间寻求资金,不如花时间编写代码。该宣言是在我写完它大约一年半之后发布的,当时我才刚刚开始分发 GNU EMACS。自那时以来,除了使 GNU EMACS 更加完善并使其在更多计算机上运行之外,我几乎完成了优化 C 编译器以及运行 C 程序所需的所有其他软件。这包括一个具有许多 Unix 上其他源代码级调试器不具备的功能的源代码级调试器。例如,它在调试器中具有方便的变量,因此您可以保存值,并且它还具有您已打印出的所有值的历史记录,从而使追踪列表结构变得非常容易。

BYTE:您已经完成了一个现在广泛分发的编辑器,并且您即将完成编译器。

斯托曼:我预计它将在今年 10 月完成。

BYTE:内核呢?

斯托曼:我目前计划从 MIT 编写并最近向公众发布的内核开始,并考虑使用它。此内核称为 TRIX;它基于远程过程调用。我仍然需要添加对 Unix 的许多功能的兼容性,而它目前没有。我还没有开始着手进行这项工作。我正在完成编译器,然后再开始处理内核。我还将不得不重写文件系统。我打算通过按正确的顺序写入块来使其具有故障保护功能,以便磁盘结构始终保持一致。然后我想添加版本号。我有一个复杂的方案来协调版本号与人们通常使用 Unix 的方式。您必须能够指定不带版本号的文件名,但您还必须能够指定带有显式版本号的文件名,并且这两者都需要与没有经过任何修改来处理此功能存在的普通 Unix 程序一起使用。我想我有一个方案来做到这一点,只有尝试一下才能告诉我它是否真的能完成这项工作。

BYTE:您能否简单描述一下 GNU 作为系统将如何优于其他系统?我们知道您的目标之一是生产与 Unix 兼容的东西。但至少在文件系统领域,您已经表示您将超越 Unix 并生产更好的东西。

斯托曼:C 编译器将生成更好的代码并运行更快。调试器更好。对于每个部分,我可能会或可能不会找到改进它的方法。但是这个问题没有一个答案。在某种程度上,我正在获得重新实现的优势,这使得许多系统变得更好。在某种程度上,这是因为我在这个领域工作了很长时间,并且在许多其他系统上工作过。因此,我有很多想法可以利用。它会更好的一个方法是,系统中几乎所有东西都将适用于任何大小的文件、任何大小的行,以及其中出现的任何字符。Unix 系统在这方面非常糟糕。不应该有任意限制并不是软件工程的新原则。但这只是在编写 Unix 时始终将其放入其中的标准做法,可能是因为他们是为一台非常小的计算机编写的。GNU 系统中唯一的限制是当您的程序因为尝试处理太多数据而耗尽内存并且没有地方存储所有数据时。

BYTE:如果您有虚拟内存,这不太可能发生。您可能只是需要永远才能找到解决方案。

斯托曼:实际上,这些限制往往会在您永远无法找到解决方案之前很久就发生。

BYTE:您能否说一下 GNU EMACS 特别是为了在哪些类型的机器和环境下运行而开发的?它现在在 VAX 上运行;它是否以任何形式迁移到个人计算机?

斯托曼:我不确定您所说的个人计算机是什么意思。例如,Sun 是个人计算机吗?GNU EMACS 至少需要 1MB 的可用内存,最好更多。它通常用于具有虚拟内存的机器上。除了少数 C 编译器中的各种技术问题外,几乎任何具有虚拟内存并运行较新版本 Unix 的机器都可以运行 GNU EMACS,并且目前大多数都运行。

BYTE:有人尝试将其移植到 Atari 或 Macintosh 吗?

斯托曼:Atari 1040ST 的内存仍然不足。我预计下一台 Atari 机器将会运行它。我还认为未来的 Atari 将会有一些形式的内存映射。当然,我并没有设计软件在当今流行的计算机上运行。当我开始这个项目时,我就知道它会花费几年时间。因此,我决定不想通过接受在当前受限环境中运行的额外挑战来制造一个更糟糕的系统。因此,我决定以最自然和最佳的方式编写它。我确信,在几年内,足够大的机器将会很普遍。事实上,内存大小的增长速度如此之快,以至于大多数人将虚拟内存投入使用的速度之慢令我感到惊讶;我认为这完全是必不可少的。

BYTE:我认为人们并不认为它对于单用户机器是必要的。

斯托曼:他们不明白单用户并不意味着单程序。当然,对于任何类似 Unix 的系统,即使只有您一个人,也必须能够同时运行许多不同的进程。您可以在具有足够内存的非虚拟内存机器上运行 GNU EMACS,但您无法很好地运行 GNU 系统的其余部分或 Unix 系统。

BYTE:GNU EMACS 中存在多少 LISP?我突然想到,将其用作学习 LISP 的工具可能会很有用。

斯托曼:您当然可以这样做。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:是的。有些人说没人会使用它,因为它没有一些有吸引力的公司标志,而另一些人则说他们认为它非常重要,每个人都会想使用它。我无法知道真正会发生什么。我不知道还有什么其他方法可以尝试改变我所处的领域的丑陋,所以我必须这样做。

BYTE:你能谈谈它的含义吗?你显然觉得这是一个重要的政治和社会声明。

Stallman:这是一个改变。我正在尝试改变人们对待知识和信息的整体方式。我认为试图拥有知识,试图控制是否允许人们使用它,或试图阻止其他人共享它,是一种破坏行为。这是一种以损害整个社会的代价来让行为人受益的行为。一个人通过摧毁两美元的财富来获得一美元。我认为一个有良知的人不会做这种事情,除非他可能因此而死。当然,做这种事情的人相当富有;我只能断定他们是不择手段的。我希望看到人们因编写自由软件和鼓励其他人使用它而获得奖励。我不希望看到人们因编写专有软件而获得奖励,因为这并不是真正对社会的贡献。资本主义的原则是,人们通过生产东西来赚钱,从而被鼓励自动地做有用的事情。但是当涉及到拥有知识时,这并不奏效。他们被鼓励去做的不一定是真正有用的事情,而真正有用的事情没有得到鼓励。我认为重要的是要说,信息与汽车和面包等物质对象不同,因为人们可以自己复制和共享信息,而且如果没人试图阻止他们,他们可以更改信息并使其对他们自己更好。这对人们来说是一件有用的事情。这对面包来说不是真的。如果你有一个面包,而你想要另一个,你不能只是把你的面包放入面包复印机中。你不能制作另一个,除非通过制作第一个面包的所有步骤。因此,人们是否被允许复制它是无关紧要的——这是不可能的。

直到最近,书籍都是用印刷机印刷的。你可以自己手抄一份副本,但这并不实际,因为它比使用印刷机需要更多的工作。而且它制作出来的东西不如印刷机那么吸引人,所以实际上你可以认为除了大规模生产之外,制作书籍是不可能的。因此,版权并没有真正剥夺阅读公众的任何自由。图书购买者没有什么可以做但会被版权禁止的事情。

但这对于计算机程序来说不是真的。对于磁带盒来说也不是真的。现在书籍的部分情况并非如此,但对于大多数书籍来说,复印它们比购买副本更昂贵,而且肯定需要更多的工作,而且结果仍然不太吸引人。现在我们正处于一个时期,即以前让版权无害和可接受的情况正在转变为版权将变得具有破坏性和不可容忍的情况。因此,那些被诽谤为“盗版者”的人实际上是那些试图做他们被禁止做的有益事情的人。版权法的完全目的是为了帮助人们完全控制某些信息的使用,以实现他们自身的利益。但它们并非旨在帮助那些希望确保公众可以获取信息并阻止他人剥夺公众利益的人。我认为法律应该承认一类为公众所有的作品,这与公共领域不同,就像公园与垃圾桶里的东西不同一样。它不是让任何人拿走的,而是让每个人使用的,但不允许任何人妨碍使用。任何发现自己被剥夺了公共所有物的衍生作品的公众,都应该能够就此提起诉讼。

BYTE:但是,盗版者感兴趣的不是因为他们想使用那些程序,而是因为他们想使用那些知识来生产更好的东西吗?

Stallman:我不认为这是一个重要的区别。更多人使用程序意味着该程序对社会的贡献更大。你有一个可以吃一次或一百万次的面包。

BYTE:一些用户购买商业软件是为了获得支持。您的分发方案如何提供支持?

Stallman:我怀疑那些用户被误导了,没有清楚地思考。获得支持当然是有用的,但当他们开始思考这与销售软件或软件是专有的有什么关系时,他们就混淆了自己。专有软件不能保证会获得良好的支持。仅仅因为卖家说他们提供支持,并不意味着它会很好。他们还可能倒闭。事实上,人们认为 GNU EMACS 比商业 EMACS 提供更好的支持。原因之一可能是,我可能比编写其他 EMACS 的人更擅长黑客技术,但另一个原因是,每个人都有源代码,并且有很多人有兴趣弄清楚如何使用它,所以你不必从我这里获得支持。即使是免费的支持,包括我修复人们报告给我的错误并将它们纳入下一个版本,也为人们提供了良好的支持水平。你总是可以聘请别人来为你解决问题,当软件是免费的时候,你就有了一个有竞争力的支持市场。你可以聘请任何人。我随 EMACS 一起分发一份服务清单,其中列出了人们的姓名和电话号码,以及他们提供支持的收费。

BYTE:你会收集他们的错误修复吗?

Stallman:嗯,他们会把它们发给我。我要求所有想被列入清单的人承诺,他们永远不会要求他们的任何客户对他们被告知的任何内容或他们作为支持的一部分提供给 GNU 软件的任何更改保密。

BYTE:所以你不能让人们通过他们知道其他人不知道的某个问题的解决方案来竞争提供支持。

Stallman:不。他们可以基于他们更聪明,更有可能找到你问题的解决方案,或者他们已经更了解常见问题,或者更清楚地知道如何向你解释你应该做什么来竞争。这些都是他们可以竞争的方式。他们可以努力做得更好,但他们不能积极地阻碍他们的竞争对手。

BYTE:我想这就像买车一样。你不会被迫回到原厂进行支持或持续维护。

Stallman:或者买房子——如果唯一可以修复你房子问题的人是最初建造它的承包商,那会是什么样子?这就是专有软件所涉及的那种强加。人们告诉我 Unix 中发生的问题。因为制造商销售改进版本的 Unix,他们倾向于收集修复程序,但只以二进制文件的形式发布。结果是,错误并没有真正得到修复。

BYTE:他们都在重复劳动,试图独立解决错误。

Stallman:是的。这里还有一点有助于从社会角度看待专有信息的问题。想想责任保险危机。为了从社会获得任何赔偿,受伤的人必须聘请律师并与律师分成这笔钱。这是一种帮助事故受害者的愚蠢且效率低下的方式。想想人们为了从竞争对手那里抢走生意而花费的所有时间。想想那些包装在大型纸板包装中的笔,这些包装比笔本身还要贵——只是为了确保笔不会被偷。如果我们只是在每个街角放上免费的笔,难道不会更好吗?想想所有阻碍交通的收费站。这是一个巨大的社会现象。人们通过阻碍社会的方式来赚钱。一旦他们可以阻碍社会,他们就可以获得报酬来让人们离开。拥有信息所固有的浪费将变得越来越重要,并将最终决定没有人真正需要工作来维持生计的乌托邦(因为一切都由机器人完成)和一个像我们现在这样每个人都花很多时间重复别人正在做的事情的世界之间的区别。

BYTE:就像在软件上输入版权声明一样。

Stallman:更像是警察监督每个人,以确保他们没有被禁止的任何副本,并且重复人们已经完成的所有工作,因为它具有专有性。

BYTE:愤世嫉俗的人可能会想知道你是如何谋生的。

Stallman:通过咨询。当我做咨询时,我总是保留放弃我在咨询工作中编写的内容的权利。此外,我可以通过邮寄我编写的和一些其他人编写的免费软件的副本为生。很多人为 GNU EMACS 寄来 150 美元,但现在这笔钱都捐给了我创立的自由软件基金会。该基金会不付给我薪水,因为这会产生利益冲突。相反,它会聘请其他人来开发 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。

[自 2024 年 9 月 1 日起,FSF 一直远程办公。
当前邮寄地址
自由软件基金会,31 Milk St # 960789, Boston, MA 02196, USA
电话:+1-617-542-5942
传真:+1-617-542-2652]

BYTE:完成 GNU 系统后你打算做什么?

Stallman:我不太确定。有时我会想,我接下来要做的是在其他软件领域做同样的事情。

BYTE:所以这只是对软件行业的整个系列攻击的开始?

Stallman:我希望如此。但也可能我所做的只是过上一种轻松的生活,偶尔工作一下来维持生计。我不需要过着奢侈的生活。剩下的时间,我可以找到有趣的人一起玩,或者学习我不知道如何做的事情。