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

为什么要使用GNU Affero GPL

GNU Affero1通用公共许可证是由普通的 GNU 公共许可证第三版的修改版。它有一个额外要求:如果您在服务器上运行一个由 GNU AGPL 许可的修改版的软件,并且让其他用户与这个软件通信,那么这个服务器也必须允许他们下载这个正在运行的修改版本相对应的源代码。

GNU Affero GPL 的用途是避免那些影响常用在服务器上的自由软件的开发人员的问题。

假设您在普通的 GNU GPL 下开发和发布程序,如果开发人员 D 修改了程序并且发布了它,那么 GPL 会要求他在 GPL 下发布他的版本。因此,如果您获得了他的修改版本,您可以自由地将他的部分或全部更改合并到您自己的版本中。

但是假如这个程序主要是在服务器上有用,当 D 修改程序时,他很有可能会在自己的服务器上运行它而不发布副本。然后,您将永远得不到他的版本的源代码副本,所以您永远无法将他的修改包含进您的版本,您可能不会喜欢这样的结果。

使用 GNU Affero 通用公共许可证就避免了这种结果。如果 D 在每个人都可以使用的服务器上运行他的版本,那么您也可以也可以使用它。假如他遵守许可证要求,让服务器的用户下载他的版本的源代码,那么您也可以这样做,然后您可以将他的修改合并到您的版本中。(如果他没有遵守,您可让您的律师向他投诉。)

普通的 GNU 通用公共许可证第3版和 GNU Affero GPL 都有允许您在一个程序中将这两个许可证下的模块链接在一起的文本。

GNU Affero GPL 并没有解决“服务作为软件替代品(SaaSS)”的问题。

SaaSS 的意思是,用户使用其他人的 web 服务器来完成用户自己的计算。这要求他们将数据发送到服务器,服务器为他们进行计算,并将结果发送回给他们。SaaSS 是不公正的,因为用户无法控制其计算过程。

如果这个服务器上的某个程序是在 GNU Affero GPL 下发布的,那么服务器就需要为用户提供相应的源代码。这很好,但是拥有这个源代码并不会让用户控制服务器上的计算。它也不会告诉用户,有什么其它以别的方式检查或更改用户数据的软件可能也运行在同一服务器。

我们没有看到任何合理的方法在特定程序上用许可证条款来解决 SaaSS 问题。甚至写一条区分使用 SaaSS 与否的法律条款也是一种挑战,并且即使我们有这样的许可证,我们也不会看到程序许可证会对能解决 SaaSS 固有问题的 SaaSS 案例作任何要求。因此,我们对 SaaSS 问题的解决方案很简单:拒绝使用SaaSS服务。

如果一个程序是专门针对 SaaSS 的,你不应该写它。但是许多程序对于各种各样的服务是有用的,包括 SaaSS 的和非 SaaSS 的。编写和发行这些程序是很有用的(最好是在 AGPL 下),这样人们就可以用它们建立非 SaaSS 服务。

译注

  1. 根据 GNU 官方的说明,Affero 通用公共许可证第 1 版不是一个 GNU 许可证,但它设计的目标与 GNU AGPL 类似。