那個伺服器究竟為誰服務?

在網際網路上,專有軟體並不是唯一會讓您失去運算自由的方式。「服務即軟體替代品」(Service as a Software Substitute, SaaSS) 是另一種將運算權力交給他人的方式。

基本重點是,您可以掌控別人撰寫的程式 (如果它是自由軟體),但您永遠無法掌控別人運行的服務,因此,在原則上運行程式即可完成工作的情況下,永遠不要使用服務。

SaaSS 指的是使用他人實作的服務來替代運行您自己的程式副本。這個詞彙是我們創造的;文章和廣告不會使用它,它們也不會告訴您某項服務是否為 SaaSS。相反地,它們可能會使用模糊且令人分心的詞彙「雲端」,這個詞彙將 SaaSS 與各種其他實務做法混為一談,其中有些做法是濫用的,有些則是還可以接受的。而且他們會談論「透過提供運行服務來交付程式」。透過本頁的解釋和範例,您可以判斷某項服務是否為 SaaSS。

背景:專有軟體如何奪走您的自由

數位科技可以賦予您自由;它也可能奪走您的自由。我們對運算的控制權所面臨的第一個威脅來自於專有軟體:使用者無法控制的軟體,因為擁有者 (例如 Apple 或 Microsoft 等公司) 控制了它。擁有者經常利用這種不正當的權力來植入惡意功能,例如間諜軟體、後門和數位限制管理 (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 會回報每位使用者觀看或聆聽的內容。Amazon Kindle 會回報使用者查看了哪些書籍的哪些頁面,以及何時查看。Angry Birds 會回報使用者的地理位置歷史記錄。

與專有軟體不同,SaaSS 不需要隱蔽程式碼來取得使用者的資料。相反地,它的結構要求使用者將他們的資料發送到伺服器才能使用它。這具有與間諜軟體相同的效果:伺服器營運商會取得資料,無需任何特殊努力,這就是 SaaSS 的本質。Amy Webb 原本從未打算發布她女兒的任何照片,但她犯了一個錯誤,使用 SaaSS (Instagram) 來編輯她女兒的照片。最終,它們從那裡洩漏了

理論上,同態加密有一天可能會發展到未來的 SaaSS 服務可能會被建構成無法理解使用者發送給它們的某些資料的程度。這類服務可能會被設定為不窺探使用者;這並不表示它們不會進行窺探。此外,窺探只是 SaaSS 次要不公正行為之一。

某些專有作業系統具有通用後門,允許某人遠端安裝軟體變更。例如,Windows 有一個通用後門,Microsoft 可以透過它強制變更機器上的任何軟體。幾乎所有可攜式電話也都有這些後門。某些專有應用程式也具有通用後門;例如,適用於 GNU/Linux 的 Steam 用戶端允許開發人員遠端安裝修改後的版本。

使用 SaaSS,伺服器營運商可以變更伺服器上使用的軟體。人們應該能夠做到這一點,因為它是針對每部電腦的;但結果與使用具有通用後門的專有應用程式相同:有人有權力靜默地強加變更,來改變使用者的運算方式。

SaaSS 不良服務通常會收取每月使用費。通常一個 SaaSS 網站無法替代另一個網站,因此如果使用者對某個不良服務供應商不滿意,要切換到另一個供應商並不容易。當使用者變得依賴某個供應商時,它可以隨意哄抬價格,透過重複的小幅漲價,隨著時間的推移,累積成一大筆費用。我們認為 SaaSS 固有的自由喪失比金錢成本更糟糕,但是當不良服務讓您身不由己時,成本可能會很痛苦。因此,即使是那些目光短淺的使用者也應該提防 SaaSS。

SaaSS 等同於運行具有間諜軟體和通用後門的專有軟體。它賦予伺服器營運商對使用者不公正的權力,而不公正的權力是我們必須反抗的。

SaaSS 和 SaaS

最初,我們將這種有問題的做法稱為「SaaS」,它是「軟體即服務」(Software as a Service) 的縮寫。它是指在伺服器上架設軟體而不是向使用者提供軟體副本的常用術語,我們認為它精確地描述了發生此問題的情況。

隨後,我們意識到 SaaS 這個術語有時用於通訊服務,而此問題並不適用於這些活動。此外,「軟體即服務」這個術語並未解釋為什麼這種做法不好。因此,我們創造了「服務即軟體替代品」(Service as a Software Substitute) 這個術語,它更清楚地定義了不良做法,並說明了它的缺點。

將 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 程式碼,並且在引誘使用者向 Facebook 暴露自己的生活時,給使用者一種誤導性的隱私印象。這些都是重要的議題,但與 SaaSS 議題不同。

搜尋引擎等服務會從網路上收集資料,並讓您檢查它。瀏覽它們收集的資料並不是通常意義上的您自己的運算,您沒有提供該集合,因此使用這類服務搜尋網路不是 SaaSS。但是,使用別人的伺服器為您自己的網站實作搜尋功能 SaaSS。

線上購物不是 SaaSS,因為運算不是您自己的活動;相反地,它是您和商店共同完成並為您們服務的。線上購物的真正問題是您是否信任對方處理您的金錢和其他個人資訊 (從您的姓名開始)。

儲存庫網站 (例如 Savannah 和 SourceForge) 本質上不是 SaaSS,因為儲存庫的工作是發布提供給它的資料。

某些網站提供多種服務,如果其中一種不是 SaaSS,另一種可能是 SaaSS。例如,Facebook 的主要服務是社群網路,這不是 SaaSS;但是,它支援第三方應用程式,其中某些是 SaaSS。Flickr 的主要服務是發布照片,這不是 SaaSS,但它也具有編輯照片的功能,這是 SaaSS。同樣地,使用 Instagram 發布照片不是 SaaSS,但使用它來轉換照片是 SaaSS。

Google 文件顯示了評估單一服務可能變得多麼複雜。它邀請人們透過運行大型非自由 JavaScript 程式來編輯文件,這顯然是不公正的,但不是 SaaSS。但是,它提供了用於以上傳和下載標準格式文件的 API。自由軟體編輯器可以透過此 API 執行此操作。(我們不知道是否有可能在不運行某些非自由 JavaScript 程式碼的情況下取得 Google 文件的帳戶。) 無論如何,這種使用情境不是 SaaSS,因為它將 Google 文件僅僅用作儲存庫。將您的工作資料交給公司是不好的,但那是隱私問題,而不是 SaaSS 問題;依賴服務來存取您的資料是不好的,但那是風險問題,而不是 SaaSS 問題。

另一方面,使用 Google 文件轉換文件格式 SaaSS,因為這是您本可以使用您自己電腦中的合適程式 (希望是自由軟體) 完成的事情。

當然,透過自由編輯器使用 Google 文件的情況很少見。大多數時候,人們使用它發送的非自由 JavaScript 程式來編輯他們的 Google 文件文件,這與任何非自由程式一樣糟糕。這種情境也可能涉及 SaaSS;這取決於編輯的哪個部分是在 JavaScript 程式中完成的,哪個部分是在伺服器中完成的。我們不知道,但由於 SaaSS 和專有軟體對使用者造成類似的損害,因此我們可以從道德上判斷整個情境,而無需知道哪個部分是哪個部分。

透過別人的儲存庫發布不會引發隱私問題,但透過 Google 文件發布有一個特殊問題:即使在瀏覽器中檢視 Google 文件文件的文字也不可能,除非運行非自由 JavaScript 程式碼。因此,您不應該使用 Google 文件來發布任何內容,但原因不是 SaaSS 問題。

資訊科技產業不鼓勵使用者區分這些差異。這就是流行語「雲端運算」的用途。這個術語非常模糊,以至於它可以指幾乎任何對網際網路的使用。它包括 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。不要購買或安裝「精簡型用戶端」,它們只是效能非常弱的電腦,會讓您在伺服器上完成真正的工作,除非您打算將它們與您的伺服器一起使用。使用真正的電腦並將您的資料保存在那裡。為了您的自由,使用您自己的自由程式副本來執行您自己的運算。