LGPL 2.1
大多数 Hibernate 项目根据 LGPL v2.1 发布。
Hibernate 维护者一直将 LGPL 理解为仅允许 Hibernate 被开源和专有代码使用,而不会对这些独立代码的许可或分发产生任何影响。这种解释适用于无论包含 Hibernate 代码的二进制文件是设计为在 JVM 上运行,还是通过使用 GraalVM 和 Quarkus 等工具和框架生成的原生镜像。
更详细的解释
LGPL 的最初版本是在 1991 年编写,当时考虑到嵌入式 C 编程,Java 尚未出现。这有时会导致人们质疑如何在 Java 环境中解释 LGPL。LGPL 中的“L”最初代表“库”;LGPL 的设计是为了让库能够在根据普通 GPL 可能不允许的情况下被专有应用程序使用。因此,LGPL 被归类为“弱版权”许可证,与被视为“强版权”的 GPL 相反。LGPL 中的“L”后来被重新解释为“较小”,以传达这样一个事实,即它的范围比 GPL 更有限,并不仅仅用于库。
到 2000 年代,LGPL 已成为使用最广泛和最知名的开源许可证之一。在此期间,一些 Java 开发人员自然地开始将 LGPL 应用于他们的项目,将其视为 GPL 的更宽松且更灵活的替代方案。对于像 Hibernate 这样的项目,LGPL 在 Java 环境中有一个简单的解释,可以概括如下:
-
LGPL 要求仅在分发时触发;内部使用不受限制。
-
从 LGPL 许可的源代码构建的二进制文件的分发者必须通过提供仅对应于二进制文件中受 LGPL 覆盖的部分的源代码来遵守 LGPL。
-
没有要求发布仅仅导入受 LGPL 覆盖的包或类的独立代码。这种独立代码可以根据不同的许可条款,包括专有许可条款或其他开源许可证。
-
-
如果分发,对受 LGPL 许可的源代码的修改必须根据 LGPL 许可。
自从该项目采用 LGPL 以来,一直是 Hibernate 维护者对 LGPL 的一致解释。
ASL 2.0
一些 Hibernate 项目是在 ASL 2.0 下发布的,Hibernate 团队正在 努力将更多项目迁移到该许可证。