We have a GitHub repository where we distribute our source code. For that, we want to use a really permissive license, like MIT. Of course, some of our projects have GPL or similarly licensed dependencies. However, we do not include their source code there but rather (since we're using maven) list them in our POM files.

It is my understanding that, from a copyright point of of view, our source code represents a new "creative work" so we can choose any license we want for it. This is so because, the source code we distribute is not a mere "derivative work" of the dependencies (rather the only references to them are the names of some classes and methods).

However, when someone downloads and builds the project he is linking together or project and the dependencies and so possibly creates a derivative work (I don't want to dive into the dynamic vs static linking debate here). Thus, the license terms of the compiled project would be different from our source code.

Is this a valid way of licensing the repository?

  • The dynamic vs static linking debate is at the heart of your problem. Whether you can validly license your core project under MIT will depend largely on how that linking to the GPL dependencies works. Commented Mar 24, 2017 at 15:59
  • 1
    @RobertHarvey: static vs dynamic linking only matters with the LGPL. Commented Mar 24, 2017 at 16:13
  • @RobertHarvey unless he is using Maven with something other than Java (I have never seen it) the classpath exception also applies.
    – user22815
    Commented Mar 24, 2017 at 16:34
  • How about the EPL v2.0? I have checked that they have their own definition of derivative work?
    – Bionix1441
    Commented Oct 16, 2020 at 9:33

1 Answer 1


Is this a valid way of licensing the repository?


Your software, being designed to use the other libraries, is still a derivative work whether you like it or not, regardless of whatever build system you are using.

If you use a GPL software and do not communicate with it 'at arms length', your work must be distributed according to the terms of the GPL. Something being a derivative work isn't dependent on what's checked into source control, it's dependent on what was contributed to the creative juices in our brains when making something. If you use the GPL software, it was blended with your own creative output.

Along that concept, when someone downloads your source and builds the software, that person is not responsible for creating the derivative work. Building software is not a creative endeavor, it virtually by definition cannot result a derivative work. Instead, the derivative work was already created by you, in the creative authorship of writing the software. The person building it is just applying a mechanical translation of it.

You cannot avoid this responsibility by saying "yeah well I'm not distributing the GPL libraries so I don't have to obey the GPL". I don't need to hand out copies of "Lord of the Rings" to make my stories about Frodo Baggins and Gandalf derivative works. Because your work is a derivative work, you must abide by the rules of the source libraries, which includes the GPL. If you want to argue with the FSF or a judge/jury about that point go ahead but such an argument is off-topic on this site.

The short answer is you must get rid of your GPL dependencies, or license your software according to the GPL.

  • I think the example of novels doesn't apply here. Unlike with Lord of the Rings where the reference to Frodo Baggins makes it perfectly clear that this is a derivative work, I can very well re-implement the library in question using a similar API without running into any copyright issues. This is the reason, I want to do this setup in the first place. I want to distribute our core project with a permissive license so others can choose if they are ok with using a GPL-licensed library or rather use something else. Commented Mar 24, 2017 at 17:28
  • I think here they advocate the opposite. Do you have any references? Commented Mar 24, 2017 at 17:41
  • @SvenBuechel: if you want people to pick their own libraries, your software needs to communicate "at arms length" with those libraries. Read the GNU FAQ and other FSF articles to get up to speed on this stuff. Commented Mar 24, 2017 at 18:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.