为什么“自由软件”比“开源”更好

本文已被一篇主要的重写文章“开源”错失了自由软件的重点所取代,该文章更好。我们保留此版本是为了历史原因。


虽然用任何其他名称的自由软件都会给你同样的自由,但我们使用哪个名称有很大的不同:不同的词语传达不同的概念

1998 年,自由软件社区中的一些人开始使用“开源软件”一词,而不是“自由软件”来描述他们所做的事情。“开源”一词很快就与不同的方法、不同的理念、不同的价值观,甚至不同的可接受许可证标准联系在一起。自由软件运动和开源运动今天已成为独立的运动,具有不同的观点和目标,尽管我们可以在一些实际项目上合作。

这两个运动之间的根本区别在于它们的价值观,以及它们看待世界的方式。对于开源运动来说,软件是否应该开源是一个实际问题,而不是一个道德问题。正如一个人所说,“开源是一种开发方法;自由软件是一场社会运动。”对于开源运动来说,非自由软件是一种次优解决方案。对于自由软件运动来说,非自由软件是一个社会问题,而自由软件是解决方案。

自由软件运动和开源运动之间的关系

自由软件运动和开源运动就像自由软件社区内的两个政治阵营。

20世纪60年代的激进团体因宗派主义而臭名昭著:组织因战略细节上的分歧而分裂,然后将彼此视为敌人。或者至少,这就是人们对他们的印象,无论这是否真实。

自由软件运动和开源运动之间的关系恰恰相反。我们在基本原则上存在分歧,但在实际建议上或多或少达成一致。因此,我们可以在许多具体项目上合作。我们不认为开源运动是敌人。敌人是专有软件

我们不反对开源运动,但我们不想与他们混为一谈。我们承认他们为我们的社区做出了贡献,但我们创建了这个社区,我们希望人们知道这一点。我们希望人们将我们的成就与我们的价值观和理念联系起来,而不是与他们的价值观和理念联系起来。我们希望被听到,而不是被一个持有不同观点的群体所掩盖。为了防止人们认为我们是他们的一部分,我们努力避免使用“开放”一词来描述自由软件,或者在谈论非自由软件时使用它的反义词“封闭”。

因此,当您谈论我们所做的工作和我们开发的软件(例如GNU/Linux操作系统)时,请提及自由软件运动。

比较这两个术语

本文的其余部分比较了“自由软件”和“开源”这两个术语。它说明了为什么“开源”一词不能解决任何问题,实际上还制造了一些问题。

歧义

“自由软件”一词存在歧义问题:一个意想不到的含义,“你可以免费获得的软件”与预期的含义“给予用户某些自由的软件”同样适用。我们通过发布一个更精确的自由软件定义来解决这个问题,但这并不是一个完美的解决方案;它不能完全消除这个问题。如果它没有其他问题,一个明确正确的术语会更好。

不幸的是,英语中的所有替代方案都有其自身的问题。我们已经研究了人们提出的许多替代方案,但没有一个明确的“正确”,以至于切换到它会是一个好主意。“自由软件”的每一个提议的替代方案都有类似的语义问题,或者更糟糕——这包括“开源软件”。

开源倡议组织发布的“开源软件”的官方定义与我们的自由软件定义非常接近;但是,它在某些方面稍微宽松一些,并且他们接受了一些我们认为对用户施加了不可接受的限制的许可证。然而,“开源软件”的明显含义是“你可以查看源代码”。这是一个比自由软件弱得多的标准;它包括自由软件,但也包括一些专有程序,包括Xv和Qt在其原始许可证下(在QPL之前)。

“开源”的明显含义不是其倡导者想要表达的含义。结果是大多数人误解了这些倡导者所倡导的内容。以下是作家尼尔·斯蒂芬森如何定义“开源”的

Linux是“开源”软件,简单地说,这意味着任何人都可以获取其源代码文件的副本。

我不认为他故意试图拒绝或反驳“官方”定义。我认为他只是应用英语的惯例来得出这个术语的含义。堪萨斯州发布了一个类似的定义

使用开源软件 (OSS)。OSS 是源代码可以自由公开获取的软件,但具体的许可协议因允许对该代码执行的操作而异。

当然,开源人士已经尝试通过发布该术语的精确定义来解决这个问题,就像我们对“自由软件”所做的那样。

但是对“自由软件”的解释很简单——一个理解了“言论自由,而不是免费啤酒”这一概念的人不会再犯错了。没有如此简洁的方式来解释“开源”的官方含义,并清楚地说明为什么自然定义是错误的。

对自由的恐惧

“开源软件”一词的主要论点是“自由软件”让一些人感到不安。这是真的:谈论自由、道德问题、责任以及便利性,是要求人们思考他们可能宁愿忽略的事情。这会引发不适,有些人可能会因此而拒绝这个想法。如果我们停止谈论这些事情,社会会变得更好,这并不是必然的结果。

多年前,自由软件开发人员注意到了这种不适反应,一些人开始探索一种避免它的方法。他们认为,通过对道德和自由保持沉默,只谈论某些自由软件的直接实际好处,他们或许能够更有效地将软件“销售”给某些用户,尤其是企业。“开源”一词被提出作为一种做更多这种事情的方式——一种“更容易被企业接受”的方式。开源运动的观点和价值观源于这个决定。

就其自身而言,这种方法已被证明是有效的。今天,许多人出于纯粹的实际原因而改用自由软件。这很好,就目前而言,但这并不是我们需要做的全部!吸引用户使用自由软件并不是全部工作,只是第一步。

迟早,这些用户会被邀请为了某些实际优势而切换回专有软件。无数公司试图提供这种诱惑,为什么用户会拒绝呢?只有当他们学会了为了自由软件本身的价值而重视自由,才会拒绝。传播这个想法取决于我们——为了做到这一点,我们必须谈论自由。对企业采取某种程度的“保持沉默”的态度对社区可能是有用的,但我们也必须大量谈论自由。

目前,我们有很多“保持沉默”,但没有足够的自由讨论。大多数与自由软件有关的人很少谈论自由——通常是因为他们试图“更容易被企业接受”。软件发行商尤其表现出这种模式。一些GNU/Linux操作系统发行版在基本的自由系统中添加了专有软件包,并且他们邀请用户将此视为一种优势,而不是自由的倒退。

我们未能跟上自由软件用户的涌入,未能像他们进入社区一样快地向人们传授关于自由和我们社区的知识。这就是为什么非自由软件(Qt在最初流行时就是这样)和部分非自由操作系统发行版会发现如此肥沃的土壤。现在停止使用“自由”一词将是一个错误;我们需要更多而不是更少地谈论自由。

如果那些使用“开源”一词的人能够吸引更多的用户加入我们的社区,这是一种贡献,但我们其他人将不得不更加努力地让这些用户注意到自由的问题。我们必须说,“这是自由软件,它给予你自由!”——比以往任何时候都更频繁、更大声地说。

商标会有帮助吗?

“开源软件”的倡导者试图将其注册为商标,声称这能防止滥用。但后来这项倡议被放弃了,因为该术语过于描述性,不符合商标的资格;因此,“开源”的法律地位与“自由软件”相同:使用它没有法律上的约束。我听说一些公司将一些软件包称为“开源”,即使它们不符合官方定义;我也亲身观察到了一些例子。

但是,使用一个注册商标的术语会有很大的不同吗?不一定。

公司也发布一些公告,给人一种程序是“开源软件”的印象,即使他们没有明确声明。例如,IBM有一则关于一个不符合官方定义的程序的公告,其中说道:

正如在开源社区中常见的那样,……技术的用户也能够与IBM合作……

这实际上并没有说该程序“开源”的,但许多读者没有注意到这个细节。(我应该指出,IBM 真诚地试图使这个程序成为自由软件,并且后来采用了一个新的许可证,这使得它成为自由软件和“开源”软件;但是,当那个公告发布时,该程序不符合任何一个的标准。)

以下是 Cygnus Solutions 公司如何宣传其一些专有软件产品,该公司最初是一家自由软件公司,后来(可以说)扩展到了专有软件:

Cygnus Solutions 是开源市场的领导者,并且刚刚向[GNU/]Linux市场推出了两款产品。

与IBM不同,Cygnus并没有试图使这些软件包成为自由软件,而且这些软件包也远远不符合标准。但是,Cygnus实际上并没有说这些是“开源软件”,他们只是利用这个术语给粗心的读者留下这种印象。

这些观察表明,商标并不能真正阻止“开源”一词带来的混淆。

对“开源”的误解(?)

开源定义非常明确,并且很明显,典型的非自由程序不符合标准。所以你可能会认为“开源公司”是指那些产品是自由软件(或接近自由软件)的公司,对吗?唉,许多公司正试图赋予它不同的含义。

在 1998 年 8 月的“开源开发者日”会议上,几位受邀的商业开发者表示,他们打算只将他们的一部分工作设为自由软件(或“开源”)。他们的业务重点是开发专有的附加组件(软件或手册),并将其出售给这些自由软件的用户。他们要求我们将其视为合法,并将其视为我们社区的一部分,因为其中一部分资金捐赠给了自由软件的开发。

实际上,这些公司试图为他们的专有软件产品获得“开源”的良好声誉——即使这些产品不是“开源软件”——因为它们与自由软件有一些关系,或者因为同一家公司也维护一些自由软件。(一位公司创始人非常明确地说,他们会在他们支持的自由软件包中放入尽可能少的工作量,只要社区能够容忍即可。)

多年来,许多公司为自由软件的开发做出了贡献。其中一些公司主要开发非自由软件,但这两项活动是分开的;因此,我们可以忽略他们的非自由产品,并在自由软件项目上与他们合作。然后,我们可以真诚地感谢他们对自由软件的贡献,而不用谈论他们做的其他事情。

我们不能对这些新公司这样做,因为他们不允许我们这样做。这些公司积极邀请公众将他们的所有活动混为一谈;他们希望我们像看待真正的贡献一样看待他们的非自由软件,尽管它不是。他们将自己标榜为“开源公司”,希望我们对他们产生温暖的好感,并且在应用它时能够头脑模糊。

如果使用“自由软件”一词来做这种操纵性做法,其危害不会减少。但是,公司似乎并没有以这种方式使用“自由软件”一词;也许它与理想主义的联系使其显得不合适。“开源”一词为这种情况打开了大门。

在 1998 年末的一个贸易展上,该展会专门针对通常被称为“Linux”的操作系统,主讲人是一位来自著名软件公司的管理人员。他之所以被邀请,可能是因为他的公司决定“支持”该系统。不幸的是,他们“支持”的形式是发布与该系统一起工作的非自由软件——换句话说,将我们的社区作为市场,而不是为它做出贡献。

他说,“我们不可能将我们的产品开源,但也许我们会使其成为‘内部’开源。如果我们允许我们的客户支持人员访问源代码,他们可以为客户修复错误,并且我们可以提供更好的产品和更好的服务。”(这不是确切的引述,因为我没有记下他的话,但它抓住了要点。)

之后,观众席上的人们告诉我,“他只是不明白重点。”但真是这样吗?他没有明白哪个重点?

他并没有错过开源运动的重点。该运动并没有说用户应该拥有自由,只是说允许更多的人查看源代码并帮助改进它会使开发更快更好。这位管理人员完全理解了这一点;他不愿意在用户也包含在内的情况下完全执行该方法,他正在考虑在公司内部部分实施它。

他错过的重点是“开源”旨在不提出的重点:用户应该拥有自由的重点。

传播自由的理念是一项艰巨的工作——它需要你的帮助。这就是为什么我们在 GNU 项目中坚持使用“自由软件”一词,以便我们能够帮助完成这项工作。如果您认为自由和社区本身很重要——不仅仅是为了它们带来的便利——请加入我们,使用“自由软件”一词。

注释

  • Joe Barr 写了一篇名为活下去并授权的文章,其中给出了他对这个问题的看法。
  • Lakhani 和 Wolf 的关于自由软件开发者动机的论文表示,相当一部分人是出于软件应该免费的观点而受到激励的。尽管他们是在 SourceForge 上对开发者进行调查的,这是一个不支持此观点为道德问题的网站。