Stallman:为什么软件应该是免费的

2020-08-10 19:00:39

软件的存在不可避免地提出了一个问题,即应该如何决定软件的使用。例如,假设一个拥有程序副本的人遇到了另一个想要复制的人。他们复制程序是可能的,由谁来决定是否这样做呢?涉案的个人呢?还是另一方,叫做“业主”?

软件开发人员通常在假设答案的标准是最大化开发人员利润的基础上考虑这些问题。商业的政治力量导致政府采纳了这一标准和开发商提出的答案:项目有一个所有者,通常是一个与其开发相关的公司。

我想用一个不同的标准来考虑同一问题:广大市民的繁荣和自由。

这个答案不能由现行法律来决定--法律应该符合伦理道德,而不是反过来。目前的实践也没有决定这个问题,尽管它可能会给出可能的答案。唯一的判断方法是通过识别软件的所有者、原因和金额来判断谁得到了帮助,谁不愿意。换句话说,我们应该代表整个社会进行成本效益分析,既要考虑个人自由,也要考虑物质产品的生产。

在这篇文章中,我将描述拥有所有者的影响,并说明其结果是有害的。我的结论是,程序员有责任鼓励他人共享、重新分发、研究和改进我们编写的软件:换句话说,编写“自由”软件。(1)。

那些从程序是财产的当前系统中受益的人提供了两个论点来支持他们对拥有程序的主张:情感论点和经济论点。

情感上的争论是这样的:“我把我的汗水、我的心、我的灵魂都投入到了这个节目中。是我送的,是我的!“。

这一论点不需要认真反驳。依恋感是程序员可以在适合自己的时候培养的一种感觉;它不是不可避免的。例如,想一想,同样的程序员通常是多么愿意将所有权利签给一家大公司,而情感依恋却神秘地消失了。相比之下,想想中世纪的伟大艺术家和工匠,他们甚至没有在自己的作品上签名。对他们来说,艺术家的名字并不重要。重要的是这项工作已经完成--以及它将服务的目的。这种观点盛行了几百年。

经济学观点是这样的:“我想致富(通常被错误地描述为‘谋生’),如果你不允许我通过编程致富,那么我就不会通过编程致富。其他人都和我一样,所以没人会编程。然后你就会被困在没有程序的地方了!“。这种威胁通常被掩盖为智者友好的建议。

我稍后会解释为什么这个威胁是虚张声势。首先,我想解决一个隐含的假设,这个假设在论证的另一种表述中更为明显。

这一表述首先比较了专有程序和无程序的社会效用,然后得出结论,专有软件开发总体上是有益的,应该鼓励。这里的谬误在于只比较了两种结果-专有软件和没有软件-并假设没有其他可能性。

给定软件版权制度,软件开发通常与控制软件使用的所有者的存在联系在一起。只要这种联系存在,我们就经常面临是选择专有软件还是不选择专有软件的问题。然而,这种联系并不是固有的或不可避免的;它是我们正在质疑的特定社会/法律政策决定的结果:拥有所有者的决定。要在专有软件和没有软件之间做出选择,这是个令人费解的问题。

手头的问题是,“软件的开发是否应该与所有者限制其使用挂钩?”

为了决定这一点,我们必须独立地判断这两种活动对社会的影响:开发软件的效果(与其分发条款无关)和限制其使用的效果(假设软件已经开发)。如果这些活动中有一项是有益的,另一项是有害的,我们最好放弃联系,只做有帮助的。

换句话说,如果限制已经开发的程序的分发对整个社会有害,那么道德软件开发人员就会拒绝这样做的选择。

为了确定限制共享的效果,我们需要将受限(即专有)程序与每个人都可以使用的同一程序的社会价值进行比较。这意味着要比较两个可能的世界。

这一分析还解决了有时提出的简单的反驳论点,即“给邻居一个节目的拷贝给他或她带来的好处被对所有者造成的伤害抵消了。”这个反驳论点假定伤害和好处是相等的。分析涉及到对这些幅度的比较,并表明收益要大得多。

用通行费为所有道路的建设提供资金是可能的。这将需要在所有街角设置收费站,这样的系统将极大地激励人们改善道路。它还有一个优点,那就是使任何给定道路的使用者在该道路上通行费。然而,收费站是对平稳驾驶的人为障碍-人为的,因为它不是道路或汽车工作方式的结果。

通过比较免费公路和收费公路的有用性,我们发现(在其他条件相同的情况下)没有收费站的道路建造成本更低,运行成本更低,安全和使用效率更高。(2)在一个贫穷的国家,通行费可能会使许多公民可以使用道路。没有收费站的道路以更低的成本为社会提供了更多的好处,它们对社会是可取的。因此,社会应该选择另一种方式来资助道路,而不是通过收费站的方式。道路的使用,一旦建成,就应该是免费的。

当收费站的倡导者提出收费站只是为了筹集资金而设立收费站时,他们扭曲了现有的选择。收费站确实筹集了资金,但它们也做了其他事情:实际上,它们降低了道路的质量。收费公路不如免费公路,给我们更多或技术上更好的公路未必是进步,这就是用收费公路代替免费公路。

当然,修建一条免费公路确实要花钱,公众必须以某种方式支付这笔钱。然而,这并不意味着收费站的存在是必然的。我们这些无论在哪种情况下都必须付费的人,通过购买一条免费的道路,我们的钱将获得更大的价值。

我并不是说收费公路总比没有公路差,如果收费太高,几乎没有人使用,情况便会是这样,但对收费员来说,这是不太可能的政策,不过,只要收费亭造成重大浪费和不便,集资最好是以较少阻碍的方式筹集。

为了将同样的论点应用于软件开发,我现在将展示,为有用的软件程序设置“收费站”会让社会付出高昂的代价:它使程序的构建成本更高、分发成本更高、满意度更低、使用效率更低。因此,应该从其他方面鼓励项目建设。然后,我将继续解释鼓励和(在实际需要的情况下)资助软件开发的其他方法。

考虑一下,一个程序已经开发出来,并且已经为它的开发支付了任何必要的费用;现在社会必须选择要么使它成为专有的,要么允许免费共享和使用。假设该程序的存在和可用性是可以接受的。(3)

对程序的分发和修改的限制不利于其使用。他们只能干预。所以效果只能是负面的。但是多少钱呢?那是哪一种呢?

每种程度的物质伤害都有一种相伴的精神社会伤害形式。这指的是人们的决定对他们随后的感觉、态度和倾向产生的影响。人们思维方式的这些变化将对他们与同胞的关系产生进一步的影响,并可能产生实质性的后果。

这三个级别的物质伤害浪费了该计划所能贡献的价值的一部分,但他们不能将其减少到零。如果他们浪费了几乎所有的程序价值,那么编写程序最多也就是为编写程序付出的努力对社会造成的伤害。一个有利可图的程序销售肯定会带来一些净直接的物质利益。

然而,考虑到随之而来的心理社会危害,专有软件开发可以造成的危害是无限的。

第一级危害阻碍了程序的简单使用。一个程序的拷贝几乎没有边际成本(你可以通过自己做工作来支付这个成本),所以在自由市场中,它几乎是零成本。许可费极大地抑制了人们使用该程序的积极性。如果一个广泛使用的程序是专有的,那么使用它的人就会少得多。

很容易证明,一个程序对社会的总贡献是通过分配一个所有者来减少的。本程序的每个潜在用户,在面临付费使用的需要时,可以选择付费,也可以放弃使用本程序。当用户选择支付时,这是双方之间的零和财富转移。但每次有人附和放弃使用该程序,这就伤害了那个人,而没有使任何人受益。负数和零的和必须是负的。

但这并没有减少开发该程序所需的工作量。结果,降低了整个过程的效率,即每小时工作未交付的用户满意度。

这反映了程序副本与汽车、椅子或三明治之间的重要区别。除了科幻小说之外,没有复印机可以复印物质对象。但是程序很容易复制;任何人都可以制作所需的任意数量的副本,只需很少的工作。对于物质对象则不是这样,因为物质是守恒的:每个新的副本都必须以与第一个副本相同的方式用原材料构建。

对于实物,抑制使用它们是有意义的,因为购买的物品越少,意味着制造它们所需的原材料和工作就越少。这是真的,通常也有启动成本,开发成本,这是分摊到生产运行。但是,只要生产的边际成本很大,增加一部分开发成本就不会产生质的不同。而且它不需要限制普通用户的自由。

然而,给原本免费的东西定价是一种质的变化。中央征收的软件分发费成为一种强有力的抑制因素。

更重要的是,现在实行的中心生产是低效的,即使作为交付软件副本的一种手段也是如此。这个系统包括将物理磁盘或磁带装在多余的包装中,将它们大量运往世界各地,并将它们储存起来以供出售。这一成本被表示为做生意的费用;事实上,它是拥有所有者造成的浪费的一部分。

假设您和您的邻居都会发现运行某个程序很有用。出于对邻居的伦理考虑,你应该觉得正确处理这种情况会让你们两个都能使用它。只允许你们中的一个人使用这个程序,而训练另一个人,这是分裂的;你和你的邻居都不应该认为它是可以接受的。

签署一份典型的软件许可协议意味着背叛你的邻居:“我承诺剥夺我邻居的这个程序,这样我就可以为自己复制一份。”做出这种选择的人会感受到内在的心理压力,通过降低帮助邻居的重要性来证明自己的选择是合理的,这样公共精神就会受到影响。这是与阻碍程序使用的物质危害相关的心理社会危害。

许多用户不知不觉地认识到拒绝分享的错误,所以他们决定无视许可证和法律,不管怎样地分享程序。但他们经常对这样做感到内疚。他们知道要想成为好邻居就必须违法,但他们仍然认为法律具有权威性,他们得出的结论是,做一个好邻居(他们确实是)是淘气的或可耻的。这也是一种心理社会伤害,但人们可以通过认定这些许可证和法律没有道德力量来逃避它。

知道许多用户不允许使用他们的作品,程序员也会受到心理社会伤害。这导致了一种愤世嫉俗或否认的态度。程序员可能会热情地描述他觉得在技术上令人兴奋的工作,然后当被问到“我可以使用它吗?”时,他的脸沉了下来,他承认答案是否定的。为了避免感到气馁,他要么在大部分时间里忽略了这一事实,要么采取了一种刻意淡化其重要性的愤世嫉俗的立场。

自里根时代以来,美国最缺乏的不是技术创新,而是为公共利益而共同努力的意愿。以牺牲后者为代价来鼓励前者是没有意义的。

物质危害的第二个层次是无法改编程序,软件易于修改是其相对于旧技术的一大优势。但是,大多数商业软件即使在你买了之后,也是可以修改的。它是一个黑匣子,你可以拿去也可以不拿,仅此而已。

您可以运行的程序由一系列含义模糊的数字组成。没有人,即使是一个优秀的程序员,也不能轻易地改变数字来使程序做一些不同的事情。

程序员通常使用程序的“源代码”,它是用Fortran ORC等编程语言编写的。它使用名称来指定正在使用的数据和程序的各个部分,并用‘+’表示加法符号,用‘-’符号表示减法运算。它旨在帮助程序员阅读和更改程序。下面是一个例子;一个计算平面上两点之间距离的程序:

浮点距离(P0,p1)结构点P0,p1;{Float xdist=p1.x-p0.x;Float ydist=p1.y-p0.y;return sqrt(xdist*xdist+ydist*ydist);}。

源代码的确切含义不是重点;关键是它看起来像代数,了解这种编程语言的人会发现它有意义且清晰。相比之下,下面是可执行形式的相同程序,在我编写以下代码时通常使用的计算机上:

1314258944-232267772-231844864 1634862 1411907592-231844736 2159150 1420296208-234880989-234879837-234879966-232295424 1644167167-3214848 1090581031 1962942495 572518958-803143692 1314803317。

源代码对程序的每个用户都是有用的(至少是潜在的)。但是大多数用户不允许拥有源码的副本。通常,专有程序的源代码由所有者保密,以免其他人从中学到什么。用户只接收计算机将执行的难以理解的数字文件。这意味着只有程序的所有者才能更改程序。

一位朋友曾经告诉我,他在一家银行当了大约六个月的程序员,写了一个类似于商业上可以买到的东西的程序。她相信,如果她能拿到那个商业程序的源代码,它很容易就能适应他们的需要。银行愿意为此买单,但不被允许--源代码是一个秘密。所以她不得不做6个月的临时工作,这些工作在国民生产总值中是有价值的,但实际上是浪费。

MIT人工智能实验室(AI Lab)大约在1977年从施乐(Xerox)收到了一台图形打印机作为赠品。它是由自由软件运行的,我们在其中添加了许多方便的功能。例如,该软件会在打印作业完成后立即通知用户。每当打印机出现故障,如卡纸或用纸不足时,软件都会立即通知所有打印作业已排好队的用户。这些特点使操作更加顺畅。

后来施乐为AI实验室提供了一台更新、速度更快的打印机,这是最早的激光打印机之一。它是由在单独的专用计算机上运行的专有软件驱动的,所以我们不能添加任何我们喜欢的功能。我们可以安排在打印作业发送到专用计算机时发送通知,但不能在作业实际打印时发送通知(而且延迟通常很大)。没有办法知道这份工作实际上是什么时候打印的,你只能猜测。而且卡纸的时候没有通知任何人,所以打印机经常一个小时不修。

人工智能实验室的系统程序员有能力解决这样的问题,可能和程序的原始作者一样有能力。施乐对解决这些问题不感兴趣,而选择阻止我们,所以我们被迫接受了这些问题。他们从来没有修好过。

大多数优秀的程序员都经历过这种挫折。银行可以通过从头开始编写一个新的程序来解决这个问题,但一个典型的用户,无论多么熟练,都只能放弃。

放弃会造成心理社会伤害--对自力更生精神的伤害。住在一所你不能根据你的需要安排的房子里是令人泄气的。它会导致听天由命和灰心丧气,这可能会蔓延到影响一个人生活的其他方面。有这种感觉的人是不快乐的,不会做好工作。

想象一下,如果食谱像软件一样被囤积在同样的时尚中,那会是什么样子。你可能会说,“我怎么改变这个食谱来去掉盐呢?”这位伟大的厨师会回答说,“你怎么敢试图篡改我的食谱,侮辱我的食谱,我大脑中的孩子,并试图篡改它?”你没有判断力来改变我的食谱,让它变得正确!“。

“但是我的医生说我不应该吃盐!我能做些什么呢?你能帮我把盐拿出来吗?“。

“我很乐意这么做,我的手续费只有5万美元。”由于店主垄断了变更,所以手续费往往很高。“不过,现在我没有时间。”我正忙着为海军部门设计一种新的船用饼干配方。我可能会在大约两年内抽出时间来找你。“

第三种物质伤害影响软件开发,软件开发过去是一个进化的过程,在这个过程中,一个人需要一个现有的程序,为了一个新的功能而重写它的一部分,然后另一个人会重写部分来添加另一个功能;在某些情况下,这种情况会持续20年之久。与此同时,该计划的部分内容将被“蚕食”,形成其他计划的开端。

所有者的存在阻止了这种演变,使得在开发程序时必须从头开始。它还帮助新的实践者从研究现有的程序到学习有用的技术,甚至学习如何构建大型程序。

业主也会阻碍教育。我遇到过聪明的计算机科学学生,他们从未见过大型程序的源代码。他们可能擅长写小程序,但如果他们能看看别人是怎么做的,他们就可以开始学习写大程序的不同技能。

在任何智力领域,站在别人的肩膀上都可以达到更高的高度。但在软件领域,这已不再是普遍允许的--你只能站在你自己公司里其他人的土地上。

相关的心理社会伤害影响了科学合作的精神,这种精神曾经如此强烈,以至于即使在他们的国家处于战争状态时,科学家们也会合作。本着这种精神,日本海洋学家放弃了他们的实验室。

.