根据 AGPL-3.0 许可的图书馆的网站声明如下(重点是我的):

AGPL-3.0 许可证

此 OSI 认可的许可证专为学生和爱好者设计,倡导开放协作和知识的自由交流。

它要求旗下所有软件和 AI 模型都必须开源。更重要的是,任何包含 AGPL-3.0 组件的大型项目或软件都必须采取相同的开源立场。

根据我的理解,AGPL-3.0 仅要求您向与衍生软件交互的任何人提供源代码访问权限。这并不一定意味着开放源代码,因为我只能将其披露给我的软件的用户。但是,上面的段落似乎与该概念相矛盾,并表示衍生品也必须开放源代码,而不仅仅是提供给衍生软件的接收者。开放源代码意味着任何人都应该有权访问衍生品的源代码,无论他们是否与衍生软件交互,这与向与其交互的人提供源代码访问权限不同。

该段落是否误解了 AGPL-3.0 许可证,或者是否由于原始代码是公开的而有这样的要求?


最佳答案
3

您似乎将其设置为二分法 – 在仅向用户提供源代码和完全开源之间进行选择 – 但事实并非如此。

您说得对,GPL 要求您只向二进制文件的接收者提供源代码,而 AGPL 则将该要求的好处扩展到通过网络与二进制文件交互的个人。但您可能忽略了一点,即当您向这些人提供源代码后,他们自己可以根据 [A]GPL 的条款使用该源代码。

所以:

  • 不,你不必将源代码提供给二进制文件接收者以外的任何人,在 AGPL 的情况下,任何通过网络与二进制文件交互的人都可以,但是
  • 接收者可以将其再提供给任何人,并且如果他们愿意,他们可以在这样做之前对其进行修改。

这并不自相矛盾。自由软件始终关乎软件用户的权利:而不是开发者、版权持有者或地球上其他人的权利。如果您使用该软件,您就有权复制它、修改它(以及通过源代码进行修改的权力),以及分发原件或修改后的软件副本的权利,后者包括根据版权法被归类为衍生作品的东西。

您说得对,您只需要将源代码的授权副本传递给您的用户。不过,这可能比您想象的更接近于立即将其公开给所有人:

假设我是您的用户之一,与您的 AGPL 软件交互。因此,现在我有权根据 AGPL 从您那里获取源代码。AGPL 许可证是一种开源许可证,它授予我对软件进行任何操作的权利,包括根据 AGPL 向任何人公开提供该软件。

鉴于此,引用的段落在我看来是正确的(尽管从技术上讲,只需要向您的用户提供源代码)

AGPLv3 是现存最强大的版权许可证之一。

AGPLv3 许可证(无第 7 节的附加许可)适用于所有静态和动态链接到 AGPLv3 许可软件的库和软件(系统库除外)。它适用于源代码、构建脚本和签名密钥(用于安全启动)。

这意味着如果您的代码链接到 AGPLv3 许可的软件,那么整个组合都受 AGPLv3 的条件约束。

任何接收此组合的二进制文件的人和/或任何通过互联网等计算机网络与此软件组合交互的人,都有权作为 AGPLv3 下游许可证持有者获得该组合的完整源代码(对应源)。

作为 AGPLv3 下游许可证持有者,他们可以使用、修改、分发(比如将其放在公共 GitHub 存储库中)、通过计算机网络进行交互和/或出售此组合,但同样须遵守 AGPLv3 的条件。

因此,实际上,你的代码也获得了 AGPLv3 的许可。它成为了开源软件。

您的代码可以逃避这种情况的唯一机会是,它未链接到 AGPLv3 许可软件,并且仅通过 TCP 等进程间通信方法与 AGPLv3 许可软件进行通信。

1

  • 我认为您的回答没有充分解决私下分发某些开源内容与“开源”公开提供(引用问题的措辞)之间的关键对比。


    –