GNU宣言
GNU宣言(如下所示)由 Richard Stallman 于 1985 年撰写,旨在寻求对开发 GNU 操作系统的支持。部分文本取自 1983 年的原始公告。在 1987 年期间,它进行了细微的更新以解释发展情况;从那时起,最好保持不变。
自那时起,我们了解到一些常见的误解,不同的措辞可以帮助避免这些误解。自 1993 年以来添加的脚注有助于澄清这些要点。
如果您想安装 GNU/Linux 系统,我们建议您使用 100% 自由软件 GNU/Linux 发行版之一。有关如何贡献,请参阅 gnu.org/help。
GNU 项目是自由软件运动的一部分,这是一场为 软件用户争取自由 的运动。将 GNU 与术语“开源”联系起来是错误的——该术语是 1998 年由不同意自由软件运动伦理价值观的人创造的。他们用它来推广对同一领域的 不道德的方法。
什么是 GNU?Gnu's Not Unix!
GNU,代表 Gnu's Not Unix,是我正在编写的完整的 Unix 兼容软件系统的名称,这样我就可以免费赠送给所有可以使用它的人 [1]。其他几位志愿者正在帮助我。非常需要时间、金钱、程序和设备的捐助。
到目前为止,我们有一个带有 Lisp 用于编写编辑器命令的 Emacs 文本编辑器、一个源代码级调试器、一个与 yacc 兼容的解析器生成器、一个链接器和大约 35 个实用程序。一个 shell(命令解释器)即将完成。一个新的可移植的优化 C 编译器已经编译了它自己,并可能在今年发布。初始内核已存在,但需要更多功能来模拟 Unix。当内核和编译器完成后,就可以分发适合程序开发的 GNU 系统。我们将使用 TeX 作为我们的文本格式化程序,但正在开发一个 nroff。我们也将使用免费的、可移植的 X Window 系统。此后,我们将添加一个可移植的 Common Lisp、一个 Empire 游戏、一个电子表格和数百个其他东西,以及在线文档。我们希望最终提供通常与 Unix 系统一起使用的所有有用的东西,以及更多。
GNU 将能够运行 Unix 程序,但不会与 Unix 相同。我们将根据我们使用其他操作系统的经验,进行所有方便的改进。特别是,我们计划拥有更长的文件名、文件版本号、防崩溃的文件系统、可能的文件名补全、与终端无关的显示支持,以及最终通过它可以共享屏幕的基于 Lisp 的窗口系统,多个 Lisp 程序和普通的 Unix 程序都可以共享一个屏幕。C 和 Lisp 都将作为系统编程语言提供。我们将尝试支持 UUCP、MIT Chaosnet 和互联网通信协议。
GNU 最初的目标是具有虚拟内存的 68000/16000 类机器,因为它们是最容易在其上运行的机器。在较小的机器上运行它的额外努力将留给想要在它们上使用它的人。
为了避免可怕的混乱,请在它是这个项目的名称时,发音“GNU”这个词中的 g。
为什么我必须编写 GNU
我认为金科玉律要求如果我喜欢一个程序,我就必须与喜欢它的其他人分享。软件销售商希望分裂用户并征服他们,使每个用户都同意不与他人分享。我拒绝以这种方式破坏与其他用户的团结。我无法在良知上签署保密协议或软件许可协议。多年来,我一直在人工智能实验室工作,以抵制这种趋势和其他不友好的行为,但最终它们走得太远了:我不能留在一个为了我的意愿而做这些事情的机构里。
为了让我能够在不蒙羞的情况下继续使用计算机,我决定组建一个足够多的自由软件,这样我就能够在没有任何不自由的软件的情况下生活。我已经从人工智能实验室辞职,以拒绝麻省理工学院任何阻止我赠送 GNU 的法律借口 [2]。
为什么 GNU 将与 Unix 兼容
Unix 不是我理想的系统,但它还不错。Unix 的基本功能似乎是好的,而且我认为我可以在不破坏它们的情况下填补 Unix 所缺乏的东西。而且,一个与 Unix 兼容的系统对于许多其他人来说都很方便采用。
GNU 将如何可用
GNU 不属于公共领域。每个人都可以修改和重新分发 GNU,但任何分发者都不允许限制其进一步重新分发。也就是说,不允许进行 专有修改。我想确保所有版本的 GNU 保持自由。
为什么许多其他程序员都想帮忙
我发现许多其他程序员对 GNU 感到兴奋,并希望提供帮助。
许多程序员对系统软件的商业化感到不高兴。它可能使他们赚更多的钱,但它要求他们感觉与一般的其他程序员发生冲突,而不是感到像同志一样。程序员之间友谊的根本行为是共享程序;现在通常使用的营销安排实际上禁止程序员将他人视为朋友。软件的购买者必须在友谊和遵守法律之间做出选择。当然,许多人认为友谊更重要。但是那些相信法律的人通常对这两种选择都感到不自在。他们变得愤世嫉俗,认为编程只是一种赚钱的方式。
通过从事和使用 GNU 而不是专有程序,我们可以善待所有人并遵守法律。此外,GNU 还可以作为一个榜样来激励和团结其他人加入我们分享。如果我们使用不自由的软件,这可以给我们带来一种不可能的和谐感。对于我交谈过的约一半的程序员来说,这是一笔重要的幸福感,金钱无法替代。
您如何贡献
我正在向计算机制造商请求捐赠机器和资金。我正在请求个人捐赠程序和工作。
如果您捐赠机器,您可以预期的一种结果是 GNU 将在早期阶段在它们上运行。这些机器应该是完整的、随时可用的系统,批准在住宅区使用,并且不需要复杂的冷却或电源。
我发现很多程序员渴望为 GNU 贡献兼职工作。对于大多数项目,这种兼职分布式工作将很难协调;独立编写的部分将无法协同工作。但是,对于替换 Unix 的特殊任务,这个问题是不存在的。一个完整的 Unix 系统包含数百个实用程序,每个实用程序都有单独的文档记录。大多数接口规范都由 Unix 兼容性固定。如果每个贡献者都可以编写一个与单个 Unix 实用程序兼容的替代品,并使其在 Unix 系统上正常工作以代替原始实用程序,那么这些实用程序在组合在一起时将正常工作。即使考虑到墨菲可能会产生一些意想不到的问题,组装这些组件也是一项可行的任务。(内核将需要更密切的沟通,并将由一个小的、紧密的团队负责。)
如果我获得资金捐赠,我可能会雇佣一些人全职或兼职。按照程序员的标准,薪水不会很高,但我正在寻找那些将建立社区精神与赚钱同等重要的人。我将此视为使敬业的人能够全身心地投入到 GNU 工作中的一种方式,从而避免他们以其他方式谋生。
为什么所有计算机用户都会受益
一旦编写完 GNU,每个人都可以免费获得良好的系统软件,就像空气一样 [3]。
这意味着不仅仅是为每个人节省 Unix 许可证的价格。这意味着可以避免系统编程工作中的许多浪费性重复。这种努力可以改为用于推动技术进步。
完整的系统源代码将对所有人开放。因此,任何需要修改系统的用户都可以自由地自行修改,或者雇佣任何可用的程序员或公司来为他修改。用户将不再受制于拥有源代码并独揽修改权的某个程序员或公司。
学校可以通过鼓励所有学生学习和改进系统代码,从而提供更有利于教育的环境。哈佛大学的计算机实验室曾经有这样一项政策:如果一个程序的源代码没有公开展示,就不能安装在系统上,并且通过实际拒绝安装某些程序来维护这项政策。我从中获得了很大的启发。
最后,考虑谁拥有系统软件以及人们有权或无权对其做什么的负担将会被解除。
让人为使用程序付费的安排,包括许可证的复制,总是会通过繁琐的机制给社会带来巨大的成本,这些机制需要弄清楚一个人必须为多少(即哪些程序)付费。只有警察国家才能强迫每个人遵守它们。设想一个太空站,必须以巨大的成本制造空气:按升计算向每个呼吸者收费可能是公平的,但即使每个人都负担得起空气费用,整天整夜都戴着计量的防毒面具也是无法忍受的。而且到处都是电视摄像机,以查看你是否摘下面具,这太离谱了。最好用人头税来支持空气工厂,而扔掉防毒面具。
复制程序的全部或部分对程序员来说就像呼吸一样自然,而且富有成效。它应该像呼吸一样自由。
一些容易被驳斥的对 GNU 目标的反对意见
- “如果它是免费的,就不会有人使用它,因为这意味着他们不能依赖任何支持。”
- “你必须为程序收费才能支付提供支持的费用。”
-
如果人们宁愿为 GNU 加服务付费,而不是免费获得 GNU 而不提供服务,那么一家仅向免费获得 GNU 的人提供服务的公司应该是有利可图的 [4]。
我们必须区分以实际编程工作形式提供的支持和仅仅是手把手指导。前者是人们无法从软件供应商那里依赖的。如果你的问题没有足够多的人遇到,供应商会告诉你走开。
如果你的业务需要能够依赖支持,唯一的办法是拥有所有必要的源代码和工具。然后你可以雇佣任何可用的专业人员来解决你的问题;你不会受制于任何个人。使用 Unix,源代码的价格使得大多数企业都无法考虑这一点。使用 GNU 这将很容易。仍然可能没有可用的合格人员,但这不能归咎于分发安排。GNU 并不能消除世界上所有的问题,只是其中一部分。
同时,那些对计算机一无所知的用户需要手把手指导:为他们做一些他们自己很容易就能做但不知道如何做的事情。
这些服务可以由专门销售手把手指导和维修服务的公司提供。如果用户确实宁愿花钱购买带服务的产品,他们也愿意在免费获得产品后购买服务。服务公司将在质量和价格上竞争;用户不会被绑定到任何特定的一家。同时,我们这些不需要服务的人应该能够在不支付服务费用的情况下使用该程序。
- “如果没有广告,你无法接触到很多人,而且你必须为程序收费才能支持广告。”
- “为人们可以免费获得的程序做广告是没用的。”
-
有各种形式的免费或非常廉价的宣传方式可以用来告知大量的计算机用户有关 GNU 之类的事情。但通过广告来接触到更多的微型计算机用户可能是真的。如果真是这样,一家为复制和邮寄 GNU 服务收取费用的企业应该足以成功地支付其广告费用以及更多费用。这样,只有从广告中受益的用户才为其付费。
另一方面,如果很多人从他们的朋友那里获得 GNU,而这些公司没有成功,这将表明广告对于传播 GNU 并不是真正必要的。为什么自由市场的倡导者不愿意让自由市场来决定这一点呢? [5]
- “我的公司需要一个专有操作系统才能获得竞争优势。”
-
GNU 将把操作系统软件从竞争领域中移除。你将无法在这个领域获得优势,但你的竞争对手也无法在你之上获得优势。你和他们将在其他领域竞争,同时在这个领域相互受益。如果你的业务是销售操作系统,你不会喜欢 GNU,但这对你来说是艰难的。如果你的业务是其他事情,GNU 可以让你免于陷入昂贵的销售操作系统业务。
我希望看到 GNU 的开发得到许多制造商和用户的捐赠支持,从而降低每个人的成本 [6]。
- “程序员不应该因为他们的创造力而获得奖励吗?”
-
如果说有什么值得奖励的,那就是社会贡献。创造力可以是一种社会贡献,但前提是社会可以自由地使用这些成果。如果程序员应该因为创建创新程序而获得奖励,那么同样,如果他们限制这些程序的使用,就应该受到惩罚。
- “程序员不应该能够要求为他的创造力获得奖励吗?”
-
想要为工作获得报酬或寻求最大化收入并没有错,只要不使用具有破坏性的手段。但是今天软件领域中常用的手段是基于破坏性的。
通过限制用户的使用来从他们那里获得金钱是具有破坏性的,因为这些限制减少了程序可以被使用的方式和数量。这减少了人类从程序中获得的财富数量。当有意选择限制时,有害的后果是蓄意的破坏。
一个好公民不使用这种具有破坏性的手段来变得更富有,原因是,如果每个人都这样做,我们都会因为相互破坏而变得更贫穷。这就是康德伦理学;或者,黄金法则。由于我不喜欢如果每个人都囤积信息所造成的后果,我必须认为一个人这样做是错误的。具体来说,希望因其创造力而获得奖励的愿望并不能证明剥夺世界整体或部分创造力的行为是正当的。
- “程序员不会挨饿吗?”
-
我可以回答说,没有人被迫成为程序员。我们大多数人无法通过站在街上做鬼脸来挣到钱。但因此,我们不会因此而被注定一生站在街上做鬼脸,并挨饿。我们会做其他事情。
但这是一个错误的答案,因为它接受了提问者的隐含假设:即没有软件的所有权,程序员不可能得到一分钱的报酬。据说,要么全部,要么什么都没有。
程序员不会挨饿的真正原因是,他们仍然可以因为编程而获得报酬;只是不如现在那么多。
限制复制并不是软件业务的唯一基础。这是最常见的基础 [7],因为它带来了最多的钱。如果它被禁止,或被客户拒绝,软件业务将转移到其他现在较少使用的组织基础上。组织任何类型的业务总是有多种方法。
在新基础上,编程可能不会像现在这样有利可图。但这并不是反对变革的理由。售货员现在的工资被认为是公正的,这并不被认为是不公正的。如果程序员也赚同样的钱,那也不是不公正的。(实际上,他们仍然会赚得更多。)
- “人们没有权利控制他们的创造力如何被使用吗?”
-
“控制自己想法的使用”实际上构成了对他人生活的控制;它通常被用来使他们的生活更加困难。
仔细研究过知识产权问题 [8]的人(例如律师)说,没有固有的知识产权。政府承认的所谓的知识产权是由特定目的的特定立法行为创造的。
例如,建立专利制度是为了鼓励发明人披露其发明的细节。它的目的是帮助社会,而不是帮助发明人。当时,专利的 17 年寿命与技术水平的进步速度相比很短。由于专利只是制造商之间的问题,与设立生产相比,许可协议的成本和工作量都很小,因此专利通常不会造成太大的危害。它们不会阻碍大多数使用专利产品的个人。
版权的概念在古代并不存在,当时作者经常在非小说作品中大量复制其他作者的内容。这种做法很有用,而且是许多作者的作品得以部分保存的唯一途径。创建版权制度的明确目的是为了鼓励创作。在其发明的领域——书籍,只能通过印刷机经济地复制,它没有造成太大的危害,也没有阻碍大多数阅读书籍的个人。
所有知识产权都只是社会授予的许可,因为人们认为,正确或错误地认为,社会作为一个整体将因授予它们而受益。但是在任何特定情况下,我们必须问:我们授予这种许可真的会更好吗?我们正在许可一个人做什么样的行为?
今天程序的情况与一百年前的书籍的情况非常不同。复制程序最简单的方法是从一个邻居到另一个邻居,程序同时具有源代码和目标代码,这两个代码是不同的,程序是使用的而不是阅读和欣赏的,这些事实结合起来创造了一种情况,即执行版权的人在物质和精神上都在伤害整个社会;在这种情况下,一个人不应该这样做,无论法律是否允许他这样做。
- “竞争使事情做得更好。”
-
竞争的范例是一场赛跑:通过奖励获胜者,我们鼓励每个人跑得更快。当资本主义真的以这种方式运作时,它做得很好;但它的捍卫者错误地认为它总是以这种方式运作。如果跑步者忘记了为什么要提供奖励并一心想赢,无论如何,他们可能会找到其他策略,例如,攻击其他跑步者。如果跑步者发生拳头斗殴,他们都会迟到。
专有和秘密软件在道德上等同于拳头斗殴中的跑步者。可悲的是,我们拥有的唯一裁判似乎并不反对打斗;他只是规范它们(“你每跑十码,就可以开一枪”)。他真的应该解散它们,并惩罚跑步者甚至试图打斗。
- “如果没有金钱奖励,每个人都会停止编程吗?”
-
实际上,许多人会在完全没有金钱奖励的情况下进行编程。编程对某些人来说具有不可抗拒的吸引力,通常是那些最擅长编程的人。不乏专业的音乐家,即使他们没有希望以此为生,也会坚持下去。
但实际上,这个问题虽然经常被问到,但并不适合当前的情况。程序员的报酬不会消失,只会减少。所以,正确的问题是,是否有人会在报酬减少的情况下仍然编程?我的经验表明,他们会的。
在过去的十多年里,世界上许多最优秀的程序员在人工智能实验室工作,他们的报酬远低于他们在其他任何地方可以获得的。他们获得了许多非金钱的回报:例如,名声和赞赏。而且,创造本身也是一种乐趣,一种回报。
然后,当他们有机会以更高的报酬从事同样有趣的工作时,他们中的大多数人就离开了。
事实表明,人们会出于金钱以外的原因进行编程;但是,如果他们有机会赚很多钱,他们就会期望并要求这样做。低薪机构在与高薪机构的竞争中表现不佳,但如果禁止高薪机构,它们就不必表现糟糕。
- “我们非常需要程序员。如果他们要求我们停止帮助邻居,我们就必须服从。”
-
你永远不会绝望到必须服从这种要求。记住:国防花费数百万,但绝不向进贡付一分钱!
- “程序员需要以某种方式谋生。”
-
短期来看,这是真的。然而,程序员有很多种方式可以谋生,而无需出售使用程序的权利。现在这种方式很普遍,因为它能为程序员和商人带来最多的钱,而不是因为它是唯一的谋生之道。如果你想找到其他方式,很容易就能找到。这里有一些例子。
一家推出新计算机的制造商会为将操作系统移植到新硬件上付费。
销售教学、指导和维护服务也可以雇用程序员。
有新想法的人可以将程序作为免费软件 [9]分发,向满意的用户寻求捐款,或出售指导服务。我遇到过一些已经以这种方式成功工作的人。
有相关需求的用户可以组成用户组,并缴纳会费。一个小组可以与编程公司签订合同,编写该小组的成员想要使用的程序。
各种开发都可以通过软件税来资助
假设每个购买计算机的人都必须支付价格的 x% 作为软件税。政府将这笔钱交给像 NSF 这样的机构,用于软件开发。
但是,如果计算机购买者自己向软件开发捐款,他可以获得税收抵免。他可以捐款给他自己选择的项目——通常,选择的原因是他希望在项目完成后使用其结果。他可以抵扣任何金额的捐款,最高可达他必须支付的总税款。
总税率可以由纳税人投票决定,权重取决于他们将被征收的税额。
结果
- 计算机用户社区支持软件开发。
- 这个社区决定需要什么级别的支持。
- 关心他们的份额用于哪些项目的用户可以选择自己决定。
从长远来看,使程序免费是走向后稀缺世界的一步,在那里,没有人需要为了谋生而非常努力地工作。人们可以自由地专注于有趣的活动,例如编程,在每周花费必要的十个小时在诸如立法、家庭咨询、机器人维修和小行星勘探等必要任务之后。无需通过编程来谋生。
我们已经大大减少了整个社会为实际生产力必须做的工作量,但只有少部分转化为工人的休闲时间,因为许多非生产性活动需要伴随生产性活动。造成这种情况的主要原因是官僚主义和对抗竞争的等距斗争。自由软件将大大减少软件生产领域的这些消耗。我们必须这样做,才能使生产力的技术进步转化为我们更少的工作。
脚注
- 这里的措辞很粗心。本意是任何人都不必为使用 GNU 系统的许可付费。但措辞并没有明确这一点,人们常常将其理解为 GNU 的副本应该始终以少量或不收费的方式分发。这从来都不是本意;稍后,该宣言提到了公司以利润为目的提供分发服务的可能性。后来,我学会了仔细区分自由意义上的“自由”和价格意义上的“免费”。自由软件是用户有权分发和更改的软件。一些用户可能免费获得副本,而另一些用户则付费获得副本——如果这些资金有助于支持改进软件,那就更好了。重要的是,每个拥有副本的人都有自由与其他人在使用它时进行合作。
- “赠送”一词是另一个表明我尚未明确区分价格问题和自由问题的迹象。我们现在建议在谈论自由软件时避免使用此词。请参阅“避免使用的词和短语”,了解更多解释。
- 这是我未能仔细区分“免费”的两种不同含义的另一个地方。这句话本身并非不真实——你可以从朋友或网上免费获得 GNU 软件的副本。但它确实暗示了错误的想法。
- 现在已经存在几家这样的公司。
- 尽管自由软件基金会是一个慈善机构而不是公司,但它在 10 年里的大部分资金都来自其分发服务。您可以从 FSF 订购物品以支持其工作。
- 一群计算机公司在 1991 年左右联合起来资助 GNU C 编译器的维护。
- 我认为我说专有软件是软件中最常见的赚钱基础是错误的。看起来实际上最常见的商业模式是定制软件的开发。这不提供收取租金的可能性,因此该业务必须继续进行实际工作才能继续获得收入。定制软件业务将在自由软件世界中继续存在,或多或少地保持不变。因此,我不再期望在自由软件世界中,大多数付费程序员的收入会减少。
- 在 20 世纪 80 年代,我还没有意识到谈论“知识产权”的“问题”有多么令人困惑。这个术语显然带有偏见;更微妙的是,它将引起非常不同问题的各种不同的法律捆绑在一起。如今,我敦促人们完全拒绝“知识产权”一词,以免其他人认为这些法律构成一个连贯的问题。明确的方法是分别讨论专利、版权和商标。请参阅关于此术语如何传播混乱和偏见的进一步解释。
- 后来,我们学会了区分“自由软件”和“免费软件”。“免费软件”一词指的是你可以自由分发的软件,但通常你不能自由地研究和更改源代码,因此它的大部分都不是自由软件。请参阅“避免使用的词和短语”,了解更多解释。
(如今,对于要处理的软件任务,请参阅高优先级项目列表和GNU 招聘列表,这是 GNU 软件包的通用任务列表。有关其他帮助方式,请参阅GNU 操作系统帮助指南。)