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

自由软件:自由与合作

2001年5月29日在纽约大学演讲的笔录。

本笔录还有 纯文本版本摘要


URETSKY:我是 Mike Uretsky,来自斯特恩商学院。同时,我也担任高级技术中心的联合主任之一。在此,我谨代表计算机科学系的全体同仁,对各位的到来表示欢迎。在请 Ed 上台介绍演讲者之前,我想先简单说几句。

大学的作用是培育辩论、激发深刻讨论的平台。而一所重点大学,更应承载极具深度的思想交锋。今天这场专题报告、这场研讨会,正是这一理念的生动体现。我个人认为,开源相关的探讨尤其引人深思。从某种意义上说……[笑声]

STALLMAN:我从事的是自由软件。开源是另外一个不同的运动。[笑声] [掌声]

URETSKY:当我于上世纪六十年代刚进入这一领域时,软件基本上都是自由的。之后我们经历了一个循环周期:它从自由走向商业化,而后软件厂商出于拓展市场的需求,又将其推向不同的发展方向。个人电脑问世后的许多发展,正是沿着同一种周期性轨迹演进的。

有一位非常有趣的法国哲学家 Pierre Levy,他曾探讨过向这个方向的演进,并指出进入网络空间不仅关乎技术变革,更涉及社会结构、政治形态的重塑——通过改变人类关系的模式来提升整体福祉。我们希望今天的讨论能朝着这个方向推进,期待这场辩论能够跨越大学里那些通常各自为营的学科界限。我们非常期待接下来展开一系列精彩的讨论。Ed?

SCHONBERG:我是 Ed Schonberg,来自库朗研究所的计算机科学系。首先,欢迎大家参加今天的活动。通常来说,介绍人在公开演讲中往往被视为一个——尤其显得——多余的环节;但这次,正如 Mike 刚才轻松展示的那样,介绍人其实能发挥实用作用。比如,一位介绍人通过发表不够准确的评论,反而能让他有机会澄清、纠正,并[笑声]显著深化这场讨论的议题边界。

因此,请允许我以最简洁的方式介绍这位无需赘述的嘉宾。Richard 是一个典范——他从本地实践出发,因多年前麻省理工学院人工智能实验室里打印机驱动源代码无法获取的问题,开始进行全球性思考。他构建了一套完整的思想体系,促使我们所有人重新审视软件的生产方式、知识产权的意义,以及软件社区真正的内涵所在。让我们欢迎 Richard Stallman。[掌声]

STALLMAN:谁能借我一只手表?[笑声]谢谢。首先,我想感谢微软为我提供了这次[笑声]登上此平台的机会。过去几周,我感觉自己像是一位作者,其作品碰巧在某个地方被禁了[笑声]——但所有相关报道却署错了作者姓名,因为微软将 GNU GPL 称为开源许可证,而大多数媒体也跟着这样描述。当然,许多人只是单纯地没有意识到,我们的工作与开源毫无关系;事实上,在人们甚至创造出“开源”这个词之前,我们已经完成了大部分工作。

我们身处自由软件运动之中。接下来,我将谈谈自由软件运动的本质、其意义、我们的工作成果,并且——鉴于本次活动部分由商学院赞助——我会比以往更多探讨自由软件如何与商业及社会生活的其他领域相互关联。

在座的各位或许从不编写计算机程序,但可能有人擅长烹饪。如果你下厨,除非你技艺超群,否则多半会参照食谱。倘若你使用食谱,很可能有过从分享的朋友那里获得一份食谱副本的经历。而且,除非你是完全的新手,否则大概也曾尝试过调整食谱——食谱虽有固定步骤,但你未必完全照搬。你可以省略某些配料,或是添加喜爱的蘑菇,也可以因医生建议而减少盐量……诸如此类。甚至可以根据自己的厨艺进行更大胆的改动。当你改良了食谱并为朋友烹制,他们若很喜欢,或许会问:“能给我这份食谱吗?”这时你会怎么做?很自然地,你会写下调整后的版本,并为朋友复制一份。对于任何具有实用功能的食谱,这些做法都再自然不过。

食谱其实很像计算机程序,计算机程序也正如食谱一般:都是为了达成特定目标而设计的一系列步骤。因此,对待计算机程序采取同样的做法再自然不过——分享副本给朋友,根据自身需求修改它(因为原始程序的功能未必完全符合你的需求)。它对他人或许非常适用,但你的任务可能有所不同。而当你修改后,这个版本很可能也对其他人有用。也许他们面临的工作与你相似,便会问:“可以给我一份副本吗?”当然,如果你是友善的人,自然会分享一份。这正是为人正直的体现。

想象一下,如果食谱被封存在黑盒中——你无法看到使用了哪些食材,更不用说修改它们;再想象如果你为朋友复制一份食谱,他们竟称你为“盗版者”,并试图将你监禁数年。这样的世界定会激起所有习惯分享食谱之人的强烈愤慨。然而,这正是专有软件世界的真实写照:一个禁止并阻挠人与人之间基本友善行为的世界。

那么,我为何会意识到这一点?因为我非常幸运地在1970年代成为了一个共享软件的程序员社区的一员。这个社区的渊源几乎可以追溯至计算机诞生之初。尽管在那个年代,共享软件的社区还较为罕见。事实上,我所处的实验室堪称一个极端案例——我们的整个操作系统都由社区成员自行开发,并且我们乐意向任何人分享全部代码。无论谁都可以前来查看、复制副本,并随意使用。这些程序没有版权声明,合作是我们的生活方式。我们安稳地活在这种模式中,无需为之斗争,甚至无需捍卫它,只是如此生活着。就我们所知,这样的生活本将持续下去。因此,那时虽有自由软件,却尚未形成自由软件运动。

然而后来,我们的社区遭遇了一系列灾难性打击,最终彻底瓦解。我们所有工作所依赖的 PDP-10 计算机最终停产了。要知道,我们的系统——不兼容分时系统(ITS)——始于1960年代开发,完全用汇编语言编写。在六十年代,汇编语言是编写操作系统的唯一选择。而汇编语言依赖特定计算机架构;一旦该架构停产,所有成果便化为尘埃——失去价值。这正是我们的遭遇:社区约二十年的心血付诸东流。

但在这一切发生之前,一段经历让我有所准备,帮助我看清了应对之道。当时,施乐公司向我工作的麻省理工学院人工智能实验室捐赠了一台激光打印机——这确实是份厚礼,因为那是施乐公司以外的机构首次拥有激光打印机。它速度极快,每秒可打印一页,各方面表现优异,但可靠性欠佳:它本质上是由高速办公复印机改装而成的打印机。众所周知,复印机容易卡纸,但通常旁边有人会及时处理;而打印机卡纸时无人察觉,便会持续卡顿很久。

我们当时想到了一个解决方案:对系统进行修改,让打印机卡纸时,控制打印机的机器能通知我们的分时系统,并告知正在等待打印输出的用户——比如提醒他们去处理卡纸问题。因为只要用户知道打印机卡住了,特别是当他们正在等待打印输出时,自然不愿干等下去,而是会主动去解决问题。

但在那个节点,我们完全受阻了——因为驱动那台打印机的软件并非自由软件。它随打印机提供,仅以二进制形式存在。我们无法获取源代码;施乐公司拒绝向我们开放源码。因此,尽管我们身为程序员具备深厚技能(毕竟连分时系统都是我们自己编写的),在给打印机软件添加这一功能时却完全无能为力。

我们只能忍受漫长的等待。由于打印机大部分时间都处于卡纸状态,获取打印输出往往需要一两个小时。偶尔你会等上一小时,心想“我知道它肯定卡住了——等一小时再去取吧”,结果却发现机器一直卡着,而且根本没人处理。于是你动手修好它,再等半小时回来,却看到它在你打印输出前又卡住了。这台机器可能只打印三分钟,却要卡顿三十分钟。这种挫败感简直令人抓狂。但更让人难以忍受的是,我们明知有能力解决这个问题,却有人出于私心阻挠我们,阻止我们改进软件。因此,我们自然会感到愤慨。

后来我听说卡内基梅隆大学有人拥有那款软件的副本。当我后来到访该校,便去他办公室询问:“您好,我来自麻省理工学院,能否给我一份打印机源代码的副本?”他回答:“不行,我承诺过不能给你。”[笑声]我愣住了,感到无比愤怒,却不知该如何应对。当时能想到的只有立刻转身离开他的房间——或许还摔了门。[笑声]后来我反复思考此事,因为我意识到这并非个别人的恶劣行径,而是一种影响深远、波及众多人群的社会现象。

对我来说——我很幸运,只是浅尝了这种滋味,但其他人却不得不长期活在这样的环境中。我深入思考了这件事:你看,他承诺拒绝与我们(他在麻省理工学院的同行)合作,这等同于背叛了我们。但他的行为并非只针对我们,很可能也针对你[指向一位听众],我认为也极可能针对你[指向另一位听众][笑声],恐怕连你也未能幸免[指向第三位听众]。他很可能背叛了在场绝大多数人——除了少数在1980年尚未出生的朋友。因为他承诺拒绝合作的,几乎是整个地球上的所有人。他签署了一份保密协议。

那是我第一次直接面对保密协议,它给我上了重要的一课——这堂课之所以关键,是因为大多数程序员从未意识到。要知道,这是我首次遭遇保密协议,而我是受害者。我和整个实验室都是受害者。它教会我:保密协议会制造受害者。它们并非无辜,也绝非无害。多数程序员首次接触保密协议时,往往是被要求签署的一方。诱惑总是存在的——签字就能获得某些好处。于是他们找借口自我安慰:“反正他也拿不到副本,我加入剥夺他权益的合谋又何妨?”或者辩解说:“向来如此,我何必反抗?”甚至声称:“我不签,别人也会签。”种种借口,不过是为了麻痹良知。

但当有人邀请我签署保密协议时,我的良知已被唤醒。我清楚记得,当初有人承诺不帮助我和整个实验室解决问题时,我是何等愤怒。我无法转身就对其他从未伤害过我的人做出完全相同的行为。要知道,如果有人要求我承诺不向仇敌分享有用信息,我或许会同意——毕竟对方若行不义,理应承担后果。但陌生人呢?他们未曾伤害过我,凭什么该遭受如此苛待?人不能放任自己肆意苛待他人,否则便成了社会的掠夺者。因此我回应道:“非常感谢您提供这款优秀的软件包。但鉴于您提出的条件,我无法心安理得地接受,所以我选择放弃。再次感谢。” 自此,对于软件这类具有普遍实用性的技术信息,我再未有意签署过任何保密协议。

当然,其他类型的信息会引发不同的伦理问题。例如个人隐私信息——假设你想和我聊聊你和男友之间的私事,并请求我保密——我可以答应为你保守这个秘密,因为这类信息并非具有普遍实用性的技术信息。至少,它大概率不具备普适价值。[笑声]

不过存在一种微小可能性——你或许会向我透露某种绝妙的新性技巧[笑声],届时我将感到有道义责任[笑声]将其传播给全人类,让所有人都能受益。因此,我必须在承诺中附加保留条款,对吧?如果只是关于谁钟情于谁、谁对谁心生不满这类肥皂剧般的细节,我可以为你保密;但若是全人类知晓后能获得巨大裨益的知识,我绝不应隐瞒。须知,科学与技术的根本使命在于为人类开发有用信息,助力人们改善生活。如果我们承诺封锁这类信息——如果我们将其保密——便背离了自己所从事领域的使命。我认定自己不应这样做。

但与此同时,我的社区已然瓦解,整个系统正走向衰亡,这让我陷入困境。要知道,整个“不兼容分时系统”已过时,因为 PDP-10 计算机已被淘汰,这意味着我无法再以过去的方式继续从事操作系统开发工作——那原本植根于社区之中,依托社区软件并不断完善它的模式。这条路再也走不通了,我因此面临道德困境:我该何去何从?最显而易见的出路,恰恰与我此前坚守的原则背道而驰。最顺理成章的选择是顺应世界的变化,接受现实的不同,放弃那些原则,开始为专有操作系统签署保密协议,甚至很可能还要编写专有软件。但我意识到,那样或许能享受编程乐趣,也可能赚到钱——尤其是如果离开麻省理工学院——可当人生走到尽头回望职业生涯时,我将不得不承认:“我的一生都在筑墙隔绝人群。”我必将为此生感到羞愧。

于是我寻求另一种可能,而一个明显的选择是:离开软件行业,转投其他领域。我并无其他突出的专业技能,但确信自己可以当一名服务员[笑声]——当然不是高级餐厅那种(他们不会雇佣我)[笑声],总能在某个地方找到端盘子的工作。许多程序员曾对我说:“雇主强制要求这些条件,若不照做就会饿死。”他们确实用了“饿死”这个词。但说实话,当服务员不至于饿死[笑声],所以其实并无生存危机。然而——关键在于——人们常以“否则更糟的事情会降临我身”为由,为自己损害他人的行为开脱。要知道,若面临饿死绝境,编写专有软件尚可辩解[笑声];若有人用枪指着你,我也会说情有可原[笑声]。但我已找到无需违背道德也能生存的方式,因此这类借口并不成立。不过我也意识到,当服务员对我而言毫无乐趣,更是对我作为操作系统开发者的技能的浪费。这样做虽避免了滥用才能(开发专有软件才是滥用,鼓励他人活在专有软件世界同样是滥用),但浪费也比滥用好些,不过浪费终究不是理想选择。

基于这些考量,我决心寻求其他出路。一个操作系统开发者究竟能做些什么来切实改善现状、让世界变得更美好?我意识到,此刻需要的正是一位操作系统开发者。这个困境之所以困扰我和所有人,是因为当时所有现代计算机可用的操作系统都是专有的——自由操作系统仅存在于陈旧过时的计算机上,对吧?因此,若想使用现代计算机,你不得不被迫选择专有操作系统。但如果有一位操作系统开发者编写出全新的操作系统,并宣告:“欢迎所有人来使用和共享”,这就能为每个人提供摆脱困境的出路。于是我明白,有一件我能做的事可以真正解决问题。我恰好具备所需的技能,这或许是我一生中能想象到最有价值的事业。而且这个问题当时无人尝试解决——它就摆在那里日益恶化,除我之外别无他人关注。我感到:“天降大任,我必须承担。舍我其谁?”因此我下定决心:要么开发出一个自由操作系统,要么在尝试中耗尽余生……当然是指自然老死。[笑声]

因此,我自然需要决定开发何种操作系统。这涉及一系列技术设计决策。出于多重考虑,我决定使系统与 Unix 兼容。首先,我刚刚目睹了自己挚爱的一个操作系统因专为特定计算机架构设计而过时,我不愿重蹈覆辙。我们需要一个可移植的系统——而 Unix 正是可移植的系统。所以,遵循 Unix 的设计思路,我很有希望打造出同样具备可移植性且实用的系统。此外,为何磁带语音模糊要在细节上与之兼容?原因在于用户憎恶不兼容的改动。如果我完全按个人喜好设计系统(这固然令我神往),很可能会产出不兼容的产品——细节处必将存在差异。如此一来,即便我完成系统开发,用户也很可能对我说:“这系统虽好,却不兼容。迁移成本太高了,我们不可能为改用你的系统而承受如此大的麻烦,还是继续用 Unix 吧。”

但如果我想真正建立一个能让人们使用、并享受自由与合作好处的社区,就必须打造一个用户愿意接受的系统——一个易于迁移、不会在起步阶段就因遇到障碍而失败的系统。选择使系统向上兼容 Unix,实际上就自动解决了所有眼前的设计决策,因为 Unix 由众多模块组成,这些模块通过基本有文档说明的接口进行通信。因此,若要兼容 Unix,就必须逐个模块地把它们替换为兼容的组件。其余设计决策仅存在于单个模块内部,可以留待后续由负责编写该模块的人决定,无需在初始阶段就全部敲定。

因此,我们着手开发首先要做的就是为系统命名。我们黑客向来喜欢为程序取个有趣或俏皮的名字,因为想到人们被名字逗乐,本身就是编程乐趣的一半。[笑声]我们还有个递归首字母缩写的传统,用来表示你正在编写的程序与某个现有程序类似,但并非同一个。你可以为它起一个递归式首字母缩写名,其含义就是:此物非彼物。比如1960-70年代有很多 Tico 文本编辑器,它们大多被称作“某某 Tico”。后来有位聪明的黑客将自己的编辑器命名为 Tint,意为“Tint 不是 Tico”——这是首个递归缩写名字。1975年,我开发了第一个 Emacs 文本编辑器,随后出现了许多仿制品,其中不少叫“某某 Emacs”。但有个叫 Fine 的(意为“Fine 不是 Emacs”),还有 Sine(“Sine 不是 Emacs”)、Eine(“Eine 不是 Emacs”),以及 MINCE(“Mince 并非完整版 Emacs”)[笑声]——那是个精简版仿制品。后来 Eine 几乎被彻底重写,新版本叫 Zwei,意思是“Zwei 最初是 Eine”。[笑声]

于是我开始以“某某不是 Unix”构思递归缩写。我试遍了26个字母,发现没一个能组成单词[笑声]。嗯,换个思路。我尝试用缩约形式,这样可以组成三个字母的缩写,表示“某某不是 Unix”。测试字母时,我遇到了“GNU”这个词——这简直是英语里最滑稽的词了[笑声]。就是它了!当然,它滑稽的原因在于字典标注其发音为“new”(新)。明白吗?所以人们常拿它玩文字游戏。告诉各位,这其实是非洲一种动物的名称。在非洲原发音中带有吸气音[笑声](可能至今仍保留)。欧洲殖民者抵达时懒得学发那个吸气音,直接省略了,只写了个“G”表示“这里本应有个我们不发的音”[笑声]。今晚我就要飞往南非,已恳请他们找位老师教我发吸气音[笑声],这样我就能知道这种动物的正确读法了。

但作为我们系统的名称,正确发音是“guh-NEW”——“G”要发硬音。如果你称其为“new”(新)操作系统,会让人非常困惑,因为这个系统我们已经开发了17年,早已不新了[笑声]。但它依然是,也永远会是 GNU——无论多少人误称其为 Linux[笑声]

于是,1984年1月我辞去了麻省理工学院的工作,开始编写 GNU 的各个组件。学院方面很友善,仍允许我继续使用他们的设施。当时我以为我们会写完所有部件,构建完整的 GNU 系统,然后宣告“来取用吧”,人们就会开始使用。但事情并未按预期发展。我最早编写的组件只是与 Unix 某些部分功能相当、错误更少的替代品,并未引起太大反响。没人特别想获取或安装它们。直到1984年9月,我开始编写 GNU Emacs——这是我的第二个 Emacs 实现版本,到1985年初它已能运行。我终于可以用它处理所有编辑工作,这让我如释重负,因为我没打算学习使用 Unix 的 Vi 编辑器[笑声]。在此之前,我只能在其他机器上编辑文件,再通过网络保存以进行测试。但当 GNU Emacs 运行稳定到足以满足我的使用时,其他人也开始想要使用它。

于是我必须解决分发的具体问题。当然,我在匿名 FTP 目录中上传了副本,这对联网用户很方便,他们可以直接下载压缩包。但1985年时许多程序员甚至还未联网,他们发邮件问我:“如何获取副本?”我必须决定如何回复。其实我本可以说:“我想把时间用在编写更多 GNU 软件上,而不是录制磁带,请找一位愿意帮你下载并转存到磁带上的联网朋友。”我相信人们迟早会找到朋友帮忙拿到副本。但我当时没有工作——事实上自1984年1月离开麻省理工后我一直没有固定职业。因此,我开始探索如何通过自由软件工作获得收入,于是创办了自由软件业务。我发布公告:“寄给我150美元,我会为您邮寄 Emacs 磁带。”订单开始零星涌来,到年中时已形成细流。

我每月能收到8到10份订单。即便只靠这些收入,我也能维持生活——因为我始终保持着简朴的生活方式,基本上像学生一样生活。我乐于如此,这意味着金钱无法左右我的选择,我能去做自己认为重要的事。这种生活让我能自由投身于真正有价值的事业。因此,请务必竭力避免沉溺于典型美国人的高消费生活习惯。因为一旦陷入那种模式,掌握财富的人就将支配你的人生,使你无法从事对自己真正重要的事。

这样其实挺好,但过去常有人问我:“如果卖150美元,怎么能叫自由软件呢?”[笑声] 他们之所以这么问,是因为英语中“free”一词的多重含义造成了混淆:既指“免费”,也指“自由”。当我谈论自由软件时,指的是自由,而非价格。请理解为“言论自由”中的自由,而非“免费啤酒”的免费。[笑声] 我怎么可能耗费多年生命只为让程序员收入减少?这绝非我的目标。我本身也是程序员,并不排斥赚钱(虽然不会倾尽一生追逐财富)。我不是——道德准则对每个人都应是相同的。我也不会反对其他程序员获得报酬。我不追求压低价格——这完全不是核心问题。问题的核心在于自由,在于保障每位软件使用者的自由,无论此人是否是程序员。

那么现在,我应当向你们阐明自由软件的定义。我们最好深入实质细节,因为空谈“我信奉自由”是空洞的——世上有太多不同维度的自由,它们往往相互冲突。所以真正的核心议题是:哪些才是我们必须保障人人享有的重要自由?

现在,我将针对软件使用这一特定领域给出我的答案:一个程序对您(特定用户)而言是自由软件,当且仅当您拥有以下自由:

  • 自由之零:您有自由运行该程序,无论目的和方式。
  • 自由之一:您有自由通过修改该程序使之满足自己的需求。
  • 自由之二:您有自由通过分发该程序的副本来帮助友邻。
  • 自由之三:您有自由通过公布该程序的改进版本来帮助社区建设,让其他人因此获益。

若您拥有所有这些自由,该程序对您而言便是自由软件——这一点至关重要,也是我如此表述的原因。具体缘由我将在谈及 GNU 通用公共许可证时详述,但此刻我先阐释自由软件的根本含义,这是更基础的问题。

自由之零相当显而易见:倘若你连按自己意愿运行程序的自由都没有,那这程序限制性未免太强。不过现实中,多数程序至少会赋予自由之零。而从法律层面看,自由之零其实是其他三个自由衍生出的结果——这是著作权法的运作机制。因此,真正区分自由软件与普通软件的,是自由之一、二、三。接下来我将详细阐述这三项自由及其重要性。

自由之一是通过修改软件以适应自身需求的自由。这可以意味着修复漏洞、添加新功能、移植到其他计算机系统,或是将所有错误信息翻译成 Navajo(纳瓦霍语)——任何你希望进行的修改,都应享有实施的自由。

显然,专业程序员能高效运用这项自由,但不止于此。任何具备基本智力的人都能学习一些编程知识。编程工作有难易之分,多数人虽难以掌握高深技能,但许多人完全能学会处理简单任务——正如五十年前,大量美国男性学会了修理汽车,这使美国在二战中得以组建机械化部队并取得胜利。因此,让广泛人群具备动手修改能力至关重要。

如果你擅长人际交往,完全不愿接触技术,那很可能意味着你朋友众多,且深谙如何让他们欠你人情[笑声]。其中多半会有程序员朋友。你可以请他们帮忙:“能为我修改这个程序、添加这个功能吗?”可见,许多人都有机会从中受益。

若缺乏这项自由,将对社会造成切实而具体的损害——你会沦为软件的囚徒。此前激光打印机的例子已说明这种困境:它运行状况糟糕,我们却无法修复,因为我们都成了自身软件的囚徒。

但这同样会挫伤人的士气。试想若计算机使用体验持续令人沮丧,而人们又不得不依赖它,他们的生活将充满挫败感;若在工作中使用,职业体验也会变得压抑,最终使人厌恶工作。而人们往往通过“不再关心”来抵御这种挫败——最终形成“我今天露面就算完成任务,无法推进不是我的问题,是老板的问题”的心态。这种状态既损害个人,也危害整个社会。这便是自由之一:自主解决问题的自由。

自由之二是通过分发程序副本来帮助邻里的自由。对于能思考、会学习的生命而言,分享有用知识是友谊的基本行为。当这些生命使用计算机时,这种友谊行为便体现为分享软件。朋友之间相互分享、彼此帮扶,这是友谊的本质。事实上,这种自愿帮助邻里的友善精神,是社会最重要的资源——它区分了宜居的社会与弱肉强食的丛林。世界主要宗教数千年来早已认识到其重要性,并明确倡导这种精神。

我上幼儿园时,老师通过实践教导我们这种分享精神——他们认为亲身实践能让我们领悟。所以规定:“带糖果到学校不能独享,必须分给其他孩子。”这教育了我们,社会机制本就致力于培育这种合作精神。为何必须这样做?因为人并非完全利他,这只是人性的一面,而人性有其他方面,人性具有多面性。若想构建更美好的社会,就必须努力倡导分享精神。当然,永远无法达到百分百——这可以理解,人也需要顾及自身。但只要能让分享精神更普及,我们所有人都会受益。

而如今,美国政府却要求教师们推行完全相反的理念:“哦,约翰尼,你带了软件来学校啊?千万别分享!分享是错的,分享意味着你是盗版者。”

他们口中的“盗版者”意味着什么?这是在宣称:帮助你的邻居在道义上等同于攻击船只。[笑声]

佛或耶稣会对此作何评价?现在,请想想你崇敬的宗教领袖——或许 Manson1 会有不同看法[笑声],谁知道 L. Ron Hubbard2 会怎么说?但……

提问者[听不清]

STALLMAN:当然,他已离世。但是他们不承认。什么?

提问者:其他人也都死了。[笑声] [听不清]Charles Manson 也死了。[笑声]他们都死了,耶稣死了,佛死了……

STALLMAN:是的,你说得对。[笑声]我想,由此来看,L. Ron Hubbard 比其他人也差到到哪里去。[笑声]不管他吧——[听不清]

QUESTION:L. Ron 一直使用自由软件——这让他摆脱了 Zanu。[笑声]

STALLMAN:总之,我认为这实际上是软件必须自由的最重要原因:我们承受不起污染社会最重要资源的代价。它虽非清洁空气或水那样的有形资源,而是心理社会资源,却同样真实存在,并对我们的生活产生巨大影响。要知道,我们的行为会影响他人的思想。如果我们四处宣扬“不要互相分享”,一旦人们听从,我们便对社会造成了负面影响——这绝非好事。这便是自由之二:帮助友邻的自由。

顺便提一句,若缺乏这种自由,不仅会损害社会的心理社会资源,还会导致浪费——即实际、有形的损害。如果程序存在所有者,且所有者设定了一种需付费才能使用的状态,部分人会选择“算了,不用也罢”。这便是一种刻意造成的浪费。而软件的有趣之处在于,用户减少并不意味着你需要减产。比如汽车,购买者减少,你可以减少产量,这能节省资源——资源可被调配或不被用于造车。因此可以说,汽车定价是合理的,它能防止人们将大量资源浪费在制造非必需的汽车上。但若每多造一辆车无需消耗任何资源,那么通过限制产量来“节省”资源也就失去了意义。但对于实体物品(如汽车),每多生产一辆必然消耗资源。

但对于软件而言,情况并非如此。任何人都可以轻易复制副本,除微量电能外几乎不消耗任何资源。因此,通过对软件使用设置经济障碍,我们并不能实现任何资源节省或优化配置。常见的情况是,人们将基于其他领域(其前提条件可能成立)的经济推理结论,直接套用到软件领域——而这些前提在软件上根本不成立。他们只是照搬结论,却未意识到相关论证在软件领域缺乏依据,前提条件完全失效。我们必须审视结论的推导过程及其依赖的前提,才能判断其适用边界。以上便是自由之二,即帮助友邻的自由。

自由之三是通过发布软件的改进版本来助力社区建设的自由。过去常有人对我说:“如果软件免费,就没人会获得报酬去开发它,那谁还会愿意做呢?”当然,他们混淆了“自由”的双重含义,其推论基于误解。但无论如何,这是他们当时的观点。如今,我们可以用实证来对照这一理论:事实上,已有数百人受雇编写自由软件,更有超过十万志愿者投身其中。出于各种不同的动机,越来越多人参与到自由软件的开发中。

当我首次发布 GNU Emacs——这是 GNU 系统中第一个人们真正想使用的组件——随着用户逐渐增多,不久后我收到一则消息:“我好像在源代码里发现了一个漏洞,这是修复方案。”接着又来一条:“这是添加新功能的代码。”随后是漏洞修复、新功能提交……源源不断的贡献蜂拥而至,多到我仅整合这些帮助就成了一项繁重的工作。微软可没这种“烦恼”。[笑声]

最终,人们注意到了这一现象。在20世纪80年代,我们许多人曾认为自由软件可能不如非自由软件,因为缺乏资金雇佣开发者。当然,像我这样珍视自由与社区的人会说:“即便如此,我们仍会使用自由软件。”为了自由,在技术便利性上做出些许牺牲是值得的。但大约到1990年,人们开始发现我们的软件实际上更优秀——它比专有替代品更强大、更可靠。

上世纪90年代初,有人找到了一种科学测量软件可靠性的方法。具体做法是:他选取了多组功能相同的可比程序——这些程序在不同系统中执行完全相同的任务(即某些基础的类 Unix 工具)。由于它们遵循 POSIX 标准,功能层面完全一致,但由不同团队独立开发维护,代码实现各不相同。研究者让这些程序运行随机生成的数据,统计其崩溃或卡死的频率。测量结果显示,最可靠的程序组是 GNU 软件。所有商业专有替代品的可靠性均逊色。该结果发表后,研究者向所有开发者通报了数据。几年后,他用最新版本重复实验,结论依旧:GNU 版本依然是最可靠的。如今,不少癌症诊所和911应急调度系统都采用 GNU 系统,正是因为它极其可靠——而可靠性对这些场景至关重要。

总之,甚至有这样一群人,他们将这一特定益处作为主要理由,解释为何用户应被允许行使这些自由、进行各种操作。如果您一直在听我演讲,想必已注意到——作为自由软件运动的倡导者,我既谈论伦理议题、我们理想中的社会形态以及良好社会的构成,也探讨实际有形的利益。这两者都至关重要。这正是自由软件运动的核心。

而另一个群体——即所谓的开源运动——他们仅强调实际利益,否认这是原则性问题。他们不认为人们享有与友邻分享、查看程序运行机制或按需修改的自由权利,却主张允许人们这样做具有实用性。因此他们向企业游说:“您看,若允许人们这样做,或许能赚更多钱。”可见在某种程度上,他们虽将人们引向相似的方向,但其哲学出发点却截然不同、存在根本性差异。

因为在最根本的伦理问题上,这两大运动存在分歧。自由软件运动主张:“您理应享有这些自由,人们不应阻止您行使这些权利。”而开源运动则声称:“是的,他们有权阻止您,但我们会尝试说服他们屈尊允许您这样做。”实际上,开源运动确实说服了部分企业将大量软件作为自由软件发布到我们的社区中,为此做出了实质性贡献。因此我们在实际项目上会协作共事,但哲学层面仍存在巨大分歧。

遗憾的是,开源运动获得了商业领域最广泛的支持,导致多数关于我们工作的文章将其描述为“开源”,许多人也自然而然地认为我们都属于开源运动的一部分。这正是我强调此区别的原因——我希望大家意识到,自由软件运动(正是它创建了我们的社区并开发了自由操作系统)依然存在,我们仍坚守着这一伦理哲学。希望大家了解这一点,以免在无意中误导他人。

但更重要的是,以便你能思考自己的立场何在。

要知道,支持哪个运动取决于你自己。你可以认同自由软件运动及我的观点,也可以赞同开源运动,抑或对两者皆持异议。在这些涉及政治理念的议题上,请自行决定你的立场。

但如果你认同自由软件运动——如果你认为那些生活受此决策控制和支配的人们理应有发言权——那么我希望你能表明自己支持自由软件运动。实现这一点的一种方式是使用“自由软件”这一术语,并帮助更多人了解我们的存在。

因此,自由之三在实践层面和心理社会层面都至关重要。若缺乏这项自由,会造成切实的物质损害——社区协作无法开展,我们便无法开发出强大可靠的软件;同时也会导致心理社会损害,侵蚀科学合作精神,即“我们共同推进人类知识”的理念。须知,科学进步的核心依赖于人们的协作能力。而如今,常见的情况是各科学小团体如同彼此交战般行事,若互不分享,各方发展都会受阻。

那么,这三项自由便是区分自由软件与普通软件的关键。自由之一,是通过修改以满足自身需求的自由;自由之二,是通过分发副本以帮助友邻的自由;自由之三,是通过修改并发布供他人使用以助力社区建设的自由。若您拥有所有这些自由,该程序对您而言便是自由软件。那么,为何我以特定用户为基准来定义呢?这程序对您来说是自由软件吗?[指向一位听众]对您呢?[指向另一位听众]对您呢?[指向又一位听众]是吗?

提问者:您可以再详细解释一下自由之二和自由之三的不同吗?[听不清]

STALLMAN:的确,两者紧密相关,因为如果完全没有重新分发的自由,您自然也无法分发修改后的版本——但它们是不同的行为。

提问者:奥。

STALLMAN:自由之二是指:您可以制作一个完全一样的副本交给朋友,这样他们就能使用该软件;或者您制作多个完全一样的副本出售给一群人,他们也能因此使用它。

自由之三则是您进行改进(或至少您认为是改进,且可能得到他人认同)的行为。这便是二者的区别。对了,还有关键一点:自由之一和自由之三的实现都依赖于您能获取源代码。因为修改仅含二进制文件的程序极其困难[笑声]——即便是像将日期改为四位数字这样简单的调整[笑声],若无源代码也几乎无法完成。因此,出于切实而迫切的现实原因,获取源代码是自由软件的前提条件和必备要求。

那么,为何我要以“对而言是否为自由软件”来定义呢?原因在于,有时同一程序对某些人可能是自由软件,对另一些人却是非自由的。这听起来或许矛盾,让我举例说明这种情况是如何发生的。一个非常典型(可能是史上最显著)的例子是 X Window 系统:它在麻省理工学院开发,并以自由软件许可证发布。如果您获得的是 MIT 许可证版本,便拥有自由之一、二、三——这对您而言是自由软件。但获得副本的还包括多家分发 Unix 系统的计算机厂商,他们仅对 X 进行了必要的适配修改(可能只改动数千行代码),随后编译并将二进制文件纳入其 Unix 系统,随同系统的保密协议一并分发。于是,数百万人获得了这些副本——他们拥有 X Window 系统,却不享有任何自由。X 对他们而言并非自由软件。

因此,矛盾之处在于:X 是否为自由软件取决于观察角度。若从开发群体的视角评估,你会说“我观察到所有这些自由,它是自由软件”;但若从用户群体衡量,则会发现“大多数用户并不享有这些自由,它不是自由软件”。开发 X 的人们并不将此视为问题,因为他们的目标本质上是追求声望与自我实现——他们渴望巨大的专业成就,沉浸在“啊,无数人正在使用我们的软件”的满足感中。这固然是事实,但无数使用者却并未获得自由。

然而在 GNU 工程中,若同样的情况发生在 GNU 软件上,那将意味着失败——因为我们的目标不仅仅是流行,而是赋予人们自由、促进合作、允许人们协作。请记住:永远不强迫任何人协作,但要确保每个人都被允许协作,每个人都拥有这样做的自由(如果他/她愿意)。若有数百万人运行着非自由的 GNU 版本,这完全算不上成功,整个计划将背离初衷,变得与目标毫无相似之处。

因此,我寻求一种方法来阻止这种情况发生。我提出的方法被称为“copyleft”(著佐权)。之所以称为 copyleft,是因为它如同将著作权(copyright)翻转过来运用[笑声]。在法律层面,copyleft 基于现行著作权法运作,但我们利用它来实现截然不同的目标。具体做法是:我们声明“本程序受著作权保护”——默认情况下这意味着禁止复制、分发或修改。但紧接着我们宣告:“您被授权分发该程序的副本、对其进行修改、分发修改版及扩展版本。您可以按任何方式更改它。”

但有一个前提条件——当然,正是这个条件让我们不惜费尽周折建立这套机制。该条件规定:无论何时您分发任何包含本程序代码的作品,整个作品都必须以完全相同的条款分发,不得增减。这意味着您可以修改程序并分发修改版,但这样做时,从您那里获得作品的人必须享有与您从我们这里获得的同等自由。这不仅适用于您从我们程序中复用的代码片段,更适用于他们从您那里获得的该作品的所有部分——整个作品对他们而言都必须是自由软件。

修改和重新分发该程序的自由由此成为不可剥夺的权利——这一概念源自《独立宣言》。我们确保这些权利不会被剥夺。当然,体现 copyleft 理念的具体许可证是 GNU 通用公共许可证(GPL),这是一份颇具争议的许可证,因为它确实有权力对那些企图寄生在我们社区之上的行为说“不”。

有许多人并不珍视自由的理念。他们很乐意拿走我们的劳动成果,以此为基础分发非自由程序,并诱使用户放弃自由。如果我们允许这种行为,结果将是:我们不断开发这些自由程序,却不得不持续与基于我们代码改进的非自由版本竞争——这绝非乐事。

而且许多人也有同感——我愿意贡献个人时间为社区服务,但凭什么要无偿劳动去完善那家公司的专有程序呢?有些人或许甚至不认为这是在作恶,但他们觉得若要做这种事就该获得报酬。就我个人而言,我宁可完全不参与此类行为。

但这两类人——无论是像我这样认为“我不愿帮助那个非自由程序在我们的社区中立足”的,还是那些觉得“当然可以为他们工作,但他们得付钱”的——我们都有充分理由采用 GNU 通用公共许可证。因为它向那些公司声明:“你不能随意拿走我的成果,却在不提供自由的前提下分发。”而非 copyleft 许可证(如 X Window 系统的许可证)则允许这种行为。

因此,就许可证而言,这是自由软件两大类别之间的根本分野:一类是采用 copyleft 的程序,其许可证保障每位用户的软件自由;另一类是非 copyleft 程序,它们允许非自由版本的存在——有人可以获取这些程序并剥夺其自由,您可能会遇到这些程序的非自由版本。

这个问题至今仍然存在。在我们的自由操作系统上,仍有人在使用 X Window 的非自由版本。甚至有些硬件——只能通过 X Window 的非自由版本获得支持。这是我们社区面临的一个主要问题。尽管如此,我并不会说 X Window 是个糟糕的事物。我认为开发者本可以做出更优选择,但他们确实发布了大量我们都能使用的软件。

要知道,“不完美”与“邪恶”之间存在巨大差异。善与恶有许多渐变层次。我们必须抵制这种诱惑:若你未能做到尽善尽美,便全盘否定其价值。开发 X Window 的人们为我们的社区做出了重大贡献。但他们本可以做得更好——他们本可以对该程序部分采用 copyleft 许可,从而阻止他人分发那些剥夺自由的版本。

如今,GNU 通用公共许可证利用著作权法捍卫您的自由——这恰恰是微软当前攻击它的原因。微软真正渴望的是能将我们编写的所有代码纳入专有程序,只需让他人做些改进(或哪怕只是制造不兼容的改动就足够)[笑声]

要知道,凭借微软的市场影响力,他们根本无需把产品做得更好就能让自家版本取代我们——只需制造差异与不兼容性,再预装到每台电脑桌面即可。所以他们确实反感 GNU GPL,因为这份许可证不允许他们这样做。它禁止“拥抱、扩展再扼杀”的策略,它明确规定:若你想在我们的代码基础上构建程序,可以,但必须遵循“共享且同等共享”的原则——你所作的修改也必须允许我们共享。这才是双向合作,才是真正的合作。

许多公司——即便是 IBM、惠普这样的大型企业——都愿意在此基础上使用我们的软件。IBM 和惠普为 GNU 软件贡献了大量改进,并开发其他自由软件。但微软不愿这样做,于是他们散布“企业根本无法应对 GPL”的言论。当然,如果所谓“企业”不包括 IBM、惠普和 SUN 微系统公司,那他们或许说得没错[笑声]。关于这点稍后再详谈。

我该把历史故事讲完。要知道,我们在1984年启程时,目标不仅是编写一些自由软件,更是要完成一项更具系统性的使命:开发一个完全由自由软件构成的操作系统。这意味着我们必须逐个组件地持续开发。当然,我们始终在寻找捷径。这项工程如此庞大,以至于当时人们断言我们永远无法完成。我虽认为至少存在成功的可能性,但寻找捷径显然值得尝试。因此我们不断探索:是否存在他人已编写的、我们能适配并整合的程序,从而避免从零开始?例如 X Window 系统——它虽未采用 copyleft,但属于自由软件,我们可以使用它。

其实我从一开始就计划为 GNU 加入窗口系统。在启动 GNU 工程前,我在麻省理工就写过两三套窗口系统。因此,尽管1984年的 Unix 尚无窗口系统,我仍决定 GNU 要拥有自己的窗口系统。但最终我们并未开发 GNU 窗口系统,因为X出现了。我当时心想:太好了!省去一项大工程。我们就用 X 吧。于是我基本决定:采用 X 系统,将其整合进 GNU 体系,并让 GNU 的其他组件在适当时机与X协同工作。我们还发现了其他人编写的软件,比如文本排版工具 TeX、伯克利分校的某些库代码(当时伯克利 Unix 并非自由软件,但这些库代码最初源自该校研究浮点运算的另一团队)。就这样,我们逐步将这些模块整合进来。

1985年10月,我们创立了自由软件基金会。请注意:GNU 工程诞生在前,自由软件基金会成立于后——大约在GNU 工程宣布近两年后。自由软件基金会是一家免税慈善机构,旨在筹集资金以促进软件共享与修改的自由。在1980年代,我们资金的主要用途之一是聘请开发者编写 GNU 组件。许多核心程序如 shell 和 C 库都是这样完成的,其他程序的部分模块亦然。像 tar 这样绝对必要却毫无趣味可言的程序[笑声]也由此诞生。我相信 GNU grep 也是如此编写的。就这样,我们逐步接近目标。

到1991年,我们仅缺一个关键组件:内核。我为何推迟了内核开发?或许因为从技术层面看,开发顺序本无关紧要——反正所有部件终须完成;部分原因也在于我曾期望能找到现成的内核基础。我们确实找到了卡内基梅隆大学开发的 Mach 微内核,但它并非完整内核,只是内核的底层部分。因此我们必须编写上半层——即文件系统、网络代码等组件。不过这些模块运行在 Mach 之上时本质上是用户态程序,理论上应更易于调试:你可以同时运行真正的源码级调试器进行排查。我原以为这样能快速完成内核的高层部分,但事与愿违。这些异步多线程进程通过消息传递通信,调试起来异常艰难;我们用于引导的 Mach 基础系统调试环境极差且不稳定,还存在各种问题。我们耗费了数年时间才让 GNU 内核运行起来。

但幸运的是,我们的社区无需等待 GNU 内核。因为1991年 Linus Torvalds 开发了另一个名为 Linux 的自由内核。他采用了传统的宏内核设计,结果他的内核比我们的更早投入运行。或许这是我犯下的错误之一:那个设计决策。总之,起初我们并不知道 Linux 的存在,因为他从未联系我们讨论此事(尽管他确实知晓 GNU 工程)。但他在网络其他平台向其他人发布了消息。于是其他人开始着手将 Linux 与 GNU 系统的其余部分结合,构建出一个完整的自由操作系统——本质上是打造“GNU 加 Linux”的组合体。

但他们并未意识到自己实际在做什么。你看,他们说:“我们有了内核——找找看还有什么其他组件能和内核组合起来。”于是他们四处寻找,结果发现所需的一切居然都已存在。他们感叹:“多么幸运啊!”[笑声]“全都在这里了,我们能找到所有需要的东西。只需把这些不同的组件组合起来,就能形成一个系统。”

他们并不知道自己找到的组件大多属于 GNU 系统。因此他们没意识到自己其实是将 Linux 填补进 GNU 系统的空缺里,反而以为是围绕 Linux 构建了一个系统,于是将其称为“Linux 系统”。

提问者[听不清]

STALLMAN:听不清——什么?

提问者[听不清]

STALLMAN:唉,这简直——怎么说呢——太狭隘了。

提问者:但比起找到 X 和 Mach,这难道不是更大的幸运吗?

STALLMAN:是的。区别在于,开发 X 和 Mach 的人们并没有构建完整自由操作系统的目标。唯有我们心怀这个目标,正是我们的大量工作让这个系统得以实现。实际上,我们在系统中完成的占比超其他任何项目。这并非偶然——因为其他人编写了系统中实用的部分,但他们并非为了完成系统而做,他们的动机另有不同。

至于开发 X 的人们——他们认为设计跨网络窗口系统会是个好项目,事实也的确如此。结果这帮助了我们构建优秀的自由操作系统,但这不是他们的初衷。他们甚至从未考虑过这点,这只是个意外,一次意外的助益。我并非指责他们的做法有问题。他们完成了一个大型自由软件项目,这是值得肯定的贡献。但他们缺乏那个终极愿景,而这个愿景正是 GNU 工程所承载的。

因此,每一个未被他人完成的小部件都由我们亲手实现——因为我们深知,缺少任何部分都无法构成完整系统。即便它像 tarmv 那样枯燥乏味、毫无浪漫色彩[笑声],我们也去完成。还有 ld——链接器里确实没什么激动人心的东西,但我还是写了一个[笑声]。我甚至努力优化使之占用最少的磁盘 I/O 以提升速度、支持更大程序。当然,我做事追求精益求精,总想在开发时改进程序的各个方面。但我编写它的根本原因,并非对 ld 有什么绝妙构思,而是我们需要一个自由的链接器,且不能指望他人代劳——我们必须自己完成,或找人完成。

因此,尽管如今有数千人通过不同项目为这个系统作出贡献,但只有一个项目是系统得以存在的根本原因——那就是 GNU 工程。这个系统本质上就是 GNU 系统,后续只是在此基础上增添了其他组件。

然而,将系统称为“Linux”的做法对 GNU 工程造成了巨大打击,因为我们没有得到正常应有的认可。我认为 Linux 内核是非常实用的自由软件,我对其只有赞誉——好吧,其实也能挑出些毛病[笑声],但总体评价是积极的。然而,将 GNU 系统称作“Linux”纯属谬误。我恳请大家稍费心思,将系统称为 GNU/Linux,以此帮助我们获得应有的认可。

提问者:您需要一个吉祥物!给自己弄个毛绒玩具吧![笑声]

STALLMAN:我们有一个。

提问者:真的?

STALLMAN:我们有一个动物——一个 gnu(牛)。[笑声]总之,是的。如果你画了一个企鹅,那么在旁边再画一个牛。[笑声]不过,我们把问题留在最后吧。我还有很多要说。

那么,为何我如此关注此事?为何我认为值得为此叨扰各位,甚至可能降低你们对我的评价[笑声]非要提出这个名誉归属问题?因为有些人当我这样做时,会认为我只是想满足虚荣心,对吧?当然,我并非要求你们称其为“Stallmanix”[笑声][掌声]

我请求你们称其为 GNU,是因为我希望 GNU 工程获得应有的认可。这背后有一个非常特殊的原因,远比任何个人获得名誉本身更重要。你看,如今在我们的社区里,大多数讨论和撰文者从不提及 GNU,也绝口不提这些自由目标——这些政治与社会理念。因为这些理念的源头正是GNU。

而与 Linux 关联的理念则截然不同——它本质上是 Linus Torvalds 的非政治化哲学。因此,当人们认为整个系统就是 Linux 时,往往会想:“哦,这一定全是 Linus Torvalds 发起的,他的哲学才值得我们仔细审视。”而当他们听到 GNU 的哲学理念时,则会说:“天啊,这太理想主义了,肯定极不实用。我是 Linux 用户,又不是 GNU 用户。”[笑声]

何等讽刺!如果他们知道真相该多好!如果他们知道自己喜爱(甚至为之狂热)的系统,正是我们理想主义政治哲学的现实化身。

他们仍不必认同我们,但至少会看到认真对待、仔细思考、给予其机会的理由。他们会理解这与自身生活的关联。要知道,如果他们意识到:“我正在使用 GNU 系统。这就是 GNU 的哲学。正是这种哲学造就了我非常喜爱的这个系统。”至少他们会以更开放的心态去考量。这并非要求人人赞同——思想各异本属正常,人们理应自主判断。但我希望这种哲学能因其成果获得应有的认可。

环顾我们的社区,你会发现几乎所有机构都称该系统为 Linux。记者大多亦如此称呼——这不正确,但他们就这样做了。打包发行该系统的公司也多半这样命名。而且,这些记者在撰稿时通常不将其视为政治或社会议题,往往纯粹从商业角度分析企业成败,这对社会而言实在是相当次要的问题。再看看那些为用户打包 GNU/Linux 系统的公司——他们大多称之为 Linux,并且全都在其中添加了非自由软件。

要知道,GNU GPL 规定:若您从受 GPL 保护的程序中提取代码,并添加更多代码以构建更庞大的程序,则整个程序都必须以 GPL 发布。但您可以将其他独立程序置于同一磁盘(硬盘或光盘)上,它们可采用其他许可证——这被视为单纯的聚合。本质上,同时向某人分发两个程序的行为不在我们管辖范围内。因此,实际情况并非如此(尽管我有时希望如此):若公司在产品中使用受 GPL 保护的程序,并不意味着整个产品都必须成为自由软件。许可范围并未延伸到那种程度——它仅约束整个程序本身。如果两个独立程序通过发送消息等方式保持距离通信,法律上通常视为分离实体。所以这些公司通过向系统添加非自由软件,在哲学和政治层面向用户传递了极糟的理念:他们在暗示用户“使用非自由软件没问题,我们甚至将其作为额外福利提供”。

如果您翻阅关于 GNU/Linux 系统使用的杂志,大多会看到诸如“Linux 某某”之类的刊名——它们通常称该系统为Linux。这些杂志充斥着可在 GNU/Linux 系统上运行的非自由软件广告,而这些广告传递着共同的信息:非自由软件对您有益,其价值甚至值得您付费获取。[笑声]

他们称这些产品为“增值套装”,这其实表明了他们的价值观:重视实际便利,而非自由。我不同意这种价值观,因此称其为“自由削减套装”[笑声]。因为如果你安装了自由操作系统,便已生活在自由世界,享受着我们多年奋斗为你赢得的自由权益。而这些套装却让你有机会重新戴上枷锁。

再看看那些专注于 GNU/Linux 系统应用的贸易展会——它们都自称“Linux”展会,场馆里摆满了展示非自由软件的展位,实质上是在为非自由软件背书。因此,几乎在我们社区的每个角落,各类机构都在推崇非自由软件,完全背离了 GNU 为之奋斗的自由理念。而人们唯一可能接触到自由理念的渠道,就是与 GNU 关联的语境,以及与“自由软件”这个术语相关的讨论。这就是我恳请各位的原因:请称这个系统为 GNU/Linux,请让人们了解系统的来源与初衷。

当然,仅使用这个名称本身并不会自动阐述历史。你可以多键入四个字符写下 GNU/Linux,或多发两个音节读出它——但 GNU/Linux 的音节数其实比 Windows 2000还少[笑声]。虽然你并未向他们传递大量信息,却是在铺垫认知基础:当他们日后听说 GNU 及其理念时,便能理解这与他们自身生活的关联。这种间接影响会产生巨大作用。所以请帮助我们。

您会注意到,微软将 GPL 称为“开源许可证”。他们不希望人们从自由的角度思考这个问题。您会发现,他们引导人们以狭隘的消费者视角思考——当然,如果选择微软产品,甚至谈不上理性消费。但他们不愿让人们以公民或政治家的角度思考,这对他们不利,至少与当前商业模式相悖。

那么,自由软件如何……我可以谈谈自由软件与社会的关系。有些人可能感兴趣的次要话题是自由软件与商业的关联。事实上,自由软件对商业极其有用——毕竟,发达国家的大多数企业都在使用软件,而其中仅有极小部分从事软件开发。

自由软件对任何使用软件的公司都极具优势,因为它意味着您掌握了主动权。本质上,自由软件意味着用户能控制程序的行为——无论是通过个体努力(若他们足够重视),还是集体协作(当人们足够关注时)。任何足够重视的人都能施加影响:若您不在意,可以不购买,直接使用他人偏好的版本;但若您在意,就拥有发言权。而使用专有软件时,您基本没有发言权。

使用自由软件,您可以按需修改。即便公司内部没有程序员也完全没问题。就像您想移动办公室墙壁时,不必成为木工公司,只需找到木匠询问:“完成这项工作需要多少费用?”同理,若想调整所用软件的功能,也无需成立编程公司,只需联系软件开发公司询问:“实现这些功能需要多少费用?何时能完成?”若他们无法胜任,您还可以另寻他人。

支持服务存在自由市场。因此,任何重视技术支持的企业都会发现自由软件的巨大优势。而专有软件的支持服务属于垄断状态——因为仅有一家公司(或少数支付巨额费用的公司)拥有源代码(例如微软的共享源代码项目),但数量极少。这意味着您能获取的支持渠道非常有限。除非您是企业巨头,否则他们根本不在乎您:您的公司规模尚不足以让他们担心失去您的业务。一旦您开始使用该程序,他们就认定您已被锁定在其支持体系中,因为更换程序是项浩大工程。结果您甚至可能要为提交漏洞报告的特权付费[笑声],付款后得到的回复却是:“好的,我们已记录您的漏洞报告。几个月后您可以购买升级版,届时查看我们是否已修复。”[笑声]

自由软件的支持提供商无法如此敷衍——他们必须让客户满意。当然,您可以免费获得大量优质支持:在互联网上发布问题,第二天可能就得到解答(当然,这并非绝对保障)。若希望获得可靠支持,最好与公司签订协议并支付费用。这自然是自由软件商业运作的方式之一。

自由软件对使用软件的企业的另一优势是安全与隐私保障——这对个人同样适用,但我在商业语境下提出。要知道,当程序是专有软件时,您甚至无法确知它实际在做什么。

它可能特意内置了您若知晓就绝不会喜欢的特性——比如留有后门让开发者入侵您的机器,或窥探您的操作并回传信息。这并非罕见现象:某些微软的软件曾这样做过,但是不止微软,其他专有程序也存在窥探用户的行为。而您甚至无法判断程序是否在做这些事。当然,即便开发者完全诚实,程序员也难免犯错——可能存在影响安全性的漏洞(这并非任何人的过错)。但关键在于:若非自由软件,您既无法发现这些漏洞,也无法修复它们。

没人有时间检查自己运行的每个程序的源代码,您也不会这样做。但在自由软件社区中,存在大量审查代码的成员——您能受益于他们的审查。因为任何程序都难免存在意外漏洞,他们可能会发现并修复。同时,若开发者认为可能被发现,就较少可能刻意植入木马或窥探功能;而专有软件开发者则自认为不会被察觉,能悄然得逞。自由软件开发者必须意识到:人们会审查代码并发现问题。因此在我们的社区中,我们明白无法强行向用户灌输他们不喜欢的特性——因为若用户不喜欢,他们就会制作去除该功能的修改版,然后所有人都会开始使用那个版本。

事实上,我们都具备足够的理性进行前瞻性推演:既然在编写自由程序,你会希望用户青睐你的版本,自然不会加入明知许多人会憎恶的功能,导致另一个修改版流行起来取代你的作品。因此你会意识到,在自由软件的世界里,用户才是主宰。而在专有软件的世界里,顾客并非主宰——因为你只是顾客,对你使用的软件没有发言权。

在这方面,自由软件是民主运行的新机制。现任斯坦福大学的 Lessig 教授曾指出:代码在某种程度上发挥着法律的作用。任何能编写被广泛使用的代码的人,实质上是在制定支配人们生活的规则。而自由软件让这些规则以民主方式诞生——这不是古典形式的民主(我们不会举行大型选举说“请大家投票决定这个功能该怎么做”[笑声]),而是从根本上说:愿意以这种方式实现功能的人就去实现,想以那种方式实现的人就去实践。最终功能总会以某种方式完成。如果多数人倾向这种方式,它就会以这种方式实现。因此,每个人都通过朝自己期望的方向迈出来参与社会决策。

你可以自由地迈出任意多你想迈出的步伐;企业也可以自由地资助他们认为有用的任何步骤。当所有这些努力汇聚起来,就决定了软件的发展方向。

而且,从现有程序中提取模块(通常是大模块)并自行编写一定量代码,从而精确打造符合需求的程序,这种做法往往极具价值。如果必须从零开始编写所有代码,如果无法从现有自由软件包中借鉴大量模块,开发成本将会极其高昂。

用户至上的另一个结果是:我们在兼容性和标准化方面往往做得非常出色。为什么?因为用户需要这个。用户很可能会拒绝包含无端不兼容性的程序。当然,有时特定用户群确实需要某种不兼容性,那也可以接受。但当用户希望遵循标准时,我们开发者必须遵从——我们深知这一点并付诸实践。相比之下,专有软件开发者往往认为故意遵循标准更有利,但这并非因为他们认为能为用户带来优势,而是为了强制用户、锁定用户。你甚至会发现他们不时更改文件格式,只为逼迫人们升级到最新版本。

档案管理员现在面临一个问题:十年前计算机上编写的文件常常无法读取——这些文件由如今已基本消失的专有软件创建。如果使用自由软件编写,文件本可以持续更新并运行,那些记录就不会丢失或无法访问。美国国家公共电台最近甚至提到这个问题,并提出自由软件可作为解决方案。因此,实际上,使用非自由程序存储个人数据无异于将头伸进绞索。

我已探讨了自由软件如何影响大多数企业。但它对软件行业这个特定狭窄领域有何影响?答案基本是毫无影响。因为据我所知,软件业90%的业务是定制软件开发——这些软件本就不打算发布。对于定制软件,自由或专有的伦理问题并不存在:关键在于用户是否拥有修改和重新分发软件的自由。如果只有一个用户,且该用户拥有全部权利,就毫无问题——该用户本就可以行使所有这些自由。因此,实际上,任何公司为内部使用而开发的定制程序,只要他们有意识坚持获取源代码及所有权利,就是自由软件。

而对于嵌入手表、微波炉或汽车点火系统的软件,这个问题并不真正存在——因为用户无法在这些设备上下载安装软件。就用户而言,这不算真正的计算机,因此引发的伦理问题并不突出。所以软件行业大体上会照常运转。有趣的是,既然行业中有如此大比例的工作岗位属于这类,即使自由软件商业毫无可能性,自由软件的开发者也都能找到编写定制软件的日常工作[笑声]——这类岗位数量庞大,占比极高。

但事实上,自由软件商业确实存在。已有自由软件公司成立——在我即将举行的新闻发布会上,其中几家公司的代表将与我们共同出席。当然,也有些公司并非自由软件企业,但会开发并发布有用的自由软件组件,他们产出的自由软件成果相当可观。

自由软件企业如何运作?有些公司销售副本——虽然您可以自由复制,但他们每月仍能售出数千份。其他公司则提供支持服务与各类定制服务。就我个人而言,在1980年代后半段,我销售自由软件支持服务:基本上承诺以每小时200美元的价格,修改您希望我改动的一切 GNU 软件(由我编写的部分)。没错,这是高昂的费率,但若程序原作者是我,人们会认为我能用更少时间完成任务[笑声]。我以此谋生,实际上我的收入甚至超过以往。我还教授课程,这种状态持续到1990年——当时我获得一项大奖,便无需再从事这些工作了。

但1990年出现了首家自由软件企业——Cygnus Support 公司。他们的业务本质上与我此前从事的工作类似。若我当时需要谋生,完全可以为他们工作。由于并无此需,我认为保持独立于任何特定公司对运动更有利——这样我就能在无利益冲突的前提下,客观评价各类自由软件与非自由软件公司。我觉得这能更好地服务于这项运动。但若为维持生计,我当然会加入他们。这是合乎道德的行业,我完全不会以在此就职为耻。该公司首年即实现盈利,初始资本微薄,仅由三位创始人自筹资金。之后每年持续增长并保持盈利,直到他们心生贪念寻求外部投资,才把事情搞砸——但在贪婪之前,他们已成功运营了数年。

由此可见自由软件一个激动人心的特质:它证明了开发自由软件无需筹集资本。当然,资本有其作用,能助益发展——若筹集到资金,可雇佣人员批量开发软件。但仅凭少数人也能成就颇多。事实上,自由软件开发过程的惊人高效,正是世界应转向自由软件的重要原因之一。这也驳斥了微软所谓“GNU GPL 有害”的论调——他们声称 GPL 使其更难筹集资本来开发非自由软件,难以将我们的代码纳入其拒绝分享的程序中。但本质上,我们无需他们以那种方式筹集资本,我们自会完成工作,且正在完成工作。

人们曾断言我们永远无法完成完整的自由操作系统,如今我们不仅做到了,还取得了远超于此的成就。我认为,我们距离满足全世界的通用公开发布软件的需求,大约还差一个数量级的努力。而当前世界90%以上的用户尚未使用我们的自由软件——尽管在某些商业领域,全球半数以上的网络服务器正运行在搭载 Apache 的 GNU/Linux 系统上。

提问者[听不清]……您在 Linux 之前加了什么?

STALLMAN:我说的是“GNU 斜杠 Linux”。

提问者:是吗?

STALLMAN:是的。如果我谈论内核,我会说 Linux。大家知道,那是内核的名字。这个内核由 Linus Torvalds 编写,我们只能称呼他选择的名字以尊重作者。

总之,总体而言大多数商业用户尚未采用我们的系统,多数家庭用户也仍未使用。当他们都开始使用时,我们自然会获得十倍于当前的志愿者,以及为自由软件企业带来十倍的客户群。这将推动我们跨越那个数量级的门槛。因此,我现在相当确信我们能够完成这项使命。

这一点至关重要,因为微软试图让我们感到绝望。他们宣称:你们要想运行软件、获得创新,唯一途径就是赋予我们权力——让我们主宰你们,控制你们对所用软件的操作权,如此我们才能从你们身上榨取大量资金,将其中一部分用于软件开发,其余则作为利润收入。

但你们绝不应感到如此绝望,绝不应绝望到放弃自由——这非常危险。

微软(以及其他不支持自由软件的人)通常抱持一种价值观体系,认为唯一重要的是短期实际利益:今年能赚多少钱?今天能完成什么任务?这是短视而狭隘的思维。他们假定:为自由做出牺牲的想法是荒谬的。

昨天,许多人发表了关于美国人为同胞自由做出牺牲的演讲。其中一些人付出了巨大牺牲,甚至为某些我们国内至少人人知晓的自由献出了生命(至少在某些事例中如此;我想我们得忽略越南战争那段历史)。

[编者注:前一天正是美国的“阵亡将士纪念日”——这是纪念战争英雄的日子。]

但幸运的是,维护我们使用软件的自由并不需要巨大牺牲,只需微小的付出就足够了:比如在尚未拥有图形界面程序时学习命令行操作;因为缺乏某种自由软件包而以特定方式完成任务;或者向开发某款自由软件包的公司支付费用,以便几年后能使用它。这些都是我们每个人都能做到的微小牺牲。从长远来看,我们甚至能从中获益——这其实更似投资而非牺牲。我们只需具备足够长远的眼光,就能意识到投资改善社会对自身有益,不必斤斤计较谁从投资中获得多少蝇头小利。

至此,我基本上讲完了。

我想提及 Tony Stanco 提出的一种自由软件商业新模式,他称之为“自由开发者”。该模式涉及特定商业架构,旨在最终将部分利润分配给所有加入该组织的自由软件作者。他们目前正探索在印度为我争取一些大型政府软件开发合同的可能性,因为这些项目将以自由软件为基础,从而大幅节约成本。

那么现在你们应该可以提问了。

提问者[听不清]

STALLMAN:您可以大声一点吗?我听不清。

提问者:像微软这样的公司怎么可能接受自由软件的合同条款呢?

STALLMAN:实际上,微软正计划将大量业务转向服务领域。他们打算采取一种不光彩且危险的策略:将服务与程序捆绑串联,形成迂回锁定——比如要使用这项服务就必须使用某个微软程序,而该程序又会要求你使用另一项微软服务,如此环环相扣。这就是他们的计划。

有趣的是,销售这些服务本身并不涉及自由软件或非自由软件的伦理问题。如果他们仅通过网络销售这些服务业务,本无不可。然而微软计划利用这些服务进一步加强软件与服务的捆绑垄断——我相信最近《商业周刊》有文章描述过这种做法。其他人则评价这是将互联网变成“微软公司之城”。

这之所以相关,是因为微软反垄断审判中,初审法院曾建议拆分微软公司——但拆分为操作系统部门和应用程序部门在某种程度上毫无意义,根本无济于事。

但看到那篇文章后,我现在发现了一种有效拆分微软的可行方案:将其分为服务部门与软件部门,要求二者仅保持公平交易关系。服务部门必须公开接口,允许任何人编写客户端连接这些服务。用户付费使用服务,应该没问题。那完全是另外一个议题。

如果微软被拆分为......服务与软件两部分,他们将无法利用软件压制与微软服务的竞争,也无法借助服务扼杀与微软软件的竞争。这样我们就能开发自由软件,或许你们可以用它连接微软服务——我们对此并无意见。

因为说到底,尽管微软是奴役最多用户的专有软件公司(其他公司奴役的用户较少,并非他们不想,只是没成功获取那么多用户[笑声]),但问题不只在于微软。微软只是我们试图解决的核心问题中最突出的例子:专有软件剥夺用户合作以及构建道德社会的自由。所以我们不应过度聚焦微软——即便他们确实为我提供了这个演讲平台,也不意味着他们具有绝对重要性,他们并非问题的全部。

提问者:早些时候,您讨论了开源软件与自由软件之间的哲学差异。对于当前 GNU/Linux 发行版趋向仅支持英特尔平台的趋势,您有何看法?以及似乎越来越少程序员能正确编程、编写可在任何地方编译的软件,而仅制作能在英特尔系统上运行的软件这一现象?

STALLMAN:我从中看不到伦理问题。不过事实上,计算机制造商有时会将 GNU/Linux 系统移植到他们的硬件上——惠普最近显然就这么做了。他们懒得花钱移植 Windows,因为成本太高;但支持 GNU/Linux 据我所知只需五名工程师工作几个月,完全可行。

当然,我鼓励人们使用 autoconf(这是一个 GNU 软件包,能简化程序移植工作)。我鼓励他们这样做。或者当其他人修复了程序在某个系统版本上无法编译的漏洞并提交给您时,您应当采纳修复。但我认为这不属于伦理议题。

提问者:两点说明。其一:您最近在麻省理工学院演讲,我阅读了文字记录。当时有人问及专利问题,您回答“专利完全是另一回事,我对此没有评论”。

STALLMAN:是的。我实际上对专利有很多看法,但是那要花费一个小时。[笑声]

提问者:我想说的是:在我看来确实有问题。我的意思是,企业将专利和版权都称作“硬财产”之类的概念有其原因——他们企图借此利用国家权力为自己创造垄断地位。因此,这些事物的共通之处并非围绕相同议题,而是其动机并非真正关乎公共利益,而是企业为私利获取垄断的驱动。

STALLMAN:我了解。不过,我没有回答是因为时间不够。现在可以回答一下。

您说得对,这确实是他们的意图。但他们使用“知识产权”一词还有另一个原因:不希望促使人们仔细思考版权或专利问题。因为著作权法与专利法截然不同,软件著作权和软件专利的影响也完全不同。

软件专利是对程序员的限制,禁止他们编写特定类型的程序;而著作权则不然——有了版权,只要是你独立创作的,至少有权分发它。因此,区分这些议题至关重要。

它们在非常基础的层面有少许共通点,其余方面则完全不同。因此,为促进清晰思考,请讨论著作权或讨论专利,但不要讨论“知识产权”——我对“知识产权”没有观点,我对著作权、专利及软件有观点。

提问者:您最初提到功能性语言(如食谱)也属于计算机程序。这与基于其他类型语言创作的作品略有交叉,这也正是 DVD 案例中引发问题的原因之一。

STALLMAN:对于本质上非功能性的作品,问题部分相似但部分不同——部分议题可迁移,但并非全部。可惜这需要另外一小时的演讲,我时间有限无法展开。但我认为所有功能性作品都应像软件一样自由——例如教科书、手册、词典、食谱等等。

提问者:我只是在想在线音乐的问题——这其中也存在诸多相似性与差异性。

STALLMAN:没错。我认为对于任何类型的公开信息,我们至少应拥有非商业性逐字分发的自由。而对于功能性作品,我们需要商业性发布修改版的自由,因为这对社会极具价值。至于非功能性作品——比如娱乐性、审美性内容,或表达特定个人观点的作品——或许不应被修改。这可能意味着,用著作权约束其所有商业分发行为是可接受的。

请记住,根据美国宪法,著作权的目的是造福公众。它旨在调整特定私人群体的行为,以促使他们出版更多书籍,其收益在于社会得以讨论议题、获取知识——我们因而拥有文学与科学著作。其目的是鼓励创作。著作权并非为作者而存在,更非为出版商存在,而是为读者及所有受益于信息传播(当人们撰写并被他人阅读时)的人而存在。我认同这一目标。

但在计算机网络时代,这种方式已难以为继,因为它现在需要严苛的法律来侵犯所有人的隐私、恐吓每个人——比如因与邻居分享内容而面临数年监禁。这在印刷机时代并非如此:当时著作权是产业法规,约束的是出版商;而现在,它成了出版商强加于公众的限制。因此,即便法律条文未变,权力关系已彻底逆转了180度。

提问者:那么,同样的道理是否适用于——用既有音乐创作新音乐的情况呢?

STALLMAN:对的。是个有意思的......

提问者:即使是独特的新作品,也依然离不开大量的协作。

STALLMAN:是的。我认为这可能需要某种合理使用的概念。当然,截取几秒钟的采样用于音乐创作显然应属合理使用——仔细想来,合理使用的标准定义本就包含此类情形。法院是否认同我不确定,但他们理应认同。这并不会对现有体系构成实质性改变。

提问者:对于以专有格式发布公共信息,您有何看法?

STALLMAN:噢,这绝对不应该。我的意思是,政府绝不应要求公民使用非自由程序来获取信息或以任何方式与政府沟通——无论哪个方向都不行。

提问者:我始终是——现在我要说——一位 GNU/Linux 用户……

STALLMAN:感谢您。[笑声]

提问者:……最近四年来。对我来说一直存在问题且我认为对所有人都至关重要的一件事,是网页浏览。

STALLMAN:是的。

提问者:使用 GNU/Linux 系统时一个明显的弱项一直是网页浏览,因为当时的主流工具 Netscape……

STALLMAN:......它是非自由软件。

让我回应这一点。为了更深入探讨,我想直切要害。是的,GNU/Linux 系统用户过去普遍存在使用网景浏览器的糟糕倾向——实际上所有商业打包系统都预装了它。这是个讽刺的局面:我们倾力打造了自由操作系统,如今若你去商店寻找 GNU/Linux 版本,大多被称为“Linux”且并非完全自由(尽管部分组件是自由的)。系统还附带了网景浏览器,可能还有其他非自由程序。因此,除非你清楚自己在做什么,否则很难真正找到完全自由的系统。当然,你也可以选择不安装网景浏览器。

事实上,多年来一直存在自由网页浏览器。我曾使用一款名为 Lynx 的自由浏览器,它是非图形化、纯文本的。这有个巨大优势:你看不到广告。[笑声][掌声]

但总之,现在有一个名为 Mozilla 的自由图形化项目,目前已发展到可用的阶段,我偶尔也会使用它。

提问者:Konqueror 2.01 也很好。

STALLMAN:奥,好的。所以还有另外一个自由图形界面浏览器。因此,我们最终解决了这个问题。我猜就是这样。

提问者:您能否谈谈自由软件与开源之间在哲学/伦理上的分野?您认为这两者是无法调和的吗?……

[切换录音磁带;问题后半部分和回答开始缺失]

STALLMAN……自由并且合乎道德。还是您会说:我希望你们公司能发现允许我们做这些事会更有利可图?

但正如我所说,在许多实际工作中,个人的政治立场并不重要。当有人提出要帮助 GNU 工程时,我们不会说:“你必须认同我们的政治理念。”我们只要求在 GNU 软件包中,你必须称系统为 GNU/Linux,并称之为自由软件。至于你在非 GNU 工程场合的言论,那是你的自由。

提问者:IBM 公司针对政府机构发起了一场推销其新型大型机的营销活动,他们以 Linux 为卖点,并直接称之为 Linux。

STALLMAN:当然,那其实是 GNU/Linux 系统。[笑声]

提问者:对。请正告那些高级销售人士。他还不知道 GNU。

STALLMAN:我要和谁说?

提问者:高级销售人员。

STALLMAN:噢,确实如此。问题在于他们早已根据自身利益精心决定了宣传口径。对 IBM 这类公司而言,如何更准确、公正或正确地描述系统并非首要考虑。当然,一些小公司或许不同——如果老板愿意思考这类问题,或许会做出不同决定。但巨型企业不会。这实在令人遗憾。

关于 IBM 的举措还有一个更关键、更实质的问题:他们宣称将投入十亿美元到“Linux”。但或许“投入”也该打引号,因为部分资金确实用于雇人开发自由软件,这对我们社区是实在的贡献;而另一部分则用于雇人编写专有软件或将专有软件移植到 GNU/Linux 上运行——这并非对我们社区的贡献。然而 IBM 将所有这些混为一谈。其中可能包括广告宣传(即使内容有误,也算部分贡献)。所以情况很复杂:他们的行为有些是贡献,有些不是,有些介于两者之间。不能简单地笼统认为“哇!IBM 投了十亿美元!”[笑声]这过于简化了。

提问者:您是否可以谈一下您起草通用许可证时的思路?

STALLMAN:好吧,这要——对不起,我正在回答他的问题。[笑声]

SCHONBERG:您是否要给媒体发布会留时间?或者您还想继续?

STALLMAN:有谁是为新闻发布会来的?媒体朋友不多啊。哦,三位……好吧。如果我再继续回答大家的问题十分钟左右,你们时间允许吗?好的,那我们就继续回答大家的提问。

那么,关于 GNU GPL 的制定思路?部分原因在于我想保护社区的自由,防止出现我先前描述的 X Window 那种情况(其他自由程序也曾发生类似问题)。实际上我思考此议题时,X Window 尚未发布,但已在其他自由程序中目睹这种现象,例如TeX。我必须确保所有用户都享有自由,否则我意识到自己可能编写出一个被广泛使用却无法赋予用户自由的程序——那有何意义?

但我考量的另一层面是:我想让社区感受到自己并非任人践踏的门垫,不会成为任何寄生者的猎物。若不采用 copyleft,你实质上是在[怯懦地]说:“拿走我的代码,随意使用,我不反对。”于是任何人都可以[强硬地]宣称:“啊,我要做个非自由版本,直接拿走便是。”接着他们很可能进行改进,那些非自由版本可能吸引用户,进而取代自由版本。到头来你成就了什么?不过是为某个专有软件项目做了捐赠。

当人们目睹自己的成果被他人取用却从不回馈时,会感到士气受挫——这并非臆测,我曾亲眼见证。这也正是1970年代我所属的旧社区消亡的部分原因:一些人开始变得不合作,我们推测他们从中牟利(其行为也确实如此)。我们意识到他们可以单方面终止协作且无需回报,却束手无策,这令人极度沮丧。我们这些反对该趋势的人甚至进行过讨论,仍想不出任何阻止的办法。

因此,GPL 被设计来阻止这种情况。它宣告:欢迎你加入社区并使用这些代码,可以将其用于各种任务;但若你发布修改版,必须将其回馈给我们的社区,使之成为自由世界的一部分。

事实上,人们仍有许多方式在不做贡献的前提下受益于我们的工作——比如你完全不必编写任何软件,很多 GNU/Linux 用户就不开发软件。我们没有要求你必须为我们做任何事。但如果你进行特定类型的行为,就必须做出贡献。这意味着我们的社区不是任人践踏的门垫。我认为这赋予了人们力量去感受:是的,我们不会任人蹂躏,我们将挺身对抗。

提问者:是的,我的问题是:考虑到自由但未采用 copyleft 的软件,既然任何人都可以将其转为专有软件,是否也可能有人对其进行修改,并将整体以 GPL 发布?

STALLMAN:是的,那是可能的。

提问者:那么不就让所有以后版本都是 GPL 的版本了吗?

STALLMAN:从那个分支开始的版本。但是我们也有不那么做的理由。

提问者恩?

STALLMAN:以下是我们通常不那么做的原因。我来解释一下。

提问者:好的。

STALLMAN:如果我们愿意,确实可以获取 X Window 的代码,制作一个受 GPL 保护的副本并进行修改。但有更庞大的群体在改进 X Window 且采用 GPL 许可。倘若我们这样做,就等于与他们分道扬镳——这对待他们的方式并不友善。他们确实是我们社区的一部分,为社区作出着贡献。

其次,这会反噬我们自身,因为他们在 X 上的开发投入远超过我们。如此一来,我们的版本将逊色于他们的版本,用户不会采用,那又何必自找麻烦?

提问者:恩。

STALLMAN:因此,当有人对 X Window 进行了改进时,我认为他应当与 X 开发团队合作:将修改提交给他们,让他们按自己的方式使用。因为他们正在开发非常重要的自由软件,我们应当与他们协作。

提问者:不过具体到 X 系统,大约两年前,X 联盟已深陷非自由开源的泥潭……

STALLMAN:实际上它并非开源,也从未开源过——他们或许声称过,我记不清了。但它确实不是开源软件,存在限制:我记得不允许商业分发,或不允许商业分发修改版之类的。这种限制无论对自由软件运动还是开源运动而言都是不可接受的。

没错,这正是使用非 copyleft 许可证可能导致的局面。实际上,X 联盟当时有非常严苛的政策:只要你的程序带有一点 copyleft 特性,他们就完全不会分发,绝不会纳入他们的发行版。

因此,许多人迫于这种压力放弃了 copyleft。结果他们的软件后来完全门户大开。当初施压要求开发者过度宽松许可的那些人,后来的 X 团队又宣称:“好了,现在我们可以施加限制了”——这实在有失道义。

但鉴于现状,我们真的有必要耗费资源去维护一个 GPL 授权的 X 替代版本吗?这样做毫无意义。我们还有太多其他亟待完成的任务,不如专注那些。我们可以与 X 开发者协作。

提问者:请问 GNU 是商标吗?将其纳入 GNU 通用公共许可证并允许商标使用是否具有可行性?

STALLMAN:实际上我们正在申请 GNU 的商标注册。但这与许可证问题并无实质关联——详细解释起来颇为复杂。

提问者:您可以要求 GPL 授权的程序必须显示该商标。

STALLMAN:不,我认为不可行。许可证针对的是单个程序。当某个特定程序属于 GNU 项目时,没人会对此说谎。而系统整体的命名是另一回事。这只是题外话,不值得深入讨论。

提问者:如果有一个按钮能强制让所有公司的软件成为自由软件,您会按下它吗?

STALLMAN:这个按钮我只会用于已发布的软件。我认为人们(包括公司)有权私下编写程序并自用,这涉及隐私权。当然,有时这样做可能是错误的——比如当某项成果对全人类极具价值却被刻意隐瞒时。但这属于不同类型的错误,是另一层面的问题,尽管相关。

但我确实认为所有已发布的软件都应是自由软件。请记住:当软件不自由时,往往是政府干预的结果——政府通过设立特殊法律权力赋予程序所有者,让警察阻止我们以某些方式使用程序。我当然希望终结这种状况。

SCHONBERG:Richard 的演讲总能激发巨大的思想能量。我建议,部分这样的能量应该被导向使用(甚至可能编写)自由软件。

我们该准备结束活动了。我想说,Richard 在我们这个以彻底非政治化的书呆子气质著称的行业里,注入了前所未见的政治与道德讨论深度。为此我们对他深怀感激。另外提醒大家,现在有一段休息时间。

[掌声]

STALLMAN你们可以随时离场。[笑声]我不会把你们这里变成牢笼。

[观众退场声……]

[嘈杂的对话声……]

STALLMAN:最后说一下我们的主页是:www.gnu.org

译注

  1. Manson:美国犯罪邪教“曼森家族”头目。
  2. L. Ron Hubbard:科幻作家,后创立科学教派(山达基教)。