为什么开源错失了自由软件的重点
作者:Richard Stallman“自由软件”和“开源”这两个术语几乎代表了相同的程序范围。然而,它们基于不同的价值观,对这些程序表达了截然不同的看法。自由软件运动为计算机用户的自由而奔走;这是一场争取自由和正义的运动。相比之下,开源理念主要看重实际的优势,而不为原则而奔走。这就是我们不认同开源,也不使用这个术语的原因。
当我们称软件为“自由”时,我们的意思是它尊重用户的基本自由:运行它的自由,研究和修改它的自由,以及在修改或不修改的情况下重新分发副本的自由。这是一个关于自由的问题,而不是价格的问题,所以请想到“言论自由”,而不是“免费啤酒”。
这些自由至关重要。它们不仅对个人用户至关重要,对整个社会也至关重要,因为它们促进了社会团结——即分享与合作。随着我们的文化和生活活动日益数字化,它们变得更加重要。在数字声音、图像和文字的世界里,自由软件对于普遍的自由来说变得越来越重要。
现在,世界各地有数千万人使用自由软件;印度和西班牙一些地区的公立学校现在教所有的学生使用自由的GNU/Linux 操作系统。然而,这些用户中的大多数人从未听说过我们开发这个系统和建立自由软件社区的道德原因,因为现在这个系统和社区更多地被称为“开源”,将其归因于一种不同的理念,在这种理念中,这些自由几乎没有被提及。
自 1983 年以来,自由软件运动一直在为计算机用户的自由而奔走。1984 年,我们启动了自由操作系统 GNU 的开发,以便我们可以避免那些剥夺用户自由的非自由操作系统。在 20 世纪 80 年代,我们开发了系统的大部分基本组件,并设计了 GNU 通用公共许可证 (GNU GPL) 来发布它们——该许可证专门用于保护程序所有用户的自由。
并非所有自由软件的用户和开发者都认同自由软件运动的目标。1998 年,自由软件社区的一部分分裂出来,开始以“开源”的名义进行活动。这个术语最初的提出是为了避免对“自由软件”这个术语的可能误解,但它很快就与自由软件运动的哲学观点截然不同的观点联系起来。
一些开源的支持者认为这个术语是“自由软件的营销活动”,它可以通过强调软件的实际好处来吸引企业高管,同时不提出他们可能不喜欢听的对错问题。其他支持者断然拒绝自由软件运动的道德和社会价值观。无论他们的观点如何,当他们为开源奔走时,他们既没有引用也没有倡导这些价值观。“开源”这个术语很快就与仅基于实际价值的观点和论点联系起来,例如制造或拥有功能强大、可靠的软件。大多数开源的支持者都是在那之后才加入的,他们也做了同样的联系。大多数关于“开源”的讨论不关注对错,只关注受欢迎程度和成功;这是一个典型示例。少数开源支持者现在确实说自由是问题的一部分,但在许多不这样认为的人中,他们并不那么显眼。
这两个术语现在描述了几乎相同的软件类别,但它们代表了基于根本不同价值观的观点。对于自由软件运动而言,自由软件是一种道德上的必然,是对用户自由的基本尊重。相比之下,开源的理念只是从如何使软件“更好”的角度来考虑问题——仅限于实际意义。它认为非自由软件是解决当前实际问题的劣质方案。
然而,对于自由软件运动而言,非自由软件是一个社会问题,而解决办法是停止使用它并转向自由软件。
“自由软件”。“开源”。如果它是相同的软件(或几乎如此),你使用哪个名字重要吗?是的,因为不同的词语传达不同的想法。虽然一个自由的程序无论叫什么名字今天都会给你同样的自由,但以持久的方式建立自由首先取决于教育人们珍视自由。如果你想帮助做到这一点,就必须谈论“自由软件”。
我们自由软件运动中的人并不认为开源阵营是敌人;敌人是专有(非自由)软件。但我们希望人们知道我们代表自由,所以我们不接受被错误地标记为开源支持者。我们提倡的不是“开源”,我们反对的也不是“闭源”。为了澄清这一点,我们避免使用这些术语。
自由软件和开源之间的实际差异
实际上,开源的标准比自由软件的标准略微宽松。据我们所知,所有现有的已发布的自由软件源代码都有资格被视为开源。几乎所有的开源软件都是自由软件,但也有例外。
首先,一些开源许可证过于严格,因此它们不符合自由许可证的资格。例如,Open Watcom 是非自由的,因为它的许可证不允许制作修改版本并私下使用。幸运的是,很少有程序使用这种许可证。
其次,在代码的版权许可之上添加的商标要求会使程序变成非自由的。例如,Rust 编译器可能不是自由的,因为商标条件禁止销售副本或分发修改版本,除非您完全删除所有商标的使用。这在实践中需要什么尚不清楚。
第三,开源的标准只关注源代码的使用。事实上,开源定义中的几乎所有条目都被制定为对软件源代码许可证的条件,而不是对用户可以自由做什么的条件。然而,人们经常将可执行文件描述为“开源”,因为它的源代码可以这样获得。这会在源代码是开源的(并且是自由的)但可执行文件本身是非自由的情况下造成自相矛盾的混乱。
这种悖论的简单情况是,当程序的源代码带有弱自由许可证(没有 copyleft)时,但其可执行文件带有额外的非自由条件。假设可执行文件与发布的源代码完全对应(可能并非如此),用户可以编译源代码以制作和分发自由的可执行文件。这就是为什么这种情况是简单的;这不是一个严重的问题。
非简单的情况是有害的和重要的。许多包含计算机的产品会检查其可执行程序上的签名,以阻止用户有效地使用不同的可执行文件;只有一家享有特权的的公司才能制作可以在设备中运行并使用其全部功能的可执行文件。我们称这些设备为“暴君”,并且在产品 (Tivo) 中首次看到它后,我们将这种做法称为“tivoization”。即使可执行文件是由自由源代码制成的,并且名义上带有自由许可证,用户也无法有效地运行其修改版本,因此可执行文件实际上是非自由的。
许多 Android 产品包含 Linux 的非自由的 tivoized 可执行文件,即使它的源代码在 GNU GPL 版本 2 下。(我们设计了 GNU GPL 版本 3 来禁止这种做法;可惜 Linux 没有采用它。)这些可执行文件,由开源和自由的源代码制成,通常被称为“开源”,但它们不是自由软件。
对“自由软件”和“开源”的常见误解
“自由软件”一词容易被误解:一个无意的含义“你可以零价格获得的软件”与它的预期含义“赋予用户某些自由的软件”同样适用。我们通过发布自由软件的定义并说“想想‘言论自由’,而不是‘免费啤酒’”来解决这个问题。这不是一个完美的解决方案;它不能完全消除问题。如果它没有其他问题,一个明确且正确的术语会更好。
不幸的是,所有英语的替代方案都有自身的问题。我们已经研究了人们提出的许多建议,但没有一个如此明确地“正确”,以至于切换到它会是一个好主意。(例如,在某些情况下,法语和西班牙语单词“libre”效果很好,但印度人根本不认识它。)每一个提议的“自由软件”的替代品都有某种语义问题——这包括“开源软件”。
开源软件的官方定义(由开源促进组织发布,内容太长,无法在此处包含)间接地源于我们自由软件的标准。它并不相同;在某些方面它稍微宽松一些。尽管如此,它们的定义在大多数情况下与我们的定义一致。
然而,“开源软件”这个表达的明显含义是“你可以查看源代码”。事实上,大多数人似乎都这样误解了“开源软件”。(表示这个含义的明确术语是“源代码可用”。)这个标准比自由软件的定义弱得多,也比开源的官方定义弱得多。它包括许多既不是自由的也不是开源的程序。
为什么人们会这样误解它?因为这是“开源”这个词的自然含义。但是,开源倡导者寻求另一个名称的概念是自由软件的一个变体。
由于“开源”的字面意思与其倡导者所希望表达的含义不同,导致大多数人误解了这个术语。作家尼尔·斯蒂芬森 (Neal Stephenson) 认为,“Linux 是‘开源’软件,简单来说,这意味着任何人都可以获得其源代码文件。” 我认为他并非有意拒绝或反驳官方定义。我认为他只是运用了英语的惯例来得出这个术语的含义。 堪萨斯州政府 发布了类似的定义:“使用开源软件 (OSS)。 OSS 是源代码可以自由公开获取的软件,但具体的许可协议对于如何使用该代码有所不同。”
《纽约时报》刊登了一篇文章,该文章延伸了该术语的含义,将其指代为用户 Beta 测试——让少数用户试用早期版本并提供保密反馈——这是专有软件开发商数十年来一直在实践的做法。
这个术语甚至被延伸到包括那些未申请专利而发布的设备设计。无专利的设备设计可能对社会做出值得称赞的贡献,但“源代码”一词并不适用于它们。
开源支持者试图通过指出其官方定义来解决这个问题,但这种纠正方法对他们来说不如对我们有效。“自由软件”一词有两个自然的含义,其中一个是预期含义,因此理解了“言论自由,而不是免费啤酒”的人不会再犯错。但是,“开源”一词只有一个自然的含义,这与支持者希望表达的含义不同。因此,没有简洁的方式来解释和证明其官方定义的合理性。这会造成更严重的混乱。
另一个对“开源”的误解是认为它意味着“不使用 GNU GPL”。这往往伴随着另一个误解,即“自由软件”意味着“GPL 覆盖的软件”。这两种理解都是错误的,因为 GNU GPL 符合开源许可的资格,而且大多数开源许可都符合自由软件许可的资格。除了 GNU GPL 之外,还有许多自由软件许可证。
“开源”一词的应用范围已经进一步扩展到其他活动,例如政府、教育和科学,这些活动中不存在源代码,而且软件许可标准根本不相关。这些活动唯一共同之处是,它们以某种方式邀请人们参与。它们对这个术语的延伸非常远,以至于它只意味着“参与性”或“透明”,甚至更少。最糟糕的是,它已经变成了一个空洞的时髦词。
不同的价值观可以得出相似的结论——但并非总是如此
20世纪60年代的激进团体以派系斗争而闻名:一些组织因为在策略细节上存在分歧而分裂,两个分裂出的团体尽管有着相似的基本目标和价值观,却视对方为敌人。右翼对此大加利用,并以此来批评整个左翼。
有些人试图通过将我们与开源的分歧与那些激进团体的分歧相提并论来贬低自由软件运动。他们的理解是错误的。我们在基本目标和价值观上与开源阵营存在分歧,但他们的观点和我们的观点在许多情况下会导致相同的实际行为——例如开发自由软件。
因此,自由软件运动和开源阵营的人们经常在软件开发等实际项目上合作。如此不同的哲学观点能够如此频繁地激励不同的人参与相同的项目,这令人瞩目。尽管如此,在某些情况下,这些根本不同的观点会导致截然不同的行动。
开源的理念是,允许用户更改和重新分发软件将使其更强大、更可靠。但这并不能保证。专有软件的开发人员不一定无能。有时,他们会开发出功能强大且可靠的程序,即使它不尊重用户的自由。自由软件活动家和开源爱好者对此的反应会非常不同。
一个纯粹的开源爱好者,一个完全不受自由软件理念影响的人会说,“我很惊讶你能够在不使用我们的开发模式的情况下让程序运行得如此出色,但你做到了。我如何获得一份副本?” 这种态度会奖励剥夺我们自由的计划,导致自由的丧失。
自由软件活动家会说,“你的程序很有吸引力,但我更重视我的自由。所以我拒绝你的程序。我会用其他方式完成我的工作,并支持一个开发自由替代品的项目。” 如果我们珍视自己的自由,我们可以采取行动来维护和捍卫它。
强大而可靠的软件可能是坏的
我们希望软件功能强大且可靠的想法来自软件旨在服务于用户的假设。如果它功能强大且可靠,那就意味着它能更好地服务于用户。
但是,只有当软件尊重用户的自由时,才能说它服务于用户。如果软件被设计用来给用户戴上枷锁呢?那么,强大意味着枷锁更具限制性,而可靠性意味着它们更难去除。恶意功能,例如监视用户、限制用户、后门和强制升级在专有软件中很常见,一些开源支持者希望在开源程序中实施它们。
在电影和唱片公司的压力下,供个人使用的软件越来越多地被专门设计用来限制他们。这种恶意功能被称为数字限制管理 (DRM)(参见 DefectiveByDesign.org),它在精神上与自由软件旨在提供的自由背道而驰。而且不仅仅是精神上的背离:由于 DRM 的目标是践踏你的自由,DRM 开发人员会试图让你难以、不可能甚至非法地更改实施 DRM 的软件。
然而,一些开源支持者已经提出了“开源 DRM”软件。他们的想法是,通过发布旨在限制你访问加密媒体的程序的源代码,并允许其他人更改它,他们将为限制像你这样的用户生成更强大、更可靠的软件。然后,该软件将交付到不允许你更改它的设备中。
该软件可能是开源的并使用开源开发模型,但它不会是自由软件,因为它不会尊重实际运行它的用户的自由。如果开源开发模式成功地使该软件在限制你方面更加强大和可靠,那将使其变得更糟。
对自由的恐惧
那些从自由软件运动中分裂出开源阵营的人最初的主要动机是自由软件的道德理念让一些人感到不安。这是真的:提出诸如自由之类的道德问题,谈论责任和便利性,是要求人们思考他们可能更愿意忽略的事情,例如他们的行为是否符合道德。这可能会引发不适,有些人可能会直接关闭自己的思想。但这并不意味着我们应该停止谈论这些问题。
然而,这正是开源领导者决定要做的事情。他们认为,通过对道德和自由保持沉默,只谈论某些自由软件的直接实际好处,他们可能能够更有效地向某些用户(尤其是企业)“推销”该软件。
当开源支持者谈论任何比这更深层次的东西时,通常是将源代码“赠送”给人类的想法。将此视为一种特别的善举,超越了道德上的要求,就假定分发不带源代码的专有软件在道德上是合法的。
从其自身的角度来看,这种方法已被证明是有效的。开源的言辞说服了许多企业和个人使用甚至开发自由软件,这扩大了我们的社区——但仅限于表面、实际的层面。开源的哲学及其纯粹的实用价值观阻碍了对自由软件更深层次理念的理解;它吸引了很多人加入我们的社区,但没有教他们如何捍卫它。这很好,但还不足以确保自由的安全。吸引用户使用自由软件只是让他们迈向捍卫自身自由的道路的一部分。
迟早,这些用户会被邀请出于某些实际利益而切换回专有软件。无数的公司都在试图提供这种诱惑,甚至有些公司还免费提供副本。为什么用户会拒绝?只有当他们学会了珍视自由软件赋予他们的自由,珍视自由本身,而不是特定自由软件的技术和实际便利时,他们才会拒绝。为了传播这种理念,我们必须谈论自由。对商业采取一定程度的“保持沉默”的方法可能对社区有用,但如果它变得如此普遍,以至于对自由的热爱似乎变成了一种怪癖,那就很危险了。
我们目前的处境正是如此危险。大多数参与自由软件的人,尤其是其分发者,很少谈论自由——通常是因为他们希望“更容易被企业接受”。几乎所有的 GNU/Linux 操作系统发行版都会在基本的自由系统中添加专有软件包,并且他们会邀请用户将此视为一种优势,而不是缺陷。
专有附加软件和部分非自由的 GNU/Linux 发行版找到了肥沃的土壤,因为我们社区中的大多数人不坚持软件的自由。这并非巧合。大多数 GNU/Linux 用户都是通过“开源”讨论了解到该系统的,而“开源”讨论并没有说明自由是一个目标。不维护自由的做法和不谈论自由的言辞是携手并进的,彼此促进。为了克服这种趋势,我们需要更多地谈论自由,而不是更少。
“FLOSS”和“FOSS”
术语“FLOSS”和“FOSS”用于在自由软件和开源之间保持中立。如果你的目标是中立,“FLOSS”是两者中更好的一个,因为它确实是中立的。但是,如果你想捍卫自由,使用中性术语不是正确的方法。捍卫自由需要向人们展示你对自由的支持。
争夺思维份额的竞争对手
“自由”和“开放”都在争夺人们的注意力。“自由软件”和“开源”是不同的理念,但在大多数人看待软件的方式中,它们在概念上竞争着同一个位置。当人们习惯于说和思考“开源”时,这会成为他们理解自由软件运动的哲学并进行思考的障碍。如果他们已经将我们和我们的软件与“开放”这个词联系起来,我们可能需要从思想上震撼他们,才能让他们认识到我们代表的是其他的东西。任何推广“开放”这个词的活动都倾向于拉开帷幕,隐藏自由软件运动的思想。
因此,自由软件行动者最好拒绝参与自称“开放”的活动。即使活动本身是好的,你的每一次贡献都会在一定程度上通过推广开源理念造成损害。还有许多其他优秀的活动自称为“自由”或“libre”。对这些项目的每一次贡献都会在一定程度上带来额外的好处。既然有这么多有用的项目可以选择,为什么不选择一个能带来额外好处的项目呢?
结论
当开源的倡导者将新用户带入我们的社区时,我们自由软件行动者必须肩负起让人们关注自由问题的任务。我们必须说,“它是自由软件,它赋予你自由!”——比以往任何时候都更频繁、更响亮。每次你说“自由软件”而不是“开源”,你都在帮助我们的事业。
备注
- 乔·巴尔(Joe Barr)写了一篇名为许可证的生存之道的文章,其中阐述了他对此问题的看法。
- 拉卡尼(Lakhani)和沃尔夫(Wolf)的关于自由软件开发者动机的论文指出,相当一部分人受到“软件应该自由”的观点所驱动。尽管他们是在SourceForge上调查开发者的,而该网站并不支持这是一个道德问题的观点。