English [en]   العربية [ar]   Deutsch [de]   español [es]   français [fr]   hrvatski [hr]   italiano [it]   日本語 [ja]   한국어 [ko]   lietuvių [lt]   Nederlands [nl]   polski [pl]   português do Brasil [pt-br]   română [ro]   русский [ru]   українська [uk]   简体中文 [zh-cn]  

会员给予自由软件基金会动力。请助力我们达成新增700会员的目标或者请在12月31日前捐款!

加入

$259,212
$450,000

这是针对英文原版页面的中文翻译。

服务器究竟为谁服务?

Richard Stallman

(本文第一版发表于波士顿评论。)

在网络上,专属软件不是唯一让你失去自由的途径。服务代替软件,或叫SaaSS,就是另一个让你把计算交给别人的途径。

基本的观点是,你可以控制其他人编写的程序(如果它是自由软件),但是你永远不能控制其他人执行的服务,所以原则上在程序能够完成任务的时候,不要使用服务。

SaaSS意味着使用他人实现的服务来代替运行你自己的软件。该术语是我们用的;其他文章和广告不会使用它,并且他们不会告诉你一项服务是否为SaaSS。另一方面,他们可能会用含糊和分散注意力的“云”这一术语,它把SaaSS和其他一些实践搞在一起,其中有的是滥用,有的还可以。通过本页的解释和举例,你就能够分辨一项服务究竟是不是SaaSS。

背景:专属软件如何拿走你的自由

数字技术能够给你自由;它也能拿走你的自由。第一个对我们自主控制计算的威胁来自专属软件因为其所有者(诸如苹果或微软之类的公司)掌控软件,所以用户无法控制该软件。其所有者经常利用这种不公平的权力植入恶意功能,比如间谍软件、后门和数字权限管理(DRM)(请参考他们宣传的“数字版权管理”)。

我们对此的解决方案是开发自由软件并拒绝专属软件。自由软件意味着,你,作为一个用户,拥有四项基本自由:(0) 按照自由的意愿运行该软件,(1) 通过学习和修改源代码而使软件按照自己的意愿运行,(2) 分发原来软件的拷贝,(3) 分发修改后软件的拷贝(请参看自由软件的定义。)

通过使用自由软件,我们作为用户,拿回了对我们计算的控制。专属软件仍然存在,但是我们能够把他们排除在我们的生活之外,我们已经做到了。可是,现在有另一种方式诱使我们割让对计算的控制:服务代替软件(SaaSS)。看在自由的份上,我们也必须拒绝它。

服务代替软件如何拿走我们的自由

服务代替软件(SaaSS)意思是使用服务代替运行程序。具体地,它的意思是有人设置一个网络服务器来从事某种计算工作—比如,修改照片、翻译文稿等等。—然后邀请用户使用该服务器做计算。使用服务器的用户会把她的数据发送到服务器,而服务器使用该数据帮她做计算,然后将结果发回给她或者直接以她的名义行事。

计算是她自己的因为,按照假定,原则上,她可以在自己的电脑上完成计算(无论她目前是否可以使用该程序)。如果该假定不成立,那么这个情况不是SaaSS。

这些服务器夺取用户自由甚至比专属软件还无情。使用专属软件,用户通常得到可执行文件而不是源代码。这使学习其代码变得困难,所以判断该程序真正的操作变得困难,更改它也变得困难。

使用SaaSS,用户甚至都没有从事其计算的可执行文件:它在别人的服务器上,用户看不到也摸不着。所以用户不可能弄清楚它做了什么,也不可能改变它。

更进一步,SaaSS自动就导致了和某些专属软件的恶意功能相同的后果。

例如,有些专属软件是“间谍软件”:该程序向外发送用户的计算活动数据。微软的Windows就把用户的活动发送给微软。Windows媒体播放器汇报每个用户观看或收听的内容。Amazon Kindle汇报用户在看哪本书的哪一页以及什么时间。愤怒的小鸟汇报用户的历史位置。

和专属软件不同,SaaSS不需要秘密的代码来获得用户数据。反过来,用户必须把数据交给服务器才能获得服务。这和间谍软件的效果一样:服务器操作者获得了数据—不必花力气,因为SaaSS就是这样的。Amy Webb,从来也没有要发表她女儿的照片,错误地使用了SaaSS(Instagram)来编辑女儿的照片。最后,照片还是从那里泄露了出去

理论上,同态加密1可能发展到有一天未来的SaaSS服务无法理解用户发来的某些数据。这样的服务可能无法窥探用户;这并不意味着他们不再窥探。

某些专属软件带有全局后门,它允许远程安装软件。例如,Windows就有一个全局后门,微软可以用它强制改变电脑上的任何软件。几乎所有移动电话也都有后门。一些专属软件也有全局后门;例如,工作在GNU/Linux上的Steam客户端允许其开发者远程安装更改后的版本。

使用SaaSS,服务器操作员能够改变服务器使用的软件。他应该能够这样做,因为这是他的电脑;但是其结果和带有全局后门的专属软件是一样的:有人有权不动声色地更改用户的计算。

所以,SaaSS和带有间谍软件及全局后门的专属软件是一样的。它给予服务器操作员凌驾于用户之上的权力,而这正是我们必须反抗的权力。

SaaSS和SaaS

最初我们认为这个有问题的实践是“SaaS”,意思是“软件即服务”。这是一个常用的术语,它是指在服务器上设置软件而不给用户拷贝,而我们认为该术语准确地描述了此类实践的问题所在。

后来我们认识到SaaS这一术语有时也用于通讯服务—而此问题并不适用于这些服务。另外,“软件即服务”这一术语不能解释为什么这种实践是不好的。所以我们创造了“服务代替软件”这一术语,它更清楚地定义了这个不好的实践,并且说出为什么它是不好的。

区分SaaSS问题和专属软件问题

SaaSS和专属软件导致类似的有害结果,但是其机制各有不同。对专属软件,该机制是你有软件拷贝,并使用该软件拷贝,但是修改该拷贝是困难/或者是非法的。对SaaSS,该机制是软件进行你的计算,但是你并没有该软件的拷贝。

这两个问题常常令人困扰,这并不仅仅是意外。网络开发者使用含糊不清的术语“网络应用”把服务器软件和运行在本地电脑的浏览器里的程序搞在一起。有些网页会在你的浏览器里安装非平凡的、甚至是大型的JavaScript软件,并且不告诉你。当这些JavaScript程序不是自由软件时,它们就和其他非自由软件一样导致不公正。然而,在这里,我们关心的是使用服务本身。

许多自由软件支持者认为SaaSS问题会由于开发服务器端的自由软件而解决。对服务器操作者来说,服务器端的程序最好是自由软件;如果它是专属软件,那么其开发者/所有者就有凌驾于服务器之上的权力。这对服务器操作者是不公正的,而且对服务器的用户也毫无帮助。但是如果服务器端的程序是自由软件,它也没有保护服务器用户不受SaaSS的影响。该程序使服务器操作者自由,但是没有给服务器用户自由。

把服务器软件的源代码发布可以使社区受益:这使有相应技术的用户可以搭建类似的服务器,也可能修改软件。我们建议使用GNU Affero GPL作为服务器端软件的许可证。

但是这些服务器都没有让你能够控制自己的计算,除非它是你的服务器(你控制它的软件,尽管服务器的硬件可能不是你的)。也许某些工作你可以放心地使用朋友的服务器,就像你让朋友在你的机器上维护软件一样。除此之外的服务器对你都应该是SaaSS。SaaSS总是使你受制于服务器操作者的权力,而唯一的解药是,不要使用SaaSS!不要使用他人的服务器来对你提交的数据进行计算。

这个问题展示了“开放”和“自由”的深度不同。源代码是开源意味着,差不多总是,自由软件。但是,“开源软件”服务,意味着服务器软件是开源或是自由软件,却错失了SaaSS的问题。

服务从根本上不同于程序,由它带来的道德问题从根本上也和程序的不同。为了避免混淆,我们避免把服务描述为“自由”或“专属。”

区分SaaSS和其他网络服务

哪些在线服务是SaaSS?最明确的例子是翻译服务,比如它把英语文字翻译成西班牙语文字。你要翻译这件事纯粹是你自己的计算。你可以通过在自己的电脑上运行一个程序完成。(道义上说,该程序应该是自由软件。)翻译服务代替了该程序,所以这是服务代替软件,即SaaSS。由于它剥夺了你对自己计算的控制,所以它对你作恶。

另一个明确的例子是使用诸如Flickr或Instagram之类的服务来编辑照片。几十年以来,人们都是在自己的电脑上编辑照片;在你无法控制的服务器上编辑照片,而不是在自己的电脑上,就是SaaSS。

拒绝SaaSS并不是说要拒绝所有的其他人运行的网络服务。大多数服务器不是SaaSS,因为它们的任务是通讯,而不是为用户做计算。

网络服务器最初的概念不是为你做计算,而是让你能够访问它发布的信息。即使在今天这也是大多数网站做的事,这个没有SaaSS的问题,因为访问别人发布的信息不是在做你的计算。使用博客网站发布自己的成果也不是,使用诸如Twitter或StatusNet的服务发布微博也不是。(这些服务可能会有其他问题,根据具体情况而不同。)这个道理对其他非私人的通讯服务也适用,比如聊天室。

究其本质,社交网络是一种沟通和出版的形式,不是SaaSS。然而,如果一个服务的主要设施是社交网络的话,它就可能带有SaaSS的功能和扩展。

如果一项服务不是SaaSS,并不意味着它就没有问题。服务有其他的道德问题。比如,Facebook使用Flash发布视频,就是迫使用户使用非自由软件;它要求使用非自由的JavaScript代码;并且它通过让用户展示自己的生活来误导他们对隐私的感觉。这些都是重要的问题,不过不同于SaaSS。

搜索引擎之类的服务是从网络上收集数据并让你查看。查看他们收集的数据不是普通意义上的用户计算活动—你并没有提供这个收集活动—所以使用此类网络搜索不是SaaSS。然而,使用其他人的服务器为你自己的网站部署搜索设施SaaSS。

网购不是SaaSS,因为这个计算不是你自己的活动;而是你和商店共同完成的活动。网购的真正问题在于你是否相信收钱的一方以及其他个人信息(从你的姓名算起)。

仓库网站,如Savannah和SourceForge,本身不是SaaSS,因为仓库的工作是发布交给它的数据。

使用联合项目的服务器不是SaaSS,因为你做的计算不是你自己的。例如,如果你修改了Wikipedia页面,那么你并不是在做自己的计算;而是你在做Wikipedia的联合计算。Wikipedia控制自己的服务器,但是如果他们使用的是其他人的服务器,那么机构和个人都面临SaaSS的问题。

有些网站提供多种服务,如果其中一个不是SaaSS,另一种也可能是SaaSS。例如,Facebook的主要服务是社交网络,这不是SaaSS;然而,它支持第三方应用,其中有些是SaaSS。Flickr的主要服务是发布照片,这不是SaaSS,但是它还有编辑照片的功能,这就是SaaSS。类似地,在Instagram发布照片不是SaaSS,但是使用它来转换照片格式就是SaaSS。

Google Docs展示了评价一个服务有多么复杂。它让人们通过运行一个大型的非自由JavaScript程序来编辑文档,明显是错误的。然而,它还提供上传和下载标准格式文档的API。一个自由软件编辑器也可以通过此API传输文档。这个应用场景不是SaaSS,因为Google Docs只是作为仓库来使用。把自己的数据展示给一个公司是一件坏事,但这也只是隐私的问题,不是SaaSS;依赖某个服务来访问自己的数据也是一件坏事,但它也只是风险的问题,不是SaaSS。另一方面,使用服务来转换文档的格式SaaSS,因为你可以使用自己电脑里的合适程序(希望是,自由软件)来完成这件事。

当然,通过自由软件使用Google Docs并不常见。最常见的是,人们通过非自由的JavaScript程序来使用它,这和使用其他非自由软件一样糟糕。这个场景还会引入SaaSS;这取决于哪些操作是JavaScript程序做的,哪些是服务器做的。我们不知道,但是由于SaaSS和专属软件都对用户作恶,知不知道并不是关键。

通过他人的仓库进行发布不会有隐私的问题,但是通过Google Docs发布却有一个特别的问题:不运行非自由的JavaScript代码,你甚至不能在浏览器里查看Google Docs文本。所以,你不应该使用Google Docs发布文档—但是这不是由于SaaSS的原因。

IT产业并不鼓励用户做这些区分。这就是“云计算”这一时髦词汇的用途。该词是如此的模糊不清,以至于它几乎可以表示任何互联网的使用形式。它包含SaaSS,也包含许多其他的网络使用情况。在一个特定的语境,使用者可能用“云”(如果是技术背景的使用者)表示脑海里一个特定的意思,但是通常不会解释说该词在其他文章中有其他的意思。该术语引导人们对本应该单独处理的情况进行普遍化。

如果“云计算”有定义,那么它不是一个计算的方式,而是对计算的一种思考方法:一种魔鬼才会考虑的方法,意思是,“不要提问。不要担心是谁控制你的计算或者是谁掌握你的数据。在你吞掉鱼饵之前不要检查藏在服务之饵里的钓钩。要毫不怀疑地相信这些公司。”换句话说,“做一个没有主见的人。”思想里的云就是要阻碍清楚地思考。为了清楚地思考计算,让我们避免使用“云”这个词。

区分租用服务器和SaaSS的不同

如果你租用服务器(真实的或虚拟的),你可以控制其软件,它就不是SaaSS。在SaaSS的情形,其他人决定服务器运行的软件,因而他们控制着你的计算。在你安装服务器软件的情形,你控制着你的计算。所以,租用服务器实际上是你的电脑。此时,我们认为它就是你的。

租用的远程服务器上的数据没有在自己家里的服务器上的数据安全,但是这个是SaaSS之外的问题。

SaaSS问题的应对

只有小部分网站实施SaaSS;大多数网站没有这个问题。但是我们如何应对有这个问题的网站呢?

对简单的情况,你用自己的数据进行自己的计算,解决方法也简单:使用一份你自己的自由软件拷贝。用一份诸如GNU Emacs或自由字处理程序的自由软件来进行自己的文本编辑。使用诸如GIMP的自由软件来编辑照片。如果没有可用的自由软件怎么办?专属软件或SaaSS会拿走你的自由,所以你不应该使用它们。你可以贡献时间或资金来开发一款可以替代专属软件的自由软件。

和其他人结成合作团队怎么样?现在在不用服务器的情况下工作可能有困难,而团队可能并不知道如何运作自己的服务器。如果你要使用他人的服务器,至少不要相信由公司运作的服务器。一纸客户合同对你不是保护,除非你能够侦测到违规并真正起诉,而公司制作的合同可能允许宽泛的滥用。政府可以从该公司强行调取你的以及其他人的数据,正如奥巴马总统对电话公司所做的;还要假设该公司不自愿交出数据,不过美国电话公司是非法为布什政府监听其用户的。如果你必须使用服务器,请使用除了商业关系之外还有其他可信基础的服务器操作方。

然而,长远来看,我们能够构建替代服务器的机制。例如,我们可以构建能够分享加密数据的点对点程序。自由软件社区应该开发分布式点对点程序来代替重要的“网络应用”。按照GNU Affero GPL发布这些程序是明智的,因为它们有可能被某些人转换成基于服务器的程序。GNU工程正在寻求做此开发的志愿者。我们也邀请其他自由软件项目在其设计中考虑这个问题。

同时,如果有公司邀请你使用它们的服务器来做你的计算,不要接受;不要使用SaaSS。不要购买或安装“轻客户端”,这些只是简单的电脑,它们的计算能力是如此之弱,你的计算只能在服务器上真正完成,除非你配合你的服务器来使用这些客户端。使用真正的电脑并把数据限制在该电脑上。为你的自由起见,请用你自己的自由软件拷贝来做计算。

请同时参看:

不许任何人了解的缺陷

译注

  1. homomorphic encryption,同态加密:指对加密内容的计算结果和对非加密内容的计算结果一样的加密算法。

返回顶部


[FSF 标志]“我们的使命在于维护、保障和推动人们使用、学习、复制和重新发布计算机软件的自由,我们的使命还在于捍卫自由软件使用者的权利。”

自由软件基金会是GNU操作系统的主要赞助机构。请通过以下方式支持GNU和FSF购买手册和装备 加入FSF成为会员、直接或者通过Flattr向FSF捐赠