GNU 项目的历史和哲学
Georg C. F. Greve <[email protected]>这是 1998 年 12 月 5 日在德国帕德博恩大学的 CLOWN(工作节点集群——Debian GNU/Linux 机器的 512 节点集群项目)上用德语发表的演讲的翻译。
还提供德语原文。 建议阅读原文。
作者注:在翻译这篇演讲时,我尽量保持与我用德语发表的原始演讲尽可能接近。打破德语结构并将其转化为合理的英语是一项艰巨的工作,我要感谢我的室友 Doug Chapin,一位好朋友和美国本地人,他帮助我翻译了一些短语和单词。翻译永远不会包含相同的情感和含义,但我认为我们非常接近了……
在准备这篇演讲期间,我阅读了几份文件并与很多人交谈。 在此过程中,我意识到,即使那些工作或多或少直接由 GNU 项目创建的人,也不知道其真正的含义。 在我们目前经历的整体冲刺中,似乎对根源的基本认识已经丧失。 今晚我希望我能够再次揭示其中的一些根源。
起源于 70 年代到 80 年代的过渡时期,当时软件行业变成了我们今天如此乐意接受的样子。 在最初的竞争中,一些公司开始囤积代码作为生存策略。 在试图支持这种行为的合法性时,他们创造了“软件盗版”之类的短语,因为它们表明当软件被复制时会丢失一些东西。 人们被迫屈服于束缚他们的许可,以确保没有人可以访问这些程序。
当一个朋友问你他是否可以从你那里复制一个程序时,你立即面临一个两难的境地。 复制该程序对你没有任何不利之处,并且它在复制过程中不会变质。 如果他要求你传递盐,那会更具限制性,因为你们不能同时使用它。 公司的政治迫使你在合法性和友谊之间做出选择。
很多人对此感到不安,他们中的大多数人还是复制了该程序——他们经常使用一些蹩脚的借口,这些借口主要是为了安抚自己因公司选择的措辞而造成的困扰。 最绝对的流行语可能是“如果我经常使用它,我会付费”,如果他曾经不得不依赖专有软件,那么每个人都可能会发现自己使用了这句话。
一个人发现这种情况无法忍受。 理查德·斯托曼(Richard Stallman)习惯了早期的日子,(正如他自己所说)“天堂”,自由和对可能性的负责任的使用决定了情况,他设想了一个完全自由的系统的概念。 很快就清楚了,该系统将与 Unix 兼容,并且以递归首字母缩写词命名——当时非常流行——GNU,意思是“GNU's Not Unix”。 斯托曼召集了一些对自由系统充满热情的人,并创立了 GNU 自由软件基金会,他至今仍担任该基金会的主席。
由于首先 Unix 系统需要大量组件,因此很明显,这些是迈向完全自由系统的第一步。 GNU FSF 致力于实现它们,到 90 年代初,GNU 系统已经完成(内核除外)。 GNU 内核——项目名称“Hurd”——具有一个极其雄心勃勃的布局,事实证明,其开发非常缓慢和笨拙。 幸运的是,此时 Linus Torvalds 的第一个 Linux 内核正处于测试阶段,当他看到 GNU FSF 已经完成的工作时,他将他的内核置于 GNU GPL 之下,并使其成为 GNU 系统的内核。
无需讲述其余的故事,因为我们大多数人都亲身经历了。
稍早我说过理查德·斯托曼设想了自由软件的概念。 我没有告诉你的是它背后的哲学。
“自由软件”中的“自由”一词不是指价格,而是指自由。 这不是一个没有问题的主题,最近该运动的一些有远见的人(如 Eric Raymond)已经开始谈论“开源”,因为“自由”对大多数人来说听起来令人不安。 自由听起来像是“让世界变得更美好”和不安全感。 它听起来像变化,而变化使许多人感到恐惧。 为了麻痹这种恐惧,人们发明了其他自由软件许可证,以使更多的人可以接受该概念,并避免吓到业界。
这就是为什么 GNU 项目不喜欢“开源”一词的原因。 我们认为,消除人们对该想法的恐惧比模糊概念更有意义。 只有当用户和公司意识到自由的重要性时,我们才能避免退回到旧模式。
GNU 项目的哲学认为,每个人都应享有使用程序、复制程序以及更改程序以使其适应其需求的权利。 GNU 通用公共许可证所做的唯一限制是,任何人都无权剥夺其他任何人的这种自由。
当作者将其代码置于 GNU GPL 之下时,自由是他程序中不可分割的一部分。 当然,这是许多企业的眼中钉,因为它阻止他们获取代码,对其进行修改,然后将其作为专有程序出售。 只要有人试图过上瞬间致富的梦想,正是这种自由阻止了像微软这样的公司腐化我们系统的未来发展。
反对 GNU 哲学最常用的论点可能是软件是程序员的“知识产权”,如果他可以决定该程序的发行价格,那才是正确的。 对于每个人来说,这个论点都容易理解,因为它正是我们在过去 20 年中被告知要相信的。
但现实略有不同。 可以通过出售自己编写的软件为生的私人程序员是例外。 通常,他们会将其权利授予他们工作的公司,而该公司通过限制对该程序的访问来赚钱。 实际上,该公司拥有该程序的权利并决定其价格,而不是程序员。
发明了一种特别出色的策略的律师无权将其声明为自己的“知识产权”。 任何人都可以免费使用该方法。 为什么我们如此乐意接受这样的概念,即每一行代码——无论它写得多么糟糕或多么没有灵感——都是如此独特和令人难以置信的个人化? 对控制的狂热已经占据主导地位,甚至人类基因也受到专利的保护……尽管通常不是由“使用”它们的人进行专利保护。 真的应该允许对所有东西进行专利和许可吗?
这是 GNU 项目的核心思想之一的问题。 让我们想象一下,不存在专利软件的概念,或者由于每个人都在 GNU GPL 下发布其程序,因此对软件进行专利申请会很不寻常。
可以轻松访问必须反复解决的标准问题的解决方案。 任何人都不必再浪费时间反复解决同一个问题数十次——程序员可以寻找新的方法并解决新的问题。 如果一组用户需要程序中的某个特定功能,他们只需聘请一名程序员并让他实现即可。摆脱了许可证和金钱的限制,只有两个标准可以决定程序的发展:需求和质量。
说到质量——如今,越来越多的公司意识到允许用户访问源代码会给他们带来巨大的优势。 简单来说:更多的眼睛可以看到更多。 对于一个人来说无法想象的解决方案,对于另一个人来说却显而易见。 由于这种优势,自由软件通常比其专有软件要好得多。 现在似乎在一些公司内部建立起来的思路是让用户访问源代码,但不授予任何其他权利。 改进会顺从地发送回公司,该公司会用这些改进来改进其产品。 基本上是一个巨大的免费开发部门。 如果我们现在不注意这些事情,可能会发生 5 年后我们将不得不为通过应用我们自己的补丁而产生的版本付费。
软件作为“知识产权”的概念在其内部带有厄运的种子(请原谅我在这里的感伤)。 只要我们接受这个概念,我们就接受另一个公司会试图控制的危险。 微软不是某些人似乎认为的化身。 微软是广泛接受的系统的自然结果。
对锯断你坐着的树枝的恐惧也普遍存在,但完全是非理性的。 更好的程序会带来更多有其他需求和新想法的用户,从而创造更多的需求。 该结构将发生变化以适应新情况,但工作将增加而不是减少,并且它将变得不那么常规,因此更有趣。
剩下的最后一个共同的恐惧是对缺乏认可的恐惧。 好吧,对不同哲学的领头人所持的尊重不言自明。 就我而言,我宁愿像 Linus Torvalds 或 Richard Stallman 那样受到尊重,也不愿拥有比尔·盖茨的名声。
诚然,这听起来像是让世界变得更好和理想主义,但许多真正伟大的想法都是出于让世界变得更好一点的愿望而驱动的。
首先要非常明确地说明一点:不,GNU 项目并非反对资本主义或一般的公司,尤其不反对软件公司。我们不想削弱盈利的潜力,恰恰相反。我们鼓励每家公司尽可能地从软件、文档和服务销售中赚钱——只要他们坚持自由软件的基本原则。这些公司赚得越多,他们就能投入更多资金来开发新软件。我们不想摧毁市场,我们只是想让它适应时代的发展。
关于基本原则的简短说明:当然,自由软件也需要自由文档。将书籍的后继者——软件——自由化,同时接受对直接数字等价物的控制,这没有任何意义。自由文档与自由软件本身同等重要。
也许有人认为我关于试图“让市场适应时代”的说法是修辞性的,但这在 GNU 哲学中是一个重要的观点:软件只对少数怪人和一些公司有意义的时代早已过去。如今,软件是通往信息的途径。一个阻碍通往信息的途径,从而阻碍信息本身访问的系统,必须重新考虑。
当埃里克·雷蒙德发布所谓的“万圣节文件”时,它引发了从欣快到偏执的各种情绪。对于那些没有读过的人来说:这是一份微软的内部研究报告,其中分析了自由软件(尤其是 Linux)的优势和劣势。作者基本上得出的结论是,微软有两种可能性来应对这一威胁。
第一种是创建新的或修改旧的协议,只提供少量或根本不提供文档,以便只有基于 Windows 的机器才能拥有可用的实现。
这种策略的一个例子是 HP “Cxi” 打印机使用的协议,这些打印机以极其廉价的“Windows 打印机”进入市场。这些规范仅提供给微软,因此这些打印机无法被任何其他系统使用。
一位“受过专业培训”的电脑销售员告诉我,“for Windows”贴纸意味着打印机需要一种非常特殊的 RAM,只有 Windows 机器才有;这就是它不能在 Linux 下使用的原因。诸如此类的说法会让典型的用户感到困惑,这直接引出了第二种描述的策略。
这些策略通常被归纳为“FUD”(恐惧、不确定、怀疑)的首字母缩写,早在微软发现它们之前,IBM 就已经使用了。其思路很明确:如果你让某人足够不确定,他或她就不敢做出任何决定,从而有效地保持在他或她当前的位置。这就是其思路。
一直以来,教育都是迷信的死敌。我们绝不能允许因我们自身的分裂而阻碍教育的发展。
在最近的历史中,最明显的分裂是已经提到的“开源”和“自由软件”之间的区别。区分这两个概念并非易事,即使对于大多数业内人士来说也是如此,只有在历史背景下看待它才能理解。由于这是一个核心问题,我想就此谈几句。
随着 GNU 系统与 Linux 内核的完成,突然出现了一个完整、强大且免费的系统。这不可避免地迟早会引起公众的关注。
当这种关注来临时,许多公司对“自由”这个词感到不安。第一个联想是“没钱”,这立即意味着对他们来说“没有利润”。当人们试图告诉他们“自由”真正代表“自由”时,他们完全被震住了。
在这种不安全感和怀疑的影响下,产生了不惜一切代价避免使用“自由”和“自由”等词的想法。“开源”一词应运而生。
不可否认的是,如果你使用“开源”而不是“自由软件”这个词,更容易推销这个想法。但其后果是,“新手”对最初的想法一无所知或不理解。这导致了运动的分裂,并导致了令人难以置信的低效的壕沟战,浪费了大量的创造力。
更广泛的受众并不意味着我们应该减少讨论其背后的哲学。恰恰相反:越多人和公司不明白这种自由也符合他们的利益,我们就越需要谈论它。软件的自由为我们所有人(公司和用户)提供了巨大的潜力。
我们的计划不是要消除资本主义或摧毁公司。我们希望改变对软件的理解,以造福所有参与者,以适应 21 世纪的需求。这是 GNU 项目的核心。
我们每个人都可以尽自己的一份力量——无论是通过程序或文档的形式,还是只是通过传播有另一种处理事物方式的理念。
至关重要的是向公司解释自由软件不是一种威胁,而是一种机遇。当然,这不会一夜之间发生,但是当所有参与者都意识到其可能性和前景时,我们所有人都会赢。因此,如果您在软件行业工作,请熟悉这个话题,与朋友和同事谈论它。请不要尝试“传教”他们——我知道我们大多数人都有这种倾向——事实胜于雄辩。给他们时间和空间去思考,并让自己接受这个概念。向他们展示自由的概念没有什么可怕的。
我希望我能够传达这种哲学,或者至少激发对一些新想法的思考。如果您有任何问题或想讨论一些事情,我将整晚都在这里,欢迎提出任何问题。祝大家度过一个非常有趣的夜晚。谢谢大家。