为什么“自由软件”好于“开源”
本文已经被其主要重写版替代,“开源”错失了自由软件的重点,重写版要好得多。为了历史原因,我们还把它放在这里。
虽然自由软件不以自由命名,也能给你同样的自由,但是使用其他的名字会造成重大的不同:不同的词汇传达不同的理念。
1998年,自由软件社区有些人开始使用“开源软件”来替代“自由软件”来描述他们的所作所为。“开源”一词迅速关联到不同的方法、不同的哲学、不同的价值,甚至是接受何种许可证的不同标准。现在,自由软件运动与开源运动,已经是各自独立的运动,它们有不同的观点和目标,虽然两者还能一起从事实际的项目。
两个运动的根本差别在于它们的价值、它们看待世界的方法。就开源运动而言,软件是否应该开源是一个实际的问题,而不是道德诉求。正如有人指出,“开源是一种开发的方法;自由软件是一场社会运动。”对开源运动来说,非自由软件不是最佳答案。对自由软件运动来说,非自由软件是社会问题,而自由软件是正解。
自由软件运动和开源运动的关系
自由软件运动和开源运动就像自由软件社区里的两个政治阵营。
20世纪60年代激进团体形成的口碑就是派系主义:组织的割裂起因于对战略细节的分歧,而后异议阵营对峙若敌。或者至少可说,无论这个是否属实,人们的印象就是这样。
自由软件运动与开源运动的关系和上述印象正好相反。我们的基本原则不同,但对实际操作的建议大致相同。所以两者能够共同成就特定的项目。我们不认为开源运动是敌人。敌人是专属软件。
我们不反对开源运动,但是我们不想和他们混为一谈。我们感谢他们对自由软件社区有贡献,但是是我们创建的社区,而我们期望人们认识到这一点。我们期待人们把我们的价值与哲学和我们的成就联系起来,而不是联想到开源的观念。我们要人们听到我们的声音,而不是被遮蔽在持有不同观点的另一群人背后。为了防止被视为是他们的一部分,我们忍痛避用“开放的”这个词汇来描述自由软件,也不使用“封闭的”这个字眼来称呼非自由软件。
因此,当您谈论我们的作为,以及谈论我们的软件—比如GNU/Linux操作系统时,请说自由软件运动。
两种措辞的比较
本文以下部分比较“自由软件”和“开源”两种措辞。这会告诉您为何“开源”一词没有解决任何问题,反而制造了麻烦。
歧义
“free software”一词带有歧义,它有一个不是我们期望的解释:“免费可得的软件”。而我们的定义是:“给予使用者自由的软件”。两个解释都刚好符合这个名字。我们发布说明更准确的自由软件定义来澄清这个问题,但这不是一个完美的解决方案;它不能全然消除这个问题。如果能找到没有歧义、也不引起其他问题的措辞当然是比较好的。
不幸的是,所有可用的替代英文措辞都有各自的问题。我们尝试各方人士建议的措辞,也没有找到一个明显“正确”的好替代。每个替代“free software”的提案都有类似的语义问题,甚至更差—其中包括“opensource software(开源)”
由开源促进会发布的“开源软件”的官方定义和我们对自由软件的定义非常接近;不过,它某些方面稍显松散,而且它接受的某些许可证给用户带来限制是我们不能接受的。然而,“开源软件”这一表达的字面意义是“你可以查看源代码。”这个标准比自由软件弱太多;它包含自由软件,但是也包含一些专属程序,比如Xv和按照原始许可证发布的Qt(在QPL1之前的许可证)。
“开源”的字面意思已经不是倡议者原来的诉求。其结果是大多人误解了其倡导者倡导的本意。来看看作家Neal Stephenson如何定义“开源”:
Linux是“开源”软件意味着,简单说,任何人都可以获得其源代码文件的拷贝。
我认为Neal Stephenson并非故意拒绝或争论开源的“官方”定义。我想他只是单纯地从英语文字出发,顾名思义。堪萨斯州政府也发布类似的认知:
请使用开源软件(OSS)。开源软件的源代码免费且公开,尽管其对人们对其源代码可以做什么不可以做什么的许可证有多种变化。
当然,正如我们对“自由软件”做的一样,开源人士也曾努力通过发布该词语的精确定义来解决问题。
然而“free software”的解释是简单的—人们只要能理解“言论自由,而非免费啤酒”,就能够不再错解自由软件中“free”的意味。而“开源”却没有一个方法能够这般简洁地涵盖其正式定义并明确指出为什么其字面意义是错误的。
对自由的恐惧
“开源软件”的主要论点是“自由软件”会使一些人感到不安。那是真的:谈论有关自由的话题、谈论道德伦理的议题、谈论公众义务以及个人利益,就是在促使人们思考他们宁愿忽视的一些事。这会引发情感的不悦、以及某些人士的抵制。这并不意味着如果人们不关心这些事、社会就会变得更好。
几年前,自由软件的开发者们注意到这种不悦的反应,有人开始探究一个能免除困局的方法。他们意识到,如果对道德与自由的理念保持沉默,只讨论能够立即带来实质利益的自由软件,他们或许能更有效率地“销售”这些软件给客户,特别是企业界的客户。“开源”一词就是用来更多地朝这个方向努力—一个“让企业界更接受”的方式。开源运动的视野与价值就是根植在这个决定之上。
用他们自己的话来说,这种方法已被证实有效。今天有许多人就为纯粹实际的理由而转到自由软件。这样下去也很好,但我们谋求的并不到此为止!吸引人们接纳自由软件并不是整个工程,它只是第一步。
这些用户迟早会因为实用的优势而再转回到专属软件。为数庞大的软件公司正在提供此类利诱,用户为什么要拒绝呢?除非他们懂得去衡量自由的价值,这些自由是自由软件自身就带有的。这种理念有赖于我们的传播—为了实践它,我们必须谈论自由。有一些人用“沉默”的方法做生意对社区可能有益,但我们还必须得有足够多的谈论自由的声音。
现在,我们有太多的“沉默”,而对自由的讨论却不够。大多数参与自由软件者很少谈论自由—通常是因为他们要寻求“让企业界更接受”。软件销售业者尤其倾向这种姿态。有些GNU/Linux操作系统的发行版将专属软件添加到自由系统之中,他们鼓励用户将之视为优势,而不是告诉他们这是在背离自由。
人数增长太快,我们没能应对好自由软件用户的涌入,没能教育好人们自由和我们社区的价值。这就是为什么非自由软件(比如最初开始流行的Qt),特别是非自由的操作系统发行版能在这片土地繁荣的原因。现在我们放弃使用“自由”一词会是一个错误;我们需要更多、而不是更少的关于自由的探讨。
如果“开源”一词吸引更多的用户加入我们的社区,那当然是贡献,但我们因此可能得更费力才有办法让他们把自由听入耳中。我们必须说,“这是自由软件,它给你自由!”—比以往更多、更大声地说。
商标会有帮助吗?
“开源软件”的倡议者想要让该理念转化为商标,认为那能避免该字眼遭到滥用。后来放弃初衷,因为它是个描述,不是个名称,难以通过商标的认证规则;结果,在法律上“开源”与“自由软件”一样:其使用不受法定拘束。我听说许多软件商的产品即使不符开源的正式定义,仍然以“开源”之名冠称之;我也亲见几个实例。
将寻常使用的措辞转变成商标能改变事态吗?不尽然。
厂商也曾发布意义不明确的公开声明,以便使人们对其产品萌生“开源”的印象。例如IBM对它的一个不符开源官方定义的产品如此声称:
一如开源社群......科技产品的使用者也能参与IBM的合作......
此声明并未明确说该程序是“开源”程序;但是许多读者却不会注意此细节。(我必须告知读者,后来IBM真诚地试着让它变成自由软件,并引入一个新许可证使它变成自由软件和“开源”;只不过,上述的声明发表之初,它哪个都不是。)
其次的案例是,Cygnus Solutions如何从原来要成为一家自由软件公司,而结果变成专属软件公司的分支,它为专属软件作如此宣传:
Cygnus Solutions在开源市场居领导地位,并将两项产品投入[GNU/]Linux的市场。
与IBM不同的是,Cygnus Solutions没想要让它的商品变成自由软件,其性质也不倾向自由软件。但是Cygnus Solutions并未确称之为“开源软件”,他们使用该措辞只是要混淆视听。
上面两例表明了商标并不能真正杜绝由“开源”一词引起的混淆。
对“开源”的误解(?)
其实,开放源码的定义够清楚了,够清楚让人看出典型非自由软件不符开源的精神。那么你是不是认为“开放源码公司”的产品,当然就是(或很接近是)自由软件?唉,许多公司却想赋予它不同的意思。
1998年8月,在开放源码开发者日会议上,几个受邀的商业软件商表示他们只愿意让一部分产品变成自由软件(或“开源”)。他们的事业重心仍在开发其他的专属附加组件(软件或手册),以销售给他们的自由软件客户。他们希望我们认同此举的正当性,因为部分获利会赞助自由软件的开发。
实质上,他们想要为他们的专属软件赢得“开源”的名声—即使这些产品不是“开源软件”—只因为他们与自由软件有点渊源、或者这些公司也在维护一些自由软件。(某家公司的创始人相当直白地说,他们只会尽量少地为他们所支持的自由软件付出,除非社区无法忍受这种行为。)
多年以来,许多公司为自由软件的开发做出贡献。其中有些公司主要是开发非自由软件,但是两边的工作是独立的;所以,我们可以忽略其非自由的产品,而与他们合作发展自由软件项目。而后我们真诚地感谢他们对自由软件的贡献,并不必谈起他们的非自由软件事业。
我们却没法子与前述的新公司采行同样合作方式,事实上是他们不允准。这些公司主动邀请公众来把各种工作混在一起;他们想让我们承认他们那些非自由软件产品也是真正的贡献,虽然实际上它们不是。他们把自己打扮成“开源软件公司”,以为我们将因此升起好感而在这问题上打迷糊仗。
他们巧妙的文字游戏,如果拿来操弄“自由软件”也一样奏效。但是他们似乎不想取用“自由软件”这个措辞;或许是自由软件这个字眼不免令人联想起理想主义,反而变成商人不欲碰触的对象。正巧“开源”这个措辞,为他们打开了搬弄文字的大门。
1998年末的商展,专为通常被称为“Linux”的操作系统而举办。其精选的演讲嘉宾是来自某著名软件公司的高管。他可能是因为该公司决定“支持”此操作系统而受邀。不妙的是,他们的“支持”包括发布支持该系统的非自由软件—换句话说,他们想来自由社区开辟市场,而不是想要有所贡献。
他说了,“要我们的产品开源是不可能的啦,但我们或许可以同意“对内”开源。假使我们允许我们的客户支持部门访问源码,他们可以为客户修复问题,我们则可以提供更好的产品与服务。”(这不是原话,因为我没有当场笔记,但是这概括了大意。)
演说结束后,在座的某听众对我说“他根本没提到重点。”是吗?他还需要哪个重点?
他的谈话并没有错失开源运动的重点。开源运动并没有说用户应有自由,只是说让更多的人研究源码可以使软件开发得更快更好。这位高管完全领会到这个重点;只是他不愿全盘履行开源的精神,也不想考虑用户,只是想在公司内部部分履行开源精神。
他错失的重点是“开源”的初衷所要避免的:用户应得的自由。
散播自由权益的理念是艰巨的事业—它需要你的帮助。那也是我们坚持为GNU工程使用“自由软件”这一措辞的缘故,它有助于完成这个事业。如果你感到自由权益与社区本身的重要性—不只为图它带来的便利—请加入我们一起使用“自由软件”这个措辞。
注
- Joe Barr 曾写了一篇叫 Live and let license 的文章展示自己对此问题的观点。
- Lakhani和Wolf在关于自由软件开发者之动机的论文中说,相当一部分开发者的动机是认为软件应该是自由的。而这个结果还是基于他们的调查是针对在SourceForge上的开发者,而那是一个并不支持自由软件的道德观点的网站。