Nuitka - GPLv3 plus contribution copyright assignment
I am a happy Debian user ever since Potato, and I am the author and
therefore potentially upstream of Nuitka, a Python compiler project of
mine. I am also aiming to become the Debian Maintainer for it.
I have created a package for Nuitka and it has technically evolved to
the point, where it comes down to legal issues. So please advise, we
don't want to put the burden on ftp-masters.
First my intent: I believe intent matters in copyright. Please do not
discuss if my intent is good or bad, or if my approach will be effective
or not for a project.
So my intent was to release "Nuitka" as Free Software in compliance with
the DFSG. My intent was also to make a commercially viable fork of
Nuitka impossible until at a later time I choose to allow it.
In order to achieve my intent, I have put Nuitka as a whole under GPLv3,
and make it clear in the generated source, that the parts of Nuitka
copied into the created source, are still GPLv3 and thus the compiled
source has to be GPLv3 compatible, and as such:
// This code is in part copyright Kay Hayen, license GPLv3. This has the
// your must either obtain a commercial license or also publish your
original source code
// under the same license unless you don't distribute this source or its
This prevents a viable commercial fork quite clearly. At least if it's
based on the ability to use Nuitka to hide the source code from people,
which is not something I want to permanently forbid, but at least I have
no issue to not immediately allow it.
But continuing, intent, I do not want the license to remain like this,
that is, I do want to be able to change it later on to a more liberal
license. (Originally I said "PSF", but I realized that it won't be
possible, as I won't have the paperwork to claim and prove full
copyright. Now lean towards ASF). I do want Nuitka to be "the" compiler
and as such the restriction can't last.
In order to be able to do that, I have included the following notice to
the Nuitka source code:
# Copyright 2012, Kay Hayen, mailto:email@example.com
# Part of "Nuitka", an optimizing Python compiler that is compatible and
# integrates with CPython, but also works on its own.
# If you submit Kay Hayen patches to this software in either form, you
# automatically grant him a copyright assignment to the code, or in the
# alternative a BSD license to the code, should your jurisdiction
# this. Obviously it won't affect code that comes to him indirectly or
# code you don't submit to him.
# This is to reserve my ability to re-license the code at a later
# the PSF. With this version of Nuitka, using it for a Closed Source and
# distributing the binary only is not allowed.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Please leave the whole of this copyright notice intact.
My worry is that I may get sued by a contributor, or have all kinds of
complaints, and therefore, in my mind, the copyright assignment, that so
far all substantial contributors accepted to be true, is needed. I also
need it, to e.g. allow one contributor, who works on Closed Source, to
use Nuitka for everything but Nuitka.
The precedent I found is the Apache License, which contains the
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
That is my very same intent, except that I do not want code to be
submitted under GPLv3, but for now copyright assignment. Once it's under
ASF, I can drop my own statement. I came up with this variant, that I
Submission of Contributions: Unless you explicitly state otherwise, or
have other terms in separate agreements regarding such contributions,
any contribution intentionally submitted for inclusion in the work
by you to the licensor shall be assigning copyright to recipients
of that submissions.
I removed myself from the special position, although I will want to make
it clear, that an update of Nuitka from me is not under that very
provision. Potentially making it say so as well.
That way, I hope to achieve the following:
a) Nuitka cannot be used for Closed Source until a time, where I am
ready to give up control over it. Such a time is in my mind, when it's
complete enough to not be taken away by a group of people that would
e.g. make it "fast now" and break the clean goals I have.
If you follow the project, you will see, that I have used the last year
mainly to achieve an outstanding compatibility. Nuitka supports all the
features of the language that you never though it would be possible.
I don't think I could compete with such an effort to make it fast now,
and therefore would be deprived of contributions.
b) Nuitka can be included with the current or an adapted statement that
Being included in Debian is an important goal of mine. On a social
level, on a feel good level, on a contributor level (many people
rightfully won't consider software not in Debian to be any good), and so on.
c) Nuitka can later be re-licensed to ASF 2.0 even though I accept
submissions from GPLv3 licensees.
As detailed above, the whole point. I would otherwise put Nuitka under
ASF 2.0 right now.
d) Patches submitted via Debian BTS to Debian and then forwarded to me
can be integrated into the GPLv3 Nuitka and be re-licensed to ASF2.0
This is a worry that I believe, the re-wording from above ought to address.
Coming back to intent:
I don't want to discuss my intent. I am not interested to discuss if my
approach is too paranoid and need not be, that may be true, but I don't
want to take the risk. This the work of most of my spare time for a long
I don't think it matters, but it's probably worth mentioning, if I go to
PyCON EU this year, I intend to also provide a time limit for Nuitka to
become licensed in a more liberal way for at least the generated code.
And what I would like to have:
Reading that ASF 2.0 and GPLv3 are compatible by both FSF and ASF, I am
confident, that the extra provision, making an option, is also GPLv3
compatible and compliant to the DFSG.
I hope it's easy for you to make such a statement. If there are any
further questions, I would gladly clarify. If there are any objections
to the wordings, I am willing to adapt them as you see fit.
PS: I am fully aware, that advice you give is not lawyer wise, but I
will still appreciate it if you help me achieve my intent, or make it