The NetworkManager library is released under GPLv2 license (https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/COPYING?h=1.12.0).

Some of the build scripts are GPLv3 (some having the autoconf exception).

Under which license is the built library under?

  • 2
    If the build scripts don't inject any GPLv3 material in the output, the build product would be derived from the GPLv2 sources whose material makes up the substance of the build output, per this GPL FAQ item about program output. However, I don't know if that's how this particular project works. I'm also interested in how the GPLv3 (which is GPLv2-incompatible) build scripts interact with GPLv2's definition of source code as including "scripts used to control compilation and installation of the executable." – apsillers Jul 18 '18 at 12:28
  • @apsillers: The source code is under GPLv2+, so it is compatible with GPLv3. That does not make it less interesting if a few GPLv3 build scripts could make the whole software GPLv3. – Bart van Ingen Schenau Jul 18 '18 at 16:33

The GPLv2 requires that the corresponding source of a GPLv2-licensed binary is distributed under the terms of that GPL. The corresponding source includes any build scripts. As GPLv3-licensed build scripts cannot be distributed under the terms of the GPLv2, this combination is not possible.

However, that is not the case for NetworkManager:

  • AFAIK the NetworkManager source code is licensed only under the GPLv2+, with no GPLv3 build scripts.
  • Even if there were GPLv3 build scripts, the binaries could be distributed under the terms of the GPLv3 because the source is under GPLv2+.
  • (Also, the requirements to make the corresponding source available only trigger when you distribute binaries – source distributions might be fine.)

NetworkManager does use Autoconf, which is licensed under the GPLv3+ plus the Autoconf Exception. When using Autoconf to create a source distribution then Autoconf copies parts of itself into that source distribution. (A source distribution is not necessarily the same as the corresponding source in the sense of the GPL.)

Does the use of Autoconf in a project subject that project to the GPLv3? Quite likely not, due to the Autoconf exception that gives you extra permissions: “You have permission to propagate output of Autoconf, even if such propagation would otherwise violate the terms of GPLv3.” I.e. as long as the generated configure scripts etc. are distributed without modifications you can use Autoconf to build source distributions under any license.

An argument could be made that configure.ac scripts should be subject to the GPLv3 because they link with Autoconf-provided macros. The validity of this argument hinges on whether the configure.ac file is better described as an M4 program that links with the Autoconf macro library (i.e. constitutes a derived work), or as input data that is processed by the Autoconf system (i.e. is an independent work). I'd see Autoconf in analogy to other languages and preprocessors such as Bash, Perl, and Bison. Here, there seems to be clear consensus that input files are completely independent works from the language implementations, even when the language implementation offers mechanisms to call into GPL'ed code.

  • Actually you are right. The source code doesn't contain any GPLv3 files. I scanned an archive that contained all the build artefacts (also the build output files). – ossx Aug 10 '18 at 9:20

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.