那个服务器真正为谁服务?

在互联网上,专有软件并不是唯一让你失去计算自由的方式。“服务即软件替代品”,或称 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 会自动导致与某些专有软件的恶意功能相当的后果。

例如,一些专有程序是“间谍软件”:该程序发送有关用户计算活动的数据。Microsoft Windows 将有关用户活动的信息发送给 Microsoft。Windows Media Player 会报告每个用户观看或收听的内容。亚马逊 Kindle 会报告用户查看哪些书的哪些页,以及何时查看。愤怒的小鸟会报告用户的地理位置历史记录。

与专有软件不同,SaaSS 不需要秘密代码来获取用户的数据。相反,它的结构要求用户将数据发送到服务器才能使用它。这与间谍软件的效果相同:服务器运营商会获取数据——无需特殊努力,这取决于 SaaSS 的性质。艾米·韦伯原本打算永远不发布她女儿的照片,但她犯了一个错误,使用了 SaaSS (Instagram) 来编辑她女儿的照片。最终它们从那里泄露

理论上,同态加密可能会在某一天发展到可以让未来的 SaaSS 服务无法理解用户发送给他们的一些数据的程度。这样的服务可能被设置为不窥探用户;但这并不意味着他们不进行窥探。此外,窥探只是 SaaSS 次要不公正行为之一。

一些专有操作系统有一个通用后门,允许某人远程安装软件更改。例如,Windows 有一个通用后门,微软可以使用它强制更改计算机上的任何软件。几乎所有便携式手机也都有。一些专有应用程序也有通用后门;例如,GNU/Linux 的 Steam 客户端允许开发者远程安装修改后的版本。

使用 SaaSS,服务器运营商可以更改服务器上使用的软件。每个人都应该能够做到这一点,因为它是在每台计算机上进行的;但结果与使用具有通用后门的专有应用程序程序相同:有人有权在用户计算的完成方式中静默地强加更改。

SaaSS 不服务机构通常会每月收取使用费。通常,一个 SaaSS 站点不能替代另一个站点,因此如果用户对一个不服务机构提供商不满意,则切换到另一个站点并非易事。当用户依赖一个站点时,它可能会随意欺诈他们,通过反复小幅涨价,随着时间的推移,这些涨价会累积成很多。我们认为 SaaSS 固有的自由损失比金钱成本更糟糕,但当不服务机构控制你时,成本可能会很痛苦。因此,即使那些只看重底线的用户也应该警惕 SaaSS。

SaaSS 相当于运行带有间谍软件和通用后门的专有软件。它赋予服务器运营商对用户的不公正权力,而不公正的权力是我们必须抵制的。

SaaSS 和 SaaS

最初,我们将这种有问题的做法称为“SaaS”,它是“软件即服务”的缩写。这是一个常用的术语,用于在服务器上设置软件,而不是向用户提供软件副本,我们认为它准确地描述了发生此问题的案例。

后来我们意识到,“SaaS” 一词有时被用于指代通信服务——而本文讨论的问题并不适用于通信服务。此外,“软件即服务” 这个术语并没有解释为什么这种做法不好。因此,我们创造了术语 “服务作为软件替代品(Service as a Software Substitute,SaaSS)”,它更清晰地定义了这种不良做法,并说明了它哪里不好。

将 SaaSS 问题与专有软件问题区分开来

SaaSS 和专有软件会导致类似的有害结果,但机制不同。对于专有软件,其机制在于您拥有并使用一个难以或非法更改的副本。对于 SaaSS,其机制在于您没有执行计算的副本。

这两个问题经常被混淆,而且并非偶然。Web 开发人员使用模糊的术语 “Web 应用程序” 将服务器软件与在您浏览器中计算机上运行的程序混为一谈。一些网页在您不知情的情况下将重要的,甚至大型的 JavaScript 程序安装到您的浏览器中。当这些 JavaScript 程序是非自由的时,它们会像任何其他非自由软件一样造成不公正。然而,在这里,我们关注的是使用服务本身的问题。

许多自由软件的支持者认为,通过为服务器开发自由软件可以解决 SaaSS 的问题。为了服务器操作员的利益,服务器上的程序最好是自由的;如果它们是专有的,它们的开发者/所有者就拥有对服务器的控制权。这对服务器操作员是不公平的,并且对服务器的用户没有任何帮助。但是,如果服务器上的程序是自由的,这并不能保护服务器的用户免受 SaaSS 的影响。这些程序解放了服务器操作员,但没有解放服务器的用户。

发布服务器软件源代码确实有益于社区:它使具备足够技能的用户能够设置类似的服务器,并可能更改软件。我们建议使用 GNU Affero GPL 作为经常在服务器上使用的程序的许可证。

但是,除非它是的服务器(您控制其软件负载的服务器,无论机器是否属于您),否则这些服务器都不会让您控制您在其上进行的计算。信任您朋友的服务器进行某些工作可能是可以的,就像您可能让您的朋友维护您自己计算机上的软件一样。除此之外,所有这些服务器对您来说都是 SaaSS。SaaSS 总是让您受制于服务器操作员的权力,而唯一的补救办法是,不要使用 SaaSS!不要使用别人的服务器对您提供的数据进行您自己的计算。

这个问题展示了 “开放” 和 “自由” 之间差异的深度。开源的源代码几乎总是自由的。然而,“开放软件” 服务的概念,意味着其服务器软件是开源和/或自由的,未能解决 SaaSS 的问题。

服务从根本上不同于程序,服务引发的道德问题也从根本上不同于程序引发的问题。为了避免混淆,我们避免将服务描述为 “自由” 或 “专有”。

将 SaaSS 与其他网络服务区分开来

哪些在线服务是 SaaSS?最明显的例子是翻译服务,它将(例如)英语文本翻译成西班牙语文本。为您翻译文本是纯粹属于您的计算。如果您有正确的程序,您可以在自己的计算机上运行一个程序来完成它。(为了符合道德规范,该程序应该是自由的。)翻译服务替代了该程序,因此它是服务作为软件替代品,即 SaaSS。因为它剥夺了您对计算的控制权,所以它对您是不公平的。

另一个明显的例子是使用 Flickr 或 Instagram 等服务来修改照片。修改照片是人们在自己的计算机上进行了几十年的活动;在您不控制的服务器上而不是在您自己的计算机上进行此操作,就是 SaaSS。

拒绝 SaaSS 并不意味着拒绝使用除您自己之外的任何人运行的任何网络服务器。大多数服务器不是 SaaSS,因为它们所做的工作是一些与访问者的通信,而不是每个访问者自己的计算。

Web 服务器的最初想法不是为您(访问者)进行计算;而是发布信息供您访问。即使在今天,这也是大多数网站所做的,它不会引起 SaaSS 问题,因为访问某人在网站上发布的信息不是您自己计算的问题。使用博客网站发布您自己的作品,或使用微博服务(如 Mastodon、StatusNet 或 Ex-Twitter)也是如此。(这些服务可能存在其他问题,具体取决于细节。)其他不打算保密的通信(例如聊天组)也是如此。

从本质上讲,社交网络是一种通信和发布的形式,而不是 SaaSS。然而,主要功能是社交网络的服务可能具有 SaaSS 的功能或扩展。

如果某项服务不是 SaaSS,这并不意味着它没问题。关于服务还有其他道德问题。例如,Facebook 需要运行非自由 JavaScript 代码,并且它给用户一种关于隐私的误导性印象,同时引诱他们向 Facebook 暴露自己的生活。这些都是重要的问题,但与 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 问题。

另一方面,使用 Google Docs 转换文档格式 SaaSS,因为这是您可以通过在自己的计算机中运行合适的程序(希望是自由的)来完成的事情。

当然,通过自由编辑器使用 Google Docs 的情况很少见。大多数时候,人们使用它发送的非自由 JavaScript 程序编辑其 Google Docs 文档,这就像任何非自由程序一样是不好的。这种情况可能也涉及 SaaSS;这取决于编辑的哪一部分是在 JavaScript 程序中完成的,哪一部分是在服务器中完成的。我们不知道,但由于 SaaSS 和专有软件对用户造成了类似的伤害,因此我们可以在不知道哪个部分是什么的情况下从道德上判断整个场景。

通过别人的存储库发布不会引发隐私问题,但是通过 Google Docs 发布存在一个特殊问题:即使不运行非自由 JavaScript 代码,也无法在浏览器中查看 Google Docs 文档的文本。因此,您不应该使用 Google Docs 发布任何内容——但原因不是 SaaSS 问题。

IT 行业阻止用户进行这些区分。这就是 “云计算” 这个流行词的用途。这个术语如此模糊,以至于它可以指代几乎任何对互联网的使用。它包括 SaaSS 以及许多其他网络使用实践。在任何给定的上下文中,如果作者(如果是技术人员)写 “云”,则可能在心中有特定的含义,但通常不会解释该术语在其他文章中具有其他特定含义。该术语导致人们概括他们应该单独判断的做法。

如果 “云计算” 有意义,它不是一种进行计算的方式,而是一种思考计算的方式:一种漫不经心的态度,即说:“不要问问题。不要担心谁控制着您的计算或谁持有您的数据。在吞下我们的服务之前,不要检查隐藏在其中的钩子。毫不犹豫地信任公司。” 换句话说,“做个傻瓜。” 心中的云是清晰思维的障碍。为了清晰地思考计算,让我们避免使用 “云” 这个术语。

将租用服务器与 SaaSS 区分开来

如果您租用一台服务器(真实或虚拟),您对其软件负载具有控制权,则这不是 SaaSS。在 SaaSS 中,其他人决定服务器上运行什么软件,因此控制它为您进行的计算。在您在服务器上安装软件的情况下,您可以控制它为您进行的计算。因此,租用的服务器实际上就是您的计算机。对于这个问题,它被视为是您的。

租用的远程服务器上的数据不如您在家中拥有服务器安全,但这是与 SaaSS 分开的问题。

这种服务器租赁有时称为 “IaaS”,但是该术语适合于一种概念结构,该结构淡化了我们认为重要的问题。

当用户是集体活动或组织时

到目前为止,我们已经解释了 SaaSS 如何应用于个人的计算。对于这些情况,我们已经非常彻底地澄清了 SaaSS 的概念。SaaSS 也是一个由小组活动完成的计算问题,该活动可能是非正式的(例如经常开发自由程序),也可能是正式的(像 FSF 这样的慈善机构或企业)。它基本上是相同的概念,但是我们尚未澄清各种情况的边界。

以下是我们目前划定的一些界限。

集体活动很可能会有网页,这些网页将托管在某些 Web 服务器上。该服务器对其页面访问者的处理引发了常见的道德问题:如果他们发送非自由 JavaScript 代码,那是不公正的,如果他们提供为访问者进行计算,那就是 SaaSS。

但是,Web 服务器自身的运行也会引发 SaaSS 问题,而集体活动是受害者。Web 服务器通常为访问者提供一种搜索网页的方式;它是如何实现这一点的?如果集体活动在其自己的计算机上运行一个自由程序来查找搜索字符串的匹配项,则集体活动将像它应该做的那样控制此功能。但是,如果它询问 Google(或任何其他搜索引擎)匹配项在哪里并显示找到的内容,则集体活动将依赖于 SaaSS 并放弃其自由。

使用联合项目的服务器来处理该项目不是 SaaSS,因为您以这种方式进行的计算不是您自己的 - 它是该项目的计算。例如,如果您在 Wikipedia 上编辑页面,则您不是在进行自己的计算;而是您在协作进行 Wikipedia 的计算。Wikipedia 控制着自己的服务器,但是如果组织和个人在别人的服务器中进行计算,它们也会遇到 SaaSS 问题。

使用简单的软件仓库不是软件即服务(SaaS),因为大部分实际工作(与重新分发区分开来)是在贡献者的计算机上完成的。然而,当仓库开始为用户进行其他类型的计算工作时,例如运行测试,这就开始越界了。当用户为项目做贡献时,这项工作是项目的而不是贡献者的,对用户而言仍然不是软件即服务(SaaS)。但是,对于项目而言,它可能是软件即服务(SaaS)。然而,如果测试意味着运行项目开发的程序,则它不是软件即服务(SaaS),因为项目确实控制了正在运行的关键软件。

处理软件即服务(SaaS)问题

只有一小部分网站提供软件即服务(SaaS);大多数网站不会提出这个问题。但是,我们应该如何处理那些提出这个问题的网站呢?

对于简单的情况,当您在自己的计算机上处理您自己掌握的数据时,解决方案很简单:使用您自己的自由软件应用程序副本。使用您自己的自由文本编辑器(如 GNU Emacs)或自由文字处理器进行文本编辑。使用您自己的自由软件(如 GIMP)副本进行照片编辑。如果没有可用的自由程序怎么办?专有程序或软件即服务(SaaS)会剥夺您的自由,因此您不应该使用它们。您可以贡献您的时间或金钱来开发自由替代品。

与其他人作为一个小组协作呢?目前,如果不使用服务器,可能很难做到这一点,而且您的小组可能不知道如何运行自己的服务器。如果您使用其他人的服务器,至少不要信任公司运营的服务器。仅仅作为客户的合同是没有保障的,除非您可以检测到违约并且可以真正提起诉讼,而且该公司可能会在合同中允许各种各样的滥用行为。国家可以从公司传唤您的数据以及其他所有人的数据,就像奥巴马对电话公司所做的那样,假设该公司不像美国电话公司那样自愿提供,后者非法为布什窃听客户。如果您必须使用服务器,请使用其运营商除了商业关系之外,还给您信任基础的服务器。

然而,从长远来看,我们可以创建替代使用服务器的方法。例如,我们可以创建一个点对点程序,通过该程序,协作者可以共享加密的数据。自由软件社区应该为重要的“网络应用程序”开发分布式点对点替代品。最好根据 GNU Affero GPL 发布它们,因为它们很可能被其他人转换为基于服务器的程序。GNU 项目正在寻找志愿者来开发此类替代品。我们也邀请其他自由软件项目在其设计中考虑这个问题。

与此同时,如果一家公司邀请您使用其服务器来完成您自己的计算任务,请不要屈服;不要使用软件即服务(SaaS)。不要购买或安装“瘦客户端”,它们只是功能如此薄弱的计算机,以至于您必须在服务器上完成实际工作,除非您打算将它们与您自己的服务器一起使用。使用一台真正的计算机,并将您的数据保存在那里。为了您的自由,请使用您自己的自由程序副本进行您自己的计算。