為什麼要使用 Affero GPL
GNU Affero 通用公共許可證是普通 GNU GPL 第 3 版的修改版本。它增加了一項要求:如果您在伺服器上運行修改後的程式,並允許其他使用者與其通信,則您的伺服器也必須允許他們下載與該處運行的修改版本相對應的原始碼。
GNU Affero GPL 的目的是防止一個影響常用於伺服器的自由程式開發者的問題。
假設您根據普通 GNU GPL 開發並發布了一個自由程式。如果開發者 D 修改了該程式並發布,GPL 要求他也根據 GPL 發布他的版本。因此,如果您獲得了他的版本副本,您可以自由地將他的一些或全部更改合併到您自己的版本中。
但是,假設該程式主要用於伺服器。當 D 修改程式時,他很可能會在他自己的伺服器上運行它,而永遠不會發布副本。那麼您將永遠無法獲得他的版本原始碼副本,因此您將永遠沒有機會將他的更改包含在您的版本中。您可能不喜歡這種結果。
使用 GNU Affero GPL 可以避免這種結果。如果 D 在每個人都可以使用的伺服器上運行他的版本,您也可以使用它。假設他已遵守許可證要求,讓伺服器的使用者下載他的版本原始碼,您可以這樣做,然後您可以將他的更改合併到您的版本中。(如果他沒有遵守,您可以讓您的律師向他投訴。)
普通 GNU GPL 第 3 版和 GNU Affero GPL 都有文本允許您在一個程式中連結這兩個許可證下的模組。
GNU Affero GPL 並未解決 以服務取代軟體 (SaaSS) 的問題。
SaaSS 意味著使用者使用別人的網路伺服器來進行自己的運算。這需要他們將自己的數據發送到伺服器,伺服器為他們進行運算,然後將結果發送回給他們。SaaSS 是一種不公正,因為使用者在以這種方式進行運算時無法控制自己的運算。
如果此伺服器上的某些程式是以 GNU Affero GPL 發布的,則伺服器必須向使用者提供該程式的相應原始碼。這很好,但是擁有此原始碼並不能讓他們控制在該伺服器上完成的運算。它也沒有告訴他們可能還有哪些其他軟體正在該伺服器上運行,以其他方式檢查或更改他們的數據。
我們沒有看到任何明智的方法可以通過特定程式的許可證條款來解決 SaaSS 問題。即使編寫法律條件來區分 SaaSS 用途和非 SaaSS 用途也將是一個挑戰,即使我們這樣做了,我們也沒有看到程式的許可證在 SaaSS 情況下可能要求的任何內容可以糾正 SaaSS 的內在錯誤。因此,我們解決 SaaSS 問題的方案很簡單:拒絕使用 SaaSS 服務。
如果一個程式專門且僅用於 SaaSS,您就不應該編寫它。但是許多程式對於各種服務都很有用,包括一些是 SaaSS,而另一些則不是。編寫和發布這些程式很有用,這樣人們就可以使用它們建立非 SaaSS 服務,並且最好根據 AGPL 發布它們。