I remember, not all that long ago, Tom Albers (among others from the release team) launching a licensing initiative; this was partly to push for acceptance of GPLv3 in KDE code (since we have dependencies using GPLv3, we need to update to something compatible and GPLv2-only is not compatible). Today, I started looking at the code in KDE SVN in response to an academic query about the licensing of our software. I looked at headers in kdesupport. Granted, it’s not a “core” SVN module, but it does ship all kinds of things that KDE really needs. And headers, well, sometimes headers are just small and trivial and boring. So I was expecting a few issues. There always are. What I wasn’t expecting was for over 200 of the 1083 header files to be missing copyright headers that our tools recognize.

It also turns out that our license tool has a bug and rejects the 51 Franklin street address that the FSF currently occupies (well, according to the website it does), so we need to fix that up before starting to fix that up.

The EBN reports on bad copyright headers, so you can get a partial report from there. For instance, Eigen has a bunch of files under GPLv2+; license policy is that libraries must be LGPL (but that’s policy as codified in the tools; I’m not really convinced that these should apply to kdesupport as well). Taglib has one missing license warning – unicode.h is derived from a public domain work but the license text is not recognized. akode is full of unlicensed code.

The whole exercise was thus quite surprising to me; it also means I can’t answer all that accurately what the licenses are that we use in kdesupport + libs + pimlibs + base. Most of it will be (L)GPLv2+ or (L)GPLv3, but we need that to be explicit.

You can check your own code as well; the license checker is in KDE SVN. You can get it with svn co svn://anonsvn.kde.org/home/kde/trunk/quality/krazy2/plugins, it’s the license script in there. Krazy plugins are (generally) perl scripts with a strict interface; this means you call the script with –verbose for a long report and a list of files to check. For instance, you can do perl license –verbose find src/ -name *.h to check all your header files. Similar check for cc, cpp, etc. if you find a file that is licensed properly but isn’t recognised, please drop me and Allen a note (or kde-quality@). Keep in mind:

  • Each file itself needs a copyright header. Don’t defer to a COPYING file elsewhere.
  • Put your name in it if you’re the primary author. Put your name in it if you have provided a sizeable contribution that may be copyrightable (i.e. has some creative merit).
  • Don’t use variations on the licensing language. The EBN / Krazy checker is kind of strict about what’s acceptable because the advice we have obtained on licensing issues is that it’s best to be (a) recognizably the same as another license (b) complete. So put that whole GPLv3 blurb in there, not just “This file is licensed under the GPL”; the blurb may be cut-and-pasted out of say, kdelibs/kdecore/services/kservicegroup_p.h or use the blurb in the licenses/GPL_V2 (or _V3) file in kdelibs/licenses.
  • Doing all that makes it much safer to distribute the code for everyone. Questions and comments on the tools themselves can best go to kde-quality@; things about license policy to kde-licensing@ with a CC to me. And then write more Free Software (under the two-clause BSD license, for instance).

The Wayback Machine ⏲ does not archive everything. Broken image links are marked with a 💔.