Suppose there is a piece of software that uses GPLv3 headers, but the code that includes said headers is not under the GPLv3 itself, but rather a GPL-compatible license, say MIT Expat. Thus the binary produced by the MIT and GPLv3 source itself must be distributed under the terms of the GPLv3.

As this "core" source is not under the GPL and as the GPL does not permit distribution under an NDA: is it in violation of the GPL to distribute said MIT and GPLv3 source (header source) under an NDA prohibiting (only) the distribution of said MIT source?

Does it then follow that it would become impossible to distribute produced binaries because the accompanying source code (tied up in an NDA) cannot be shipped with the produced GPLv3 binary (violating the GPL)?


The GPL requires that the corresponding source of a GPL-covered binary is made available under the GPL license. If some parts of the source use the MIT license, this is fine because MIT is compatible to the GPL license.

Adding an NDA breaks this compatibility. From a downstream perspective, MIT+NDA can no longer be considered MIT-licensed, and is just some proprietary software.

Thus, you have reached the correct conclusion: if the GPL would require the corresponding source to be made available under the terms of the GPL, and the NDA prohibits the corresponding source to be made available at all or under incompatbile terms, then the only legal solution is to not distribute the software at all. Of course, purely internal use is still allowed.

A possible solution is to rearchitect the software into two clearly separate parts: a GPL-covered part and a proprietary part, with these two only communicating “at arms length”. For example, invoking the GPL-covered ffmpeg software as a command line application from proprietary software is fine, but linking it with the proprietary software would run into exactly the issues of this question.

| improve this answer | |
  • 1
    Another situation where the GPL license can coexist with an NDA is when you are contracted to make changes to a GPL codebase and are expected to deliver those changes only to the company that contracted you. Ref gnu.org/licenses/gpl-faq.html#DevelopChangesUnderNDA – Bart van Ingen Schenau May 5 at 10:08
  • What implications does invoking a software like ffmpeg from arms-length have if your software is dependent on said GPL software for its functionality? – ForEachQ May 8 at 13:35
  • @ForEachQ Dependency relationships don't directly matter. What matters is whether your software is a derivative work of the other software, in particular whether they effectively form a single combined program. But copyright law is not entirely clear here. – amon May 8 at 13:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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