Skip to content

[th/keyfile-relicense-as-lgpl] relicense keyfile code under LGPL-2.1+

Thomas Haller requested to merge th/keyfile-relicense-as-lgpl into master

NetworkManager's source code is in parts GPL-2.0+ and LGPL-2.1+ (for libnm).

This causes friction, and we attempt to relicense all the code. See RELICENSE.md.


Anyway, this is not about relicensing all code, but only the keyfile handling part. Keyfile is the native file format of NetworkManager to read and store connection profiles. Historically the code as part of core and is thus GPL-2.0+ licensed.

We want to expose keyfile functionality via our client library libnm. Allowing other applications (except NetworkManager daemon) to read and write the file format has many useful applications. For example, nm-connection-editor could import a profile when you double click on it. Tools like nmcli/nmtui could operate on files directly, and not only configure profiles by talking D-Bus. A tool could use the file format for backup of profiles. nmcli could print profiles to stdout and consume it from stdin.

The differing licenses are a problem.

We could instead add a new library libnm-keyfile.so or libnm-gpl.so, that only contains the keyfile part. There are two major problems there:

  • the separate library would only be to workaround the licensing limitation. Keyfile code brings no additional dependency to libnm.so, and keyfile is a first class citizen. We usually would want to to be part of libnm.so.

  • currently keyfile uses internals of libnm-core that are not public API of libnm.so. If keyfile support is in a separate library, it needs to be adjusted to only rely on the public API of libnm. Keyfile code is just 5000 LOC. Instead of rewriting it to get an inferior solution with a libnm-gpl.so, we would instead write it from scratch (which is however relatively hard, because we would have to be sure not to "look" at GPL code, and there are some quirks for handling certain properties).

Writing from scratch is quite some effort, and the outcome would only be to drop the GPL code. That doesn't seem a useful thing.

So, Instead, I ask whether the copyright holders agree to relicense the keyfile code so that it can be included in libnm.so.


I think this affects code with the following copyright holders:

  <bgalvani(at)redhat.com>
  <blueowl(at)centrum.cz>
  <daniel(at)gnoutcheff.name>
  <danw(at)redhat.com>
  <dcantrell(at)redhat.com>
  <dcbw(at)redhat.com>
  <evan(at)ebroder.net>
  <fgiudici(at)redhat.com>
  <floe(at)butterbrot.org>
  <j(at)bootlab.org>
  <kmaraas(at)gnome.org>
  <lkundrak(at)v3.sk>
  <luzpaz(at)users.noreply.github.com>
  <martinpitt(at)gnome.org>
  <michael.i.doherty(at)intel.com>
  <pavlix(at)pavlix.net>
  <pmarti(at)warp.es>
  <rafaelff(at)gnome.org>
  <rstrode(at)redhat.com>
  <tambet(at)gmail.com>
  <tgraf(at)redhat.com>
  <thaller(at)redhat.com>
  <walters(at)verbum.org>
  <yurchor(at)ukr.net>
  Red Hat, Inc.
  Novell, Inc.
  Intel Corporation

If I miss anybody, please point it out.

I will reach out to the mentioned parties. If you didn't give your agreement yet, please report back.

Note that in RELICENSE.md we seek general agreement from copyright holders to relicense ALL GPL-2.0+ code in NetworkManager. Instead of only agreeing to relicensing keyfile, I would prefer instead to collect agreement to the entire relicensing, so that similar issues can be avoided in the future.

Merge request reports