Library A is licensed under GPLv3. I want to write a program that uses that library as a dependency (programming against interfaces and using classes in that library), so I have to put my own program under GPLv3 as well, or under GPLv3 with a linking exception.
I also need a second library B which is licensed under the Apache license 2.0, which is compatible with GPLv3 so it is fine to use it with my program.
Library B directly or indirectly depends on library C which is e.g. Eclipse Public License which is compatible with Apache but not compatible with GPLv3.
My question: is it possible to distribute my program like this or would that be a violation of the GPL?
This is all about dependencies of Java libraries on other java libraries as described by Maven. So X depends directly on Y means that the library X lists library Y in their pom file, while X depends indirectly on Y means that X has some library Z in their pom file which in turn has Y in their pom file.
The comments include the basic answer, but not much in the way of overcoming the obstacle. Unfortunately, yes, the entire chain of dependencies must have compatible licensing when you distribute your program.
Your have several legal options:
- Find a free library with a compatible license,
- Implement the functions you need yourself,
- Request a GPL-compatible license/release from the library owner (which they may not be able to offer legally or may not want to offer at all)
Perhaps implementing it yourself is the only alternative. If so, consider making your implementation a GPL library, even if it is far more basic than the GPL-incompatible library. This is how open source software grows.
Disclaimer: Not a lawyer. Maybe there are more options, but these are the only ones I’ve ever seen.