[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Nuitka - GPLv3 plus contribution copyright assignment

Hello everybody,

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 consequence that // 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 binary.

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:kayhayen@gmx.de
#     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 prevent
#     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 time to
#     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
#     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 following text:


   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 consider:

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 transfers copyright.

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 time now.

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.

Kay Hayen

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 Debian compatible.

Reply to: