I could really use some help picking the right license for my project. The project is already released on github under the GPLv3 license but I have been made aware that this prevents uses that I want to allow.

My requirements are like this:

  • The project is a native windows library that will, due to it's nature, always be linked dynamically.
  • I want to allow the use of this lib in source or binary form for any not-for-profit use (open-source, closed-source, educational, company-internal is all fine to me) putting as little restrictions on the application license as possible.
  • I want to ensure that if someone makes changes to the lib or forks it they have to release those changes under a "similar" open-source license as mine
  • If someone contributes to my project (say via pull requests in contrast to a fork) I'd like to maintain control over the license of the project.
  • In case there is demand for commercial for-profit use (that is: a company want to sells software that has my library as an integral component), I want to be able to dual-license for that with different conditions, but I'd rather cross that bridge if/when I get there - which is probably never anyway. And I wouldn't then want to have to consult anyone who has ever contributed a 2-line diff.

Can I use Qt (which seems to work similarly) as a model? (LGPL for non-commercial use, contributor agreement to maintain ownership of the whole project, separate commercial license)

  • 1
    LGPL does not prevent commercial use in any way, see e.g. answers.google.com/answers/threadview/id/439136.html Only a few open-source licenses limit by use case, and none of them are considered "free" by organisations like FSF. If you want to use a free license, the kind of split you want to achieve is usually done by having a strong free copyleft license, which does not prevent commercial use, but is off-putting to commercial users. Then your alternative could be worth purchasing for them, to avoid need to open-source their own code. – Neil Slater Dec 25 '16 at 12:36
  • 3
    Please see The Open Source Definition, specifically point 6. Open Source licenses allow for commercial use. If you intend to prevent companies from selling software linking to your library, you need a non-Open Source license. There are Open Source licenses that would require that software to be Open Source as well though. You may want to think about whether that would be acceptable, and if so, edit your question. – hvd Dec 26 '16 at 12:17
  • Don't points two and three conflict with each other? You want to allow nonprofit users to be able to take snippets of your code and embed them in proprietary applications, but also to require that those applications are actually open-source. – Xiong Chiamiov Dec 28 '16 at 1:37
  • I don't see a conflict between points two and three. Point 3 doesn't say applications using the lib are open-source, just that the changes to the lib are. I realize that open source licenses don't forbid commercial use, I guess I was asking for an exception one can make to an OS license or a not-strictly-OS license or a OS license that is so off-putting for commercial use that in practice it wouldn't be used that way. – Tannin Dec 28 '16 at 15:27
up vote 6 down vote accepted

What you are looking for is, I think, the common practice of selling exceptions.

When an organization or a company is the sole copyright owner of a software, or have a permission to do so from all copyright owners, they may offer simultaneously the software under a free copyleft license (such as GNU GPL) and under a more permissive proprietary license. In your case the proprietary license would allow use in not-for-profit proprietary derivatives. And you could also sell the right to create and distribute for-profit proprietary derivatives.

What this means is that the software will only be used to create and distribute derivatives which are either free or not-for-profit, or for-profit proprietary derivatives by companies which have bought the commercial license. As some will remark, this won't prevent people selling free software derivatives since free software licenses never prevent selling.

The practice of selling exceptions is very common. Examples include Qt (just after TrollTech switched to GNU GPL), OCaml and many others.

To follow this path, you must ensure that you have rights over the complete code: either it was developed by you or your employees, or it was developed by someone who signed a CLA (Contributor License Agreement) which allows you to relicense their contributions under a proprietary license.

Also note that this won't satisfy your third requirement: forks which do not contribute back will be allowed to make their derivative GPL-only.

For a discussion on selling exceptions by RMS see http://www.gnu.org/philosophy/selling-exceptions.en.html

Your Answer


By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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