Jiyuna 软件的未来
作者:Richard Stallman2003 年 4 月 21 日在日本经济产业省经济产业研究所 (RIETI) 的主题演讲稿。
GNU 项目的 Richard Stallman 先生:我将谈论自由软件,首先是其伦理、社会和政治意义,其次是其经济后果。
自由软件是关于自由的问题。英语单词“free”并没有明确这一点,因为它有两个含义。幸运的是,在你们的语言中,你们有两个不同的词。因此,如果你说 jiyu na sofuto,很明显你不是在谈论价格,你是在谈论自由。因此,我敦促你们,在日语中谈论自由软件时,总是使用你们明确的词,而不是我们不明确的词。
拥有自由软件的原因很简单:为了生活在自由之中,特别是,为了自由地善待他人。非自由软件表明你是无助和分裂的。它表示你甚至无法知道程序的功能;你应该相信开发人员的话;而且他们通常不会告诉你它真正的功能。如果你不喜欢它,你也不能改变它。即使开发人员尽了最大努力使程序有用,也没有人是完美的。我可以编写一个程序,你可能会发现它对你想要的东西来说只有一半好用。也许我写它是为了略微不同的目的,而不是和你的目的相同。没有人可以预料一切。也许我以我认为最好的方式做了,但你有一个更好的主意。没有人可以始终做对一切。
使用非自由软件,你会陷入困境。你必须按它的原样接受它。你必须忍受它。最重要的是,使用非自由软件,你被禁止与他人分享。社会依赖于人与人之间的互相帮助。与那些在您需要帮助时会帮助你的邻居一起生活是有益的。当然,并非总是如此,没有人被迫帮助他人,但如果你和人们是朋友,他们通常会帮助你。因此,当然,如果我们希望他们帮助我们,我们最好帮助他人。
那么,当有人说你被禁止帮助他人时,那是什么感觉?这里有有用的知识,你可以通过分享它来帮助你的邻居,但你被禁止与他人分享。这正在攻击社会的纽带,将社会分解为无法互相帮助的孤立个体。
自由软件与之形成对比。自由软件意味着你拥有四个基本自由。自由零是出于任何目的,以任何你想要的方式运行程序的自由。自由一是通过研究源代码来查看程序的功能,然后对其进行更改以满足你的需求的自由。自由二是将副本分发给他人来帮助你的邻居的自由。自由三是通过发布改进版本来帮助建设你的社区的自由,这样其他人可以使用你的版本,这样其他人就可以从你的帮助中受益。有了这些自由,用户就可以控制他们使用的软件。如果缺乏这些自由,那么[软件]所有者将控制软件并控制用户。
我们都知道,计算机实际上不会自己做决定。它们会按照人们告诉它们的方式去做。但是,是哪些人告诉它们做什么的?当您使用计算机时,是您可以告诉它做什么,还是其他人告诉它做什么?谁控制您的计算机?这是自由软件的问题。自由软件定义中的自由,自由零、一、二和三,之所以这些是重要的自由,是因为这些是公民控制自己计算机所必需的自由。您需要自由零才能使用计算机完成您想要的任何工作。你需要自由一,这样你才能让软件做你想让它做的事情。如果您没有自由一,您就陷入了困境;你是软件的囚徒。
但并非每个人都是程序员。如果我们只有自由一,那么程序员可以更改软件来做他们想做的事情。但是,如果每个程序员都必须亲自进行更改,那么我们实际上不会拥有太多控制权。我们将受到我们每个人单独可以做的事情的限制。非程序员将根本无法获得任何好处。这就是为什么自由三和二至关重要的原因,因为自由二和三允许一组用户协同工作并使软件做他们共同想要的事情。因此,您不仅限于单独亲自更改它。你和其他 50 个想要同样东西的人,你们可以聚在一起。如果你们中有两三个人是程序员,他们可以进行更改,然后他们可以将它分发给你们所有人。你们可以一起出钱,付钱给程序员来完成你们想要的更改。您的公司可以付钱给程序员来完成您的公司想要的更改。然后,如果您发布改进的版本,每个人都可以使用它。因此,整个社会都可以控制其软件的功能。
自由软件是一种方法,一种民主的方法,用于决定软件的开发。但它是以一种不寻常的方式民主的,因为我们不会举行选举,然后告诉每个人该做什么。在自由软件社区中,没有人告诉人们该做什么;每个人都自己做决定。但是发生的事情是这样的:如果很多人希望软件朝那个方向改进,很多人会致力于更改它,因此软件会朝那个方向快速发展。如果少数人希望软件朝那个方向发展,他们中的少数人会付出努力,因此它会朝那个方向缓慢发展。如果没人希望它朝那个方向发展,它就不会。通过我们每个人决定我们要做什么,我们都为发生的事情以及决定软件将朝哪个方向发展做出贡献。
因此,社会集体可以控制软件的整体开发方式。但是,您个人,或任何团体或公司都可以决定如何自己开发它。结果是,自由软件倾向于做用户想要的事情,而不是开发人员想要的事情。
人们经常问,“如果每个人都可以自由地更改软件,这对兼容性有什么影响?”事实是,用户喜欢兼容性。这不是他们唯一喜欢的。有时,某些用户想要不兼容的更改,因为它有其他好处,如果是这样,他们可以这样做。但是大多数用户都想要兼容性。结果是,大多数自由软件开发人员都非常努力地做到兼容。猜猜如果我在我的程序中做了一个不兼容的改动,而用户不喜欢它会发生什么。一些用户会更改程序并使其兼容,然后大多数用户会更喜欢他的版本。因此,他的版本会变得流行,而我的版本会被遗忘。现在,我当然不想发生这种情况。我希望人们喜欢并使用我的版本,所以我将提前认识到这一点,并且我将从一开始就使我的版本兼容,因为我希望人们喜欢它。因此,在我们的社区中,开发人员无法抗拒用户想要的东西。我们必须顺应潮流,否则用户会去他们想去的地方,把我们抛在后面。
但是,如果你看看非自由软件开发人员,那些非常强大的开发人员,他们可以强加不兼容性,而且他们是如此强大,以至于用户无能为力。微软在这方面是出了名的。他们在协议中进行了不兼容的更改,然后用户就束手无策了。但这不仅仅是微软。以 WAP 为例。WAP 包含普通互联网协议的修改版本,修改为不兼容,其想法是他们会制造这些电话,并且他们会说“它们可以在互联网上通话”,但由于它们没有使用普通的互联网协议,不兼容性将被强加给用户。那是他们的计划。幸运的是,它没有奏效。但是,当用户没有真正的控制权时,您将面临这种危险:有人会试图将不兼容性强加给用户。
自由软件首先是一个政治、伦理和社会问题。我已经解释了它的层面。它也有经济后果。例如,非自由软件可以用来创建非常富有的公司,在这些公司中,少数人从世界各地的每个人那里收取金钱,而这少数人变得非常富有,而其他人则被剥夺了。有许多国家(我猜日本不是其中之一),那些买得起计算机的人通常买不起非自由软件,买不起使用非自由软件的许可。因此,在这些国家,非自由软件作为一个系统会造成巨大的匮乏。但是在任何国家,金钱都会从大多数人身上被榨取,并集中到少数通过非自由软件而变得非常富有的人手中。使用自由软件,你不能那样做。你不能从人们身上榨取大量金钱,但是只要你为他们提供真正的服务,你就可以与人们做生意。
自由软件商业模式早已存在。事实上,我在 1985 年就开始了一项自由软件业务。我当时在销售 GNU Emacs 的拷贝。我一直在寻找通过自由软件赚钱的方法。于是我说,“付我 150 美元,我就给你寄一份包含 GNU Emacs 文本编辑器的磁带。”人们开始付钱给我,我给他们寄磁带。我赚到了足够维持生活的钱。我之所以停止这项业务,是因为我创立了自由软件基金会,而且似乎由自由软件基金会开始发行 GNU Emacs 更为合适。我不想与自由软件基金会竞争,所以我必须找到另一种方法。在最初的几年里,基金会通过这种方式赚到了足够的钱来支付包括程序员在内的几名雇员的工资。所以实际上,如果我自己做,我可能通过销售自由软件拷贝就能过上舒适富足的生活。
在那之后,我开始了另一项自由软件业务,我按委托进行修改。
对于非自由软件,你无法更改它。你成了软件的囚徒。所以你要么完全按照它的方式使用它,要么就完全不用。对于自由软件,你有这两种选择,但你还有另一种选择,实际上是很多不同的选择。你可以对程序进行或大或小的更改,并使用修改后的程序。
现在,如果你自己是程序员,你可以自己进行更改。但假设你不是程序员。那么,你可以付钱请程序员为你进行更改。例如,如果这个部门正在使用一个程序,而人们认为这个程序的工作方式不是我们真正想要的,你可以很容易地花一些钱请程序员修改它,让它按照你想要的方式工作。这就是我在 20 世纪 80 年代做了几年的自由软件业务。(我本可以继续做下去,但我获得了一项大奖,所以我不用再做了。)
现在,有很多人通过这种方式谋生。我最近从南美洲的一个人那里听说,他认识那里有 30 个人通过这种方式谋生。南美洲不是世界上技术最先进的地区之一,但这种情况已经在那里开始了。我相信,在 1989 年或 1990 年,一家公司开始从事这种业务,这家公司由三个人创立。几年后,它发展到了 50 人,而且每年都盈利。他们本可以继续做下去,但他们变得贪婪,于是他们开始开发非自由软件,后来他们被 Red Hat 收购了。
无论如何,自由软件业务是一种新的商业模式,在专有软件世界中不存在。因此,人们经常想知道自由软件会对就业产生什么影响。假设每个计算机用户都拥有自由。因此,假设所有软件都是自由软件。换句话说,如果你有程序,你就有运行、研究、更改和重新分发它的自由。这会对信息技术领域的就业产生什么影响?
嗯,在这个领域的所有就业中,一小部分是编程;而大多数编程都是定制软件,即为一位客户编写的软件。这完全没问题;只要客户获得源代码,并且一旦他为此付费,就获得完全控制软件的权利,那么这就是合法的。事实上,对于拥有它的客户来说,它是自由软件。[因此,只有非客户特定的编程才是真正非自由的。]
因此,在这部分是编程的就业中,大部分是定制软件;用于发布的软件只占[信息技术行业就业]总额的一小部分中的一小部分。
那么,自由软件会做什么?它可能会消除这一小部分就业,但也可能不会。因为虽然通过限制用户来支付这些程序员费用的可能性会消失,但会出现一种新的可能性,即支持那些被雇佣来改进和扩展自由软件的程序员。那么,我们会失去更多工作还是获得更多工作?没人知道。这是无法预测的。我们所知道的是,信息技术领域就业的减少仅限于这一小部分中的一小部分,即为发布而进行的编程。其余的将继续保持现状。所以很明显,就业方面不存在问题。
关于人们有时提出的另一个问题:我们是否有可能开发出足够多的软件并使其成为自由软件?答案是显而易见的,因为我们已经在这样做了。问这个问题的人就像在问飞机真的能飞起来吗?好吧,我坐过飞机。可能你们所有人都坐过飞机。我认为它们可以飞起来。在当今的自由软件中,我们有数百人,甚至可能有数千人获得报酬来开发自由软件。但我们有超过 50 万的自由软件志愿者开发人员在兼职工作,并且没有获得报酬,也在开发大量的软件。
事实上,自由软件业务对于自由软件发挥其作用来说不是必要的。自由软件业务是非常可取的。我们能开发出越多将资金从用户输送到自由软件开发人员的机构,我们就能生产出更多的自由软件,我们就能更好地生产它。所以它当然是可取的,但它不是至关重要的。我们已经开发出了两个完整的操作系统、两个图形用户界面桌面和两个自由软件办公套件。
人们正在创造性地寻找资助自由软件的方法,正如你可能预料的那样,有些[方法]可行,有些则不可行。例如,去年夏天,有一个人们喜欢但不是自由软件的产品,叫做 Blender,该公司认为继续支持或销售它已经没有用了。他们停止了它。但开发人员不想让它停产,所以他们协商了一项协议:如果他们能筹集到 10 万美元,他们就可以购买版权并使其成为自由软件。因此,他们向社区求助,并在几周内筹集了这笔资金。Blender 现在是自由软件。这表明,也许我们可以通过同样的方式从社区筹集资金,以进行特定的扩展。
一位有能力和名声的程序员可以去社区说,“如果人们提供这么多资金,我就会完成这项工作。”他不必完全自己完成这项工作。他可以雇用其他程序员与他一起工作,这就是你开始的方式。在你出名之前,在你能够凭借自己的声誉去社区之前,你可以作为其他程序员的学徒工作。他们筹集资金,他们监督工作,但通过这样做,最终你也会建立起声誉,然后你可以去获得客户。
当然,政府在开发有用的软件方面也发挥着合理的作用,就像政府资助旨在为公民所用的科学研究一样,甚至是仅仅为了满足人类的好奇心,但当然是为了造福公民、造福公众。政府资助开发将对公众有用的软件也是同样合理的,然后在完成后,将其交给公众并说,“现在每个人都可以使用和改进它。这是人类的知识。”因为这才是自由软件的真正意义所在。它是人类的知识,是属于人类,属于所有人的知识。非自由程序是受限的知识,知识被少数人控制,其他人无法真正获得它。他们只能勉强地忍受使用它。他们永远无法拥有知识。
出于这个原因,学校必须使用自由软件。学校应该只使用自由软件有三个原因。最肤浅的原因是省钱。即使在发达国家,学校也永远没有足够的钱,因此学校的计算机使用受到阻碍。现在,如果学校使用自由软件,那么学校系统就有权复制并将它们重新分发到所有学校,而无需为使用软件支付许可费。因此,学校系统可以安装更多的计算机,提供更多的设施。此外,GNU 加 Linux 操作系统比 Windows 更高效,因此你可以使用更旧、功能更弱、更便宜的计算机型号。也许你可以使用别人丢弃的二手计算机。所以这是另一种省钱的方法。这很明显,但它很肤浅。
学校使用自由软件更重要的原因是出于学习的目的。你看,在青少年时期,一些学生会想要了解计算机系统内部的一切知识。这些人可以成为优秀的程序员。如果你想培养强大的编程能力,培养那些不仅愿意以一种相当机械的方式作为大型团队一部分工作的人,而且培养那些会主动采取行动、做大事、开发强大而令人兴奋的程序的人,那么你需要鼓励这种冲动,只要一个孩子有这种冲动。因此,提供鼓励这种学习发展的设施和社交环境非常重要。做到这一点的办法是学校应该运行自由软件,并且每当一个孩子开始好奇,“这实际上是如何工作的?”老师就可以说,“这是由 Fubar 程序完成的。你可以在那里找到 Fubar 程序的源代码。去阅读它并弄清楚,自己看看它是如何工作的。”然后如果一个孩子说,“你知道,我有一个让它变得更好的主意,”老师可以说,“为什么不试试看?尝试编写它。在 Fubar 程序中进行更改以改变这个功能。”
要成为一名优秀的作家,你必须大量阅读和写作。编写软件也是如此:你必须阅读大量的软件并编写大量的软件。要学会理解大型程序,你必须使用大型程序。但是如何入门呢?当你刚开始时,你无法自己编写一个大型程序,并且还做得很好,因为你还没有学会如何做。那么你将如何学习呢?答案是你必须阅读现有的大型程序,然后尝试对其进行小的更改。因为在那个阶段,你不能自己编写一个大型程序,但你可以在一个大型程序中编写一个小的改进。
我就是这样学会成为一名优秀的程序员的。我在麻省理工学院有一个特殊的机会。那里有一个实验室,他们编写了自己的操作系统,然后使用了它。我去了那里,他们说,“我们想雇用你。” 他们雇用我来改进这个操作系统中的程序。那是我大学二年级的时候。当时,我不可能自己编写一个操作系统。我不可能从零开始编写这些程序,但我可以阅读它们,并添加一个功能,然后再添加另一个功能,又一个功能,又一个功能。 每周我都会为某个程序添加另一个功能。通过多次这样做,我提高了自己的技能。在 20 世纪 70 年代,你获得这种机会的唯一方法是在一个非常特殊的地方。但是今天,我们可以将这个机会提供给每个人。你只需要一台运行 GNU/Linux 系统的 PC 和源代码,你就有这个机会了。因此,你可以很容易地鼓励那些对计算机着迷的日本青少年成为优秀的程序员。
我有一个朋友,他在 1980 年左右是一名高中教师,他在高中建立了第一台 Unix 机器。然后他指导高中生,使他们学会成为优秀的程序员。他们中的一些人在高中毕业时就已成为享有盛誉的优秀程序员。我相信任何高中都有一些具有这种天赋并希望发展它的人。他们只是需要机会。所以这就是学校应该完全使用自由软件的第二个原因。
第三个原因甚至更根本。我们希望学校教授事实和技能,当然,还有良好的道德品格,这意味着要准备好帮助他人。这意味着学校应该对孩子们说:“这里的任何软件,你都可以复制它。复制它并带回家。这就是它在这里的原因。如果你带任何软件到学校,你必须与其他孩子分享。如果你不愿意与其他孩子分享,就不要把它带到这里,它不属于这里,因为我们正在教孩子们互相帮助。” 道德品格的教育对每个社会都很重要。
我没有发明自由软件的想法。自由软件在有两台相同类型的计算机后就开始了,因为那时使用一台计算机的人会编写一些软件,而使用另一台计算机的人会说:“你知道有什么可以解决这个问题吗?” 然后他们会说,“是的。我们编写了一些东西来解决这个问题。这是副本。” 因此,他们开始交换他们开发的软件,以便他们都可以开发更多。但在 20 世纪 60 年代,有一种趋势是用非自由软件取代它,一种奴役用户、剥夺用户自由的趋势。
当我大学一年级时,我看到了一个给我留下深刻印象的道德榜样。我当时在使用一个计算机设施,在这个设施中,他们说:“这是一个教育机构,我们在这里是为了让人们学习计算机科学。因此,我们将制定一条规则:任何时候在系统上安装软件,都必须显示源代码,以便人们可以阅读它并了解该软件的工作原理。” 其中一名员工编写了一个实用程序,并开始将其作为非自由软件出售。他不仅仅像我那样出售副本;他还在限制用户。但他免费为学校提供了一个副本,而负责计算机设施的人员说:“不,我们不会在这里安装它,因为我们的规则是必须显示源代码。如果你不让我们显示此程序的源代码,我们就不会运行你的程序。” 这启发了我,因为它是一种为更重要的事情(即学校的使命:教育)而放弃实际便利的意愿。
我在麻省理工学院工作的实验室在 20 世纪 70 年代是一个例外,因为我们有一个自由软件的操作系统。当时大多数计算机都使用非自由操作系统。但我受到了我在那里看到的榜样的启发,我学会了以这种方式生活。我学会了将你的知识教给他人而不是将所有知识都留给自己的生活方式。然后在 20 世纪 80 年代初,这个社区消失了。那时,我开始了自由软件运动。我没有开始自由软件。我通过加入一个已经实践它的实验室而学会了自由软件的生活方式。我所做的是将其转变为一场道德和社会运动,说这是在美好社会和丑陋社会之间、在自由的、善良、乐于助人的生活方式和每个人都被各种征服他们的帝国束缚的生活方式之间做出选择的问题,在这种生活方式中,人们认为他们别无选择,只能放弃自由。
从理论上讲,一方面人们会说,“哦,没有人强迫你使用非自由软件。没有人强迫你使用 Microsoft Word。” 另一方面,你又会听到人们说,“我别无选择。” 所以实际上,这不是个人选择的问题。是的,如果你决心获得自由,决心拒绝它,你可以做到,但这需要很大的决心。当我们在 20 年前开始时,要在没有非自由软件的情况下使用计算机需要付出巨大的努力。1983 年现代计算机的所有操作系统都是专有的。你无法获得一台计算机并使用它,除非使用非自由软件。为了改变这一点,我们不得不花费数年的时间工作,而且我们确实做到了,我们改变了它。
对于今天的你来说,情况要容易得多。有自由操作系统。你可以获得一台现代计算机并使用自由软件,完全使用自由软件。所以现在,与其说是一种巨大的牺牲,不如说你只需要做出临时的、小的牺牲,然后你就可以生活在自由中。通过共同努力,我们可以消除这种牺牲。我们可以让生活在自由中变得更容易。但为此,我们必须努力。我们必须将自由视为一种社会价值。
每个政府都试图以低廉的成本完成工作,而且每个政府机构都有特定的工作要做。因此,当政府机构选择他们的计算机时,他们往往会考虑狭隘的、实际的问题:它要花多少钱,什么时候可以运行等等。
但是政府有一个更大的使命,那就是引导国家朝着健康的方向发展,这对公民有益。因此,当政府机构选择他们的计算机系统时,他们应该做出这样的选择,以便引导国家走向自由软件。这对国家的经济更好,因为用户不是仅仅为运行软件的许可付费,而是会付钱给当地人来改进它并使其适应他们的需求。因此,资金不会全部流向华盛顿州的雷德蒙德,而是会在该地区流通,在当地创造就业机会,而不是填满某个人的口袋。但更重要的是,它创造了一种生活方式,使国家和人民独立和自由。