Continuing this question:

I want a license L which is generally like GPL, but allows us to do the following:

  1. License our software under both L and a commercial license.

  2. Require that every patch (or more generally, every change, or at least publicly distributed change) by a third party is both available to general public as L and available to us to license it commercially as a part of our commercial version of the software.

I will not prevaricate: The main purpose of this project is to earn money (however the money are used to support other more generous free projects). But it would be nice also to create useful OSS software under this project.

I also want this option: The license L should be compatible with GPL in the sense that GPL software can incorporate L-licensed software.

Oh, well, it seems for me that the "option" contradicts to my other requirements: If it can be incorporated into GPL software, then it can have GPLed patches and we cannot incorporate these patches into our commercial version. So, is it possible to do it with the "option"? Well, I don't expect that people would often change the license from our OSS license to GPL when making patches. So it (the "option") should work in practice even if it is not required by the license.

Oh well, it is also required that if a Python module licensed under L, then every Python script or module importing it is also licensed under L. (See also this question.)

Maybe, Mozilla Public License?

Also note that our product is a Python library. Please provide any advice you can on licensing such libraries. Particularly, if we want it to be wide-spread among FOSS community, do we need to license it under GPL? Which other licenses are good choices for this?

2 Answers 2


Short of writing your own licence, which you are advised not to do, the usual way to proceed (as I said in the answer to the other question) is a contributor licensing agreement, in which contributors explicitly permit you to release their contributions under other terms than the default ones. With that in place, you can license these contributions how you wish (eg, GPL for the GPL version, commercially for the commercial version). This really is the usual route for dual-licensed projects; for MySQL, contributors must complete the Oracle CLA, and most other dual-licensed projects will have similar.

The downside is that a CLA is often a big turn-off for contributors. They may ask themselves why they should volunteer their work into your project knowing that you're going to turn round and sell it, and that question is at the root of the problem here. The sort of people that are likely to contribute to a GPL'ed project are often the sort of people who like to see their work stay free to help as many others as possible, and they may not wish to enable you to do what you want, whether that is achieved via a licence, a contributor agreement, or via some other means.

  • 2
    You are confusing CLA (Contributor License Agreement) and CTA (Copyright Transfer Agreement): only the first one is absolutely necessary, while the second one is a much bigger turn-off.
    – Zimm i48
    Mar 21, 2017 at 14:54
  • 4
    @Zimmi48 I think my underlying point is that a CLA is already quite the turn-off, because it helps make software non-free. I entirely agree with you that a CTA is much bigger one, but I haven't discussed those. Could you perhaps point to a CLA that "asks for much less than that" (NB, quote from deleted comment) but would still permit proprietary relicensing?
    – MadHatter
    Mar 21, 2017 at 15:33
  • Could you perhaps point to a CLA that "asks for much less than that" but would still permit commercial relicensing? cla.github.com/agreement but it permits commercial licensing by anyone actually. I don't have a good example in the case of copyleft software.
    – Zimm i48
    Mar 21, 2017 at 15:37
  • @Zimmi48 in any case, I think you are right that my argument failed to clearly restrict itself to CLAs, and I have amended it slightly so that it covers only those lesser (though still large) evils. Hopefully this reads a bit better.
    – MadHatter
    Mar 21, 2017 at 15:39
  • The main downside to a CLA is that it lacks the immunity to forking that OP seems to want.
    – Kevin
    Mar 31, 2017 at 16:24

Your first statement of the problem (every change...is both available to the general public as L and available to us) is not possible as stated with any open-source software license that's available on the market, for the simple reason that you are demanding publication of every modification, and that is a very unusual demand which probably contradicts the very definitions of "open-source" and "free".

You seem to be tangentially aware of this when you state that you might exempt things which are available to the general public, but note that "available to the general public" is a very difficult condition to state legally; e.g. if I state at the bottom of a blog post discussing how we patched our system "email me if you want the patch-file", does that count? You'd have to hire a copyright lawyer to get the legal phrasing right. For example, Creative Commons has to define "Share" as "provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them."

You can potentially restrict this condition to something which might be more friendly to open source, "every patch that we can get our grubby little hands on," so that Alice's decision to share her patch with Bob does not matter until, say, Bob shares that patch back with you.

Probably the easiest way is to use a file-based copyleft license which allows distribution with noncovered code, and the clearest example that I know of for such a license is the CDDL. The idea is that the "core" of your product is released open-source under CDDL but allows for a mechanism where "plugins" of some form offer advanced functionality. So you distribute a bunch of plugins with the proprietary version, and they remain proprietary. Someone else who develops new plugins may choose not to release them under the CDDL to you, but at least any modification you find to the files that you originated can be merged back into those files, and you can bundle in CDDL plugins, too.

Aside from something very niche like that, I think you're facing a very difficult attempt to fit a square "proprietary" peg into a round "open-source" hole.

  • I've mentioned that I want a license L generally similar to GPL. I meant that I want any code which uses our code to fall into L also automatically. It seems that CDDL (and MPL) don't fulfill this my requirement. What further licenses there are?
    – porton
    Mar 21, 2017 at 20:40
  • There are lots of open-source licenses but your requirement is a strong-copyleft license with a qualified exception to the copyleft terms, namely that everyone grants you a right to use their copyrights under a non-copyleft license. I am telling you that this does not exist. Every project which has been dedicated enough to copyleft to create a strong-copyleft license has been too dedicated to copyleft to create qualified exceptions to it. The best you can get is a weak-copyleft license used appropriately.
    – CR Drost
    Mar 21, 2017 at 21:02
  • Why weak? Why not GPL in this case, as this cannot be solved even with weak copyleft?
    – porton
    Mar 21, 2017 at 21:26
  • 3
    L has to be strong copyleft because you said "I want any code which uses our code to fall into L also automatically" -- you have expressed objections to the possibility of bundling your unmodified code with other code and releasing under a license. L has to be weak copyleft because you want to take someone else's copyrighted work and release it in a proprietary distribution. That is your fundamental conundrum.
    – CR Drost
    Mar 22, 2017 at 14:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.