开发人员通常认为软件许可要求是法律部门的明确责任。有这么多可用的开源组件和许可要求的含义,每个开发人员都应该至少对这些许可是什么以及每个许可如何影响他们的软件有一个大致的了解。
考虑到项目可能遇到的下游影响,每个团队都需要审查其软件的所有许可要求。在发布任何更新或修改的软件之前,组织需要进行完整的许可证合规性审计,在项目的每个阶段都这样做可以避免将来出现问题。其中一个应该研究的许可证条款是GNU Affero 通用公共许可证(AGPL)。
在讨论 AGPL 许可证之前,了解它的来源很重要。1988 年,理查德·斯托曼 (Richard Stallman) 编写了他的通用公共许可证 (GPL),旨在赋予创作者始终保持其软件开源的权利。GPL 目前处于其第三版 (GPLv3) 中,因为之前的文本存在一些问题,造成了一些漏洞。
作为GPLv3的一部分,自由软件基金会 (FSF) 提供了两种额外类型的许可证,即较小的通用公共许可证(LGPLv3) 和 Affero 通用公共许可证 (AGPLv3)。通用公共许可证的 AGPL 版本旨在对使用它的所有软件强制执行完整的版权。
在标准 GPL 许可中,互惠条款在开发人员发布软件时生效。Copyleft 原则旨在将所有源代码提供给更广泛的开源社区。使用 AGPL,软件团队可以确保对代码库的所有更改都可供公众使用,即使在服务器端应用程序上也是如此。
确定 AGPL 3.0、LGPL 3.0 还是标准 GPL 3.0 是否最适合团队取决于软件的最终意图。Copyleft 许可证非常适合希望确保所有后续更改都可供社区使用的开发人员,而像MIT许可证这样的许可许可证使他们在未来可以更自由地进行修改。
尽管任何人都可以使用AGPL V3许可证,但它在组织中并不流行。对AGPL软件的任何后续版本施加的限制使得在存在竞争性商业利益时难以采用。
大多数公司更喜欢允许他们自由使用开源组件的使用许可证,并在未来将其软件版本转化为商业产品,而不是使用像AGPL这样的版权保留许可证。
与使用 AGPL 等 Copyleft 许可证相比,大多数公司更喜欢使用允许他们自由使用开源组件并在未来仍将其软件版本转变为商业产品的许可许可证。
Copyleft许可证执行了Stallman在其GNU宣言中首先支持的原则。在20世纪60年代,开发人员公开共享所有帮助他人的源代码是很常见的,这创造了一种社区和协作的感觉。到了20世纪80年代,随着组织开始在其源代码上应用版权,这一趋势不再受欢迎。Copyleft与版权相反,它强制执行使用、修改和重新分发任何具有Copyleft许可证(如GPL)的源代码的权利。
AGPL V3许可证是一个强大的copyleft许可证,它在从任何以前的工作派生的所有组件上强制实施开源。它弥补了服务器端的漏洞,即如果软件不发布,源代码就不可获得。AGPL将用户定义为访问服务器端应用程序(如果它是面向公众的)的任何人。对于驻留在组织网络内的应用程序,AGPL不会触发源代码的发布。
将GPLv3许可证下的作品与AGPL软件相结合的用户可以保留GPLv3许可证对未修改作品的权利。GPLv3工作的任何修改版本都必须使用AGPLv3许可证。
AGPL由于其激进的开源许可,目前只在不到1%的开源项目中使用。
材料来源于 跳转
假设您正在使用 AGPL 库 iText 创建 PDF 文档。iText 是一个允许人们创建 PDF 文档(通常)的库,您正在使用 iText jar 创建 PDF 发票(一个非常具体的用例)。通过这样做,您创建了一个派生作品。如果您删除 iText,您的代码将不再有意义:它不再创建发票。如果您将 iText 替换为其他内容(例如 PdfBox),它也不再起作用。
这取决于。
假设您正在批量使用您的应用程序。每天,您都会创建前一天的所有发票,并将它们存储在服务器上。想要查看发票的人可以上网并从该服务器获取发票。
在这种情况下,您可以在不启动 AGPL 的情况下使用 iText,因为您以完全隔离的方式使用该库:您根本没有分发它,因此也没有要分发的源代码。
您不会批量创建发票,而是即时创建它们:例如,每当用户购买东西时,他都会触发创建 PDF 的流程。
该过程涉及要执行的 iText 代码。如果 iText 是 GPL,则不必分发代码,因为您不是分发副本,但由于 iText 是 AGPL,copyleft 适用:
Copyleft 允许每个收到作品副本的人复制、改编或分发该作品,只要任何由此产生的副本或改编作品
也受相同的 Copyleft 许可方案的约束。
您的衍生作品
(例如创建 PDF 发票)是对 iText(创建 PDF)的改编,并且您的作品受相同的 copyleft 许可证的约束
。
在法庭上,法官将查看用户的参与情况。
用户没有以任何方式触发受版权保护的软件
,则您不必透露您作品的源代码。用户触发执行受版权保护的软件
,则适用许可证
。在 AGPL 的情况下,您必须向用户披露您的源代码。这不是我的观点,这是不同的律师教给我的,例如(Crealaw、Stibbe、Portelio)。
例如,参见 CreaLaw 的以下幻灯片:软件受版权法保护。
如果用户满足特定条件,GPLv3 会授予用户权限:
换句话说:copyleft 启动了,即使应用程序在网络上运行,AGPL 也会启动 copyleft
在这种情况下,您必须在 (A)GPLv3 下分发您的应用程序:这是 copyleft 概念所固有的。
假设我写的不是真的,那么 AGPL 软件就有可能成为闭源软件的一部分。这与 FSF 的精神背道而驰。