GNU 工程的历史和哲学
Georg C. F. Greve <greve@gnu.org>本文(英语)是对1998年12月5日在德国帕德博恩大学的 CLOWN 项目(工作节点集群——有 512 个 Debian GNU/Linux 计算机节点的项目)上的德语演讲的翻译。
此处是 德语原文。建议阅读原文。
作者注:翻译过程中,我尽量保持原文风貌。分析德语并转换为得体的英文并不轻松,我要感谢我的室友 Doug Chapin,他是一个好朋友,是土生土长的美国人,他帮助我润色了词句。译文不能完全表达和原文一样的感情及语境,但是我认为我们做到了非常接近……
在准备此次演讲的过程中,我读了一些文献并和许多人聊过。我发现,即使是那些工作或多或少是由 GNU 工程直接带来的人也并不了解其真正的含义。在我们正在经历的匆匆岁月中,我们似乎失去了对源头的基本认知。今晚,我希望自己能够再次揭示这些源头。
故事起源于70、80年代的过渡时期,当时软件行业正变得如今日一般司空见惯。在最初的竞争中,有些公司开始把秘藏代码作为一种生存策略。为了让这种行为合法化,他们杜撰出了象 “盗版软件” 这样的术语,因为他们想说软件被复制之后就象丢了东西一样。他们强迫人们向许可证屈服,确保除了他们没人可以拥有这些程序。
当你的朋友问你是否可以复制你的程序时,你马上就进退两难。复制一个程序对你并无不益,而且程序也不会因复制而损耗。如果朋友问你要的是食盐,你可能会犹豫,因为她用了,你就没有了。这些公司的政策就是强迫你在守法和友谊之间做 选择。
很多人会对此很沮丧,而其中大多数人会复制那个程序——通常会用一个站不住脚的借口来慰籍自己不安的心灵(从公司提供的选择获得灵感)。最佳的借口可能是 “如果我经常用的话,我会付钱”,这大概是每个对专有软件有依赖的人都会说的借口。
有个人对此无法忍受。他已经习惯于过去的岁月,(如他所言)“天堂般的日子”,那时自由和负责任的使用决定场景,Richard Stallman 萌生了一个完全自由系统的愿景。他很快就明白这个系统应该和 Unix 兼容,它命名为——使用当时非常流行的递归缩写——GNU,意思是 “GNU's Not Unix”。Stallman 召集了一些自由系统的志同道合者,并创立了 GNU 自由软件基金会。今天他仍然担任主席。
首先,由于 Unix 系统需要大量的组件,所以这些组件是一个完整自由系统的第一步。GNU FSF 开始开发组件,在90年代初,GNU 系统基本完成(除了内核)。GNU 的内核——叫做 “Hurd” 的项目——有着雄心勃勃的计划,然而开发很缓慢并且问题众多。幸运的是,此时 Linus Torvalds 的第一个 Linux 内核进入测试阶段,而当他看到 GNU FSF 已经完成的工作时,他把自己的内核以 GNU GPL 发布并让它成为 GNU 系统的内核。
因为后面的故事大家都经历过了,我就不再赘述。
刚才我说了 Richard Stallman 打造了自由软件的愿景,但是我还没有讲这背后的哲学。
“free software” 中的 “free” 一词并不是指价格,而是自由。这并非毫无争议,而最近有些自由软件运动的前瞻者(如 Eric Raymond)开始讲 “开源”,因为 “自由” 对大多数人来说有点不舒服。自由敲响 “让世界变得更好” 的警钟,带来不安。它要改变,而改变让许多人害怕。为了平复这种恐惧,人们发明了其他的自由软件许可证来让更多的人能够接受自由软件的概念,同时避免吓坏软件行业。
这就是 GNU 工程不喜欢 “开源.” 一词的原因。我们认为让人们摆脱恐惧比混淆概念更有意义。只有用户和公司明白自由的重要,我们才能避免重蹈覆辙。
GNU 工程的哲学是 每个人 都固有权利来使用程序、复制程序以及修改程序使之适合自己的需求。GNU 通用公共许可证的 唯一 限制是 没人 有权剥夺其他人的上述自由。
当作者把代码按照 GNU GPL 发布后,自由就成了程序不可分割的一部分。当然,许多商业人士视之为眼中钉,因为这让他们无法再拿走代码、修改代码,然后按照专有软件来销售。只要还有人梦想着赚快钱,自由软件的自由就会阻止象微软这样的公司毁坏自由系统未来的开发。
针对 GNU 哲学最常用的争辩可能是说软件是程序员的 “知识产权”,这个论断只有在程序员能够决定其程序的发行价格时才是对的。大家都能理解这个论断,因为这正是过去20年来大家一直被告知去相信的论断。
然而,实际情况有所不同。依靠销售自写软件生活的个人程序员是例外。程序员通常把权利给了他们工作的公司,而公司通过限制人们获得程序而赚钱。公司实际上有了对程序的权利而能对之定价,而不是程序员。
一个发明了某种非凡策略的律师并没有权利宣称那是他的 “知识产权”。他的策略每个人都可以自由使用。那么我们为什么愿意接受每行代码——无论写得多烂或多么无趣——是独特而属于个人的概念?有些人对控制权的执着是如此狂热,以至于即使是人类的基因也要申请专利……被那些不怎么 “用到” 它们的人。难道 一切 都能申请专利和许可证?
这是 GNU 工程的核心观点之一提出的问题。让我们想象一个没有软件专利的世界,或者一个每个人都使用 GNU GPL 发布软件而软件专利变得格格不入的世界。
现在本来被一再重复解决的标准问题有了大家都可以使用的方案。人们不再浪费时间一次一次地解决同样的问题——程序员将寻求新的方法并解决新的问题。如果有人需要某个功能,那么他们只需雇佣程序员来实现就好了。没有许可证和金钱的限制,程序的开发只取决于两个标准:需求和质量。
关于质量——现在越来越多的公司意识到让用户有源代码的访问权会让它们获得巨大的优势。简单来说:众人拾柴火焰高。一个人毫无头绪的问题,另一个人可能是小菜一碟。因为有这样的优势,自由软件常常远胜于同类的专有软件。现在有些公司开始适应给予用户访问软件代码的权限,但是还没有给予其他权利。人们顺从地把改进交给这些公司,让它们的产品变得先进。这基本上就是让公司有了一个庞大的免费开发部。如果我们 现在 不在意这件事,那么5年后我们可能不得不要为我们提交了改进的新版软件付费。
软件是 “知识产权” 的概念本身就带有这样的宿命(请原谅我的悲观)。只要我们还接受这个概念,我们就接受了让公司获得掌控权的危险。不象有些人认为的那样,微软 不是 魔鬼的化身。微软是一个我们习以为常的系统的 自然结果。
对自断后路的恐惧也是常见的观点。越是好的程序越是有更多的用户,那么也就有更多需求和新想法。新的情况会有新的结构来适应,但是工作会变多而不是变少,而且变得有趣而不那么平凡。
最后一个担心是担心缺乏认可。人以类聚,物以群分。我自己更想要象 Linus Torvalds 或 Richard Stallman 那样的尊敬,而不是 Bill Gates 那样的名声。
诚然,这听起来并不象是改善了世界而且有点理想主义,但是许多真正的伟大思想都是发自把世界变得稍微好一点的愿望。
有一点非常明确:是的,广义上 GNU 工程并不反对资本主义或公司,而且它也不特别反对软件公司。我们并不想削弱获得收益的潜力。恰恰相反,每个公司都可以通过销售软件、文档和服务获取它们想要的利润,多多益善——只要它们遵守自由软件的基本原则。公司赚的越多,它们就越有钱投资到新软件的开发。我们不要消灭市场,我们只是要让它跟上时代。
关于基本原则的一个简要说明:自由软件当然要求自由文档。让书籍的继承者——软件——自由而接受对电子书籍1的控制完全没有道理。自由文档和自由软件一样重要。
也许有人会把我说的追求 “让市场跟上时代” 当作夸夸其谈抛之脑后。但是它是 GNU 哲学的一个重要观点:软件只和一些怪才和公司相关的时代已经早就结束了。今天,软件是信息的通道。一个阻挡信息通道的系统以及获得信息本身,必须被重新审视。
当 Eric Raymond 发布所谓 “万圣节文档” 时,它让人亢奋,也让人恐慌。如果你没有读过这个文档:它是微软研究自由软件的强项和弱点的内部报告,特别是分析了 Linux。其作者的基本结论是微软有两种可能来应对自由软件的威胁。
第一个是改变已有的协议或构建新的协议,同时让其文档模糊不清或者没有文档,这样就只有 Windows 电脑能够顺利实现这些协议。
这个伎俩的一个例子就是惠普 “Cxi” 打印机使用的协议,它作为超低价 “Windows 打印机” 发售。它的规格书只给了微软,所以其他系统无法使用该打印机。
有个 “受过职业培训的” 计算机推销员告诉我 “for Windows” 标签意味着该打印机需要一种非常特殊的内存,而只有 Windows 电脑才有;这就是为什么它不能在 Linux 下使用。普通用户对此会很迷惑,而这正是我要讲的第二个伎俩。
第二种伎俩通常可以使用缩写词 “FUD”(Fear——害怕、Uncertainty——不确定、Doubt——怀疑)来汇总,它在被微软发现之前已经被 IBM 用了很久。其道理很清楚:如果你能让一个人足够不确定,他/她就不敢做 任何 决定,这就相当于让这个人保持目前的状态。就是这个想法。
一直以来,教育就是迷信的死敌。我们决不能因允许自己变得分裂而让教育受到阻碍。
当前最明显的分裂是我们已经讲过的 “开源” 和 “自由软件” 的不同。即使对大多数内行,区分两者也不容易,只有在历史环境下才能理解它们的区别。由于这是一个中心要点,我再多说几句。
当 GNU 系统和 Linux 内核完成后,我们突然就有了一个完全的、强大的自由系统。这迟早会引起公众的注意。
有了关注之后,“free” 一词让很多公司不安。他们首先联想到 “不花钱”,直接的意思就是 “没有收益”。当人们要告诉他们 “free” 真正的意思是 “自由” 时,他们完全震惊了。
被不安和怀疑侵扰,人们要不顾一切地避免 “free”和 “自由” 的想法油然而生。“开源” 一词由此诞生。
诚然,使用 “开源” 一词售卖这个理念比使用 “自由软件” 来得容易。但是其后果是 “新人” 对这个理念的来源毫无概念也无从理解。这就分裂了自由软件运动,导致大量无谓的阵地战,浪费了很多创新的能力。
有了更多感兴趣的听众并不意味着我们要少说背后的哲学。正相反:越多的人和公司不理解自由是为了他们的利益,我们越要谈论自由。自由软件为我们所有人——公司和用户——带来巨大潜力。
我们的计划并不是要除去资本,也不是要消灭公司。为了所有参与者的福利,我们要改变大家对软件的认知,让它适应21世纪的需求。这就是 GNU 工程的核心。
我们每个人都可以为此做出一份贡献——或者是程序、或者是文档,甚至只是告诉大家事情还可以有所不同。
向公司解释自由软件 不是威胁 而是机会也非常关键。当然,这不是一日之功,但是当所有参与者都意识到这些可能性和远景时,大家都是赢家。因此,如果你在软件行业工作,请熟知这里讲的话题,告诉朋友以及同事。请避免对他们 “传教”——我知道大多数人有此倾向——事实胜于雄辩。给他们时间,让他们平静地思考,让他们成为这个概念的朋友。向他们展示自由并不可怕。
我希望我传递了自由软件的哲学,或者至少描述了一些新思想。如果你有问题或想讨论,我整晚都在此并乐意回答任何问题。祝大家有一个充满乐趣的夜晚。谢谢你们。