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

服务器究竟为谁服务?

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

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

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

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

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

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

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

服务代替软件看起来是怎样的?

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

SaaSS 涉及哪些活动?

SaaSS,还是不 SaaSS,对 你自己的 计算是有意义的。这究竟是什么意思呢?它的意思就是这个计算本身没有涉及其他人。为了明确 “本身涉及” 的意思,我们来做一个思想实验。

假想你工作所需要的自由软件都有了,相关的数据、计算机算力和容量也都有了。那么你(有了这些前提条件)是否还会在工作中完全用这些计算机做自己的计算,而不和别人的计算机沟通?

如果是的,那么这个活动是 你自己的。因此,看在自由份上,你值得控制这个计算。SaaSS 的概念适用于这类活动,而不是其他活动。

对此类活动,如果你运行的是自由软件,那么你是在控制它。这样做保护了你的自由。不过,通过别人的服务来进行这个计算的话,你就把计算的控制交给了别人。那样就剥夺了你应有的控制,所以我们认为它是不公正的。我们称之为 SaaSS。

反之,如果由于计算的自然属性,你根本就无法在自己的电脑上进行这些计算活动,那么这些计算就不完全是你自己的,而 SaaSS 也就不适用于这个活动。通常,这些计算活动会涉及与其他计算机的沟通,其他人必须要介入。从商店购买商品就是一个典型的例子,这个活动需要有其他人参与(商店)。

如果某个活动是你自己的,那么你要控制该活动就要求你自己运行自由软件,并且在自己控制的电脑上运行。其他方式都是 SaaSS,因为你失去了你应得的控制。这和你运行的原因没有关系。如果你是因为方便采用了其他方法,它是 SaaSS。如果你是因为没法得到自由软件或可控的计算机而采用了其他方法,它也是 SaaSS。

使用 SaaSS 和运行非自由软件的比较

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

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

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

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

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

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

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

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

SaaSS 敌服务通常会按月收费。一个 SaaSS 站点通常不能用另一个站点代替,所以如果用户对一个敌服务不满意,他们并不能轻易换到另一家。当用户开始依赖某一家时,它就开始随意用反复涨价的方式试探用户,逐渐累加到相当可观的价格。我们认为 SaaSS 本身带来自由丧失比金钱花费更糟糕,不过当敌服务让你别无选择时,这钱花得就相当痛苦。因此,即使未曾看透 SSaaS 底线的用户也应谨防上当。

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 的问题,因为访问别人发布的信息不是在做你的计算。使用博客网站发布自己的成果也不是,使用诸如 Mastodon、StatusNet 或 Ex-Twitter 的服务发布微博也不是。(这些服务可能会有其他问题,根据具体情况而不同。)这个道理对其他非私人的通讯服务也适用,比如聊天室。

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

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

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

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

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

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

Google Docs 展示了评价一个服务有多么复杂。它让人们通过运行一个大型的 非自由 JavaScript 程序 来编辑文档,明显是错误的,但它不是 SaaSS。然而,它还提供上传和下载标准格式文档的 API。一个自由软件编辑器也可以通过此 API 传输文档。(我们并不知道,不运行非自由的 JavaScript 代码是否可以获得 Google Docs。)无论如何,这个应用场景不是 SaaSS,因为 Google Docs 只是作为仓库来使用。把自己的数据展示给一个公司是一件坏事,但这也只是隐私的问题,不是 SaaSS;依赖某个服务来访问自己的数据也是一件坏事,但它也只是风险的问题,也不是 SaaSS。

另一方面,使用 Goole Docs 服务来转换文档的格式 SaaSS,因为你可以使用自己电脑里的合适程序(希望是,自由软件)来完成这件事。

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

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

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

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

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

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

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

这种服务器租赁有时叫做“IaaS”,但是该术语适用的概念轻视了我们要考虑的重点。

当用户合作或者是一个组织时

至此,我们解释了 SaaSS 是怎么应用到个人的计算的。对这些情况,我们基本澄清了 SaaSS 的概念。SaaSS 对用户合作也是一个问题,这些合作可能是非正式的(比如开发自由软件常常就是),也可能是正式的(比如象 FSF 这样的慈善机构或一个公司)。基本概念类似,但是我们尚未澄清所有情形的边界。

现在看看我们划的界限。

合作活动可能会有网页,通常有服务器托管。服务器对页面访问者的处理通常有道德问题:如果它发送非自由的 JavaScript 代码,那么它是不公正的,而如果它为访问者提供计算,那么它是 SaaSS。

然而,网络服务器的自我运作也会对合作活动带来 SaaSS 问题。网络服务器通常会给来访者提供搜索页面的服务;它是怎么实现该服务呢?如果合作活动在自己的电脑上运行自由软件来匹配搜索关键字,那么它做到了自己控制自己的计算。但是如果它是向 Google(或其他搜索引擎)查询匹配并显示结果,那么合作活动就依赖于 SaaSS 并把自由拱手出让。

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

使用简单的软件库不是 SaaSS,因为大多数实际工作(和再发布不同)是在贡献者自己的电脑上完成的。不过,当软件库开始为用户做其他计算时,比如运行测试,那么它就可能越界了。当用户为某个项目做贡献时,这些工作是项目的而不是贡献者的,所以对用户来说这个还不是 SaaSS。但是它对项目来说可能是 SaaSS。然而,如果测试指的是运行项目开发的程序,那么它不是 SaaSS,因为项目还控制着关键的程序执行。

SaaSS问题的应对

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

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

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

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

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

译注

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