AGPL 是 GPL 的一个补充,在 GPL 的基础上加了一些限制。GPL 的约束生效前提是该软件”发布”——有的公司使用 GPL 组件编写 Web 系统,但不发布系统,只用这个系统在线提供服务,这样就避免了开源系统代码。而 AGPL 要求:如果云服务(即 SaaS)用到的代码是该许可证,那云服务的代码也必须开源。这也是商业项目选型时需要慎用 AGPL 组件的原因。
什么是 copyleft 许可证
Copyleft 许可证执行了 Stallman 在其 GNU 宣言中首先支持的原则。在 20 世纪 60 年代,开发人员公开共享所有帮助他人的源代码是很常见的,这创造了一种社区和协作的感觉。到了 20 世纪 80 年代,随着组织开始在其源代码上应用版权,这一趋势不再受欢迎。Copyleft 与 Copyright(版权)相反,它强制执行使用、修改和重新分发任何具有 Copyleft 许可证(如 GPL)的源代码的权利。
什么是 AGPL 开源协议
GPL 与 AGPL 的对比如下:
| 协议 | 全称 | 约束要点 |
|---|---|---|
| GPL v3 | GNU General Public License | 修改和使用其代码都需要开源,但这是建立在软件分发的基础上;如果使用代码作为服务提供而不分发软件,则不需要开源——这实际上是 GPL 协议本身的缺陷 |
| AGPL v3 | The GNU Affero General Public License | 除非获得商业授权,否则无论以何种方式修改或者使用代码,都需要开源 |
换言之,GPL 的”传染性”只在被分发时触发,公司可以只在线提供服务、不分发软件来规避开源义务;AGPL 则堵上了这个口子——SaaS 场景同样触发开源义务,除非另行取得商业授权。
哪些组件使用了 AGPL v3
itextpdf 是比较有代表性的一个。
iText
使用 itext 一定要了解其版本历史和 License 问题。在早前版本使用的是 MPL 和 LGPL 双许可协议,在 5.x 以上版本中使用的是 AGPL v3——这个协议意味着,只有个人用途和开源的项目才能使用 itext 这个库,否则是需要收费的。
| 版本线 | 更新时间 | 许可协议 | 说明 |
|---|---|---|---|
| iText 0.x-2.x / iTextSharp 3.x-4.x | 2000-2009 | MPL 和 LGPL 双许可协议 | 最后的更新是 2009 年,版本号 iText 2.1.7 / iTextSharp 4.1.6.0 |
| iText 5.x / iTextSharp 5.x | 2009-2016 | AGPL v3 | 公司化运作,并标准化和提高性能;只有个人用途和开源项目才能使用,否则需要收费 |
| iText 7.x | 2016 至今 | AGPL v3 | 完全重写,重点关注可扩展性和模块化;不使用 iTextSharp 这个名称,Java 和 .NET 版本统称为 iText;要求 JDK 1.7+ |
iTextSharp 被设计成 iText 库的 .NET 版本,并且与 iText 版本号同步,iText 5.0.0 和 iTextSharp 5.0.0 同时发布;5.x 线上新功能不在这里面增加,但是官方会修复重要的 bug。
各版本线引入包的 GAV 如下:
iText 2.x(MPL/LGPL 双许可时期):
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
iText 5.x(AGPL v3 时期):
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.3</version>
</dependency>
iText 7.x(AGPL v3 时期):
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.2.2</version>
<type>pom</type>
</dependency>
注:iText 协议变化后,GitHub 上有团队基于 4.x 版本(MPL 和 LGPL 双许可协议)fork 了一个分支成为 OpenPDF,并继续维护该项目。
Berkeley DB
Berkeley DB 是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似。它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL 解析等步骤。
参考文章
- https://blog.csdn.net/meanshe/article/details/125671349
- https://blog.csdn.net/iteye_16581/article/details/82271838
系列导航
- 上一篇:常见软件开源协议详解
- 下一篇:国产开源:木兰许可协议系列
- 实用提醒:商业项目中处理 PDF 等需求时,留意 iText 高版本的 AGPL v3 约束;国内工具库如 Hutool 采用木兰宽松许可证,对商业使用更友好。