GPL 合规性,Java 和 Java 依赖项

GPL Compliance, Java and Java Dependencies

我正在从事一个以教育为中心的 FOSS 项目。我想确保任何衍生作品也可以公开提供给任何想要使用它们的人,特别是教育工作者。据我了解,GPL 和 LGPL 许可证以这种方式工作。

我的项目完全用 Java 和 Gradle 构建脚本编写。我已经包含了每个 class 的许可证、自述文件和 header。话虽如此,我有几个问题:

  1. 这个问题是否更适合不同的 stackexchange 站点?
  2. 我还需要做些什么来确保我的合规性?
  3. GPL 与 Java 兼容吗? Oracle Binary 许可证下的 Java 部分是否与 GPL 不兼容?
  4. 由于我的源代码和二进制文件可从 github 上的同一位置获得,这是否符合提供源代码的条件?还是我必须在每个罐子中提供所有来源?如果它是特定于平台的二进制文件怎么办? (据我了解,因为 bins 和 source 来自同一个 github 页面,所以它很重要)我是否应该在自述文件的 github 页面中添加一个 link 以防有人通过它获得副本第三方?如果我 link 到 sourceforge 上的(我的)二进制文件,我会因为他们不提供源代码而失去合规性吗?
  5. 我通过 Maven 使用许多 Apache Commons 库。 Apache 许可证是否与 GPL 兼容?
  6. 我需要提供构建项目所需的所有源代码以及构建脚本。 Gradle 中的 Maven 存储库 links 算作提供了构建项目所需的所有源代码吗?作为记录,只要用户有 Internet 连接,就可以编译项目并在一个命令中导出 javafx(平台相关)二进制文件。

我已经通读了 GPLv3 的常见问题解答及其合规性的一般准则,但它非常繁琐,我想确保我没有弄错。

如果您提供任何信息,我将不胜感激,即使它只能回答我的一小部分问题。

谢谢。

  1. 这里很好
  2. 我觉得还好。
  3. GPL 与编写的任何内容兼容(如果您决定这样做),无论您使用何种语言。这是关于您授予他人使用您所写内容的权利。它与 Java 定义或其实现无关。
  4. 按照 GPL 的规定提供源代码是为了为软件用户提供访问它们的途径。例如,根据书面请求。如果您的软件提到用户可以下载用于编译他正在使用的软件的源代码的地方,那很好。
  5. 在你的情况下是的,但请记住,兼容性有一个方向:当你使用使用 GPL 许可的代码片段时,你不能通过 Apache Commons 许可重新分发你的软件。请阅读此 Stack Overflow answer.
  6. 如果您使用此构建脚本来编译您的用户正在使用的软件,那么我会同意。