62

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)

4
  • 2
    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. Commented Dec 25, 2016 at 12:36
  • 7
    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
    Commented Dec 26, 2016 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. Commented Dec 28, 2016 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
    Commented Dec 28, 2016 at 15:27

3 Answers 3

21

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

4
  • 14
    This doesn't answer the question: what is the license to use? Is it just GPL with exceptions? Commented Jun 29, 2019 at 15:04
  • 1
    No, that's not GPL with exceptions. That's GPL pure and simple + a CLA for any external contributions + proprietary licensing for non-profits. See the link in my answer for a distinction between "selling exceptions" and "GPL with exceptions".
    – Zimm i48
    Commented Apr 12, 2022 at 11:39
  • I'm still confused - if I start a repository using, say, GPLv3, can I later add a selling exception?
    – flies
    Commented Jun 25 at 19:10
  • You can do whatever you want with your own code (except revoke the license you put on past versions). However, as long as you have accepted external contributions without a CLA, that's not your own code anymore, that's a joint work where every author has licensed their contribution under GPL v3 to the other authors and every other recipient.
    – Zimm i48
    Commented Jun 28 at 10:53
23

There is now a license specifically designed to create source-available software for non-commercial use, namely the Commons Clause License.

There have been some very strong characters in the history of open source software(!), but after cutting through all the messianic zeal, there is at least one very good reason for requiring open-source or free software to adhere to the 'official' definitions - which is that many big corporations are only prepared to adopt fully free/open-source software. It is too big a risk for them to find that their commercial software has been tied in unexpected ways by a non free/open-source clause in the license of some software which they have used.

Does this worry apply to Common Clause Licensed software? Note that the Commons Clause License FAQ includes:

May I [...] “sell” my products using Commons Clause licensed components?

Yes!

You may develop on top of Commons Clause licensed software (adding applications, tools, utilities or plug-ins) and you may embed and redistribute Commons Clause software in a larger product [...] . You just can’t sell a product that consists in substance of the Commons Clause software and does not add value.

Here and elsewhere in the FAQ the intention is clearly to permit usage in commercial products which aren't entirely or substantially the original product. Like much in open source, this hasn't been legally tested.

It might seem obvious that another exception to worries about being 'infected' by a non-commercial license is the case of software development tools, where there is apparently no question that the source of the tool gets included into the product which the tool is used to develop. But even this is a grey area! Compilers, for instance, are software development tools, but part of their code very much does get included in software which they are used to build.

4
  • But exactly the non - commercial passage makes it a non - open source license. So both demands cannot be reconciled if you take the generally accepted definition of open source as used by OSI. So these licenses and questions are of - topic here Commented Mar 4, 2020 at 7:58
  • Of course it does, that's what I say. What the question asks for is impossible (under the very strict, official definition of open-source). But what it's presumably asking for, I think, is something like this?
    – MikeBeaton
    Commented Mar 4, 2020 at 8:01
  • I think in my answer I've been clear to distinguish between source-available and open-source! Let me know if not!
    – MikeBeaton
    Commented Mar 4, 2020 at 8:02
  • 2
    Yes agreed, this likely is what's asked for by the op Commented Mar 4, 2020 at 8:02
2

Good question, no matter if is incorrect, is a complex problem.

Point 1 and 4 are not responsibility of the license but technologies or your will.

You could Multi Licensing (https://en.wikipedia.org/wiki/Multi-licensing) - each user chooses a license according to the use.

Point 2 makes no sense since open source and non-profit are not related at all. If you remove the "open source" part of that paragraph then I then it still miss important info. It's not so important what you give to the users, but what the users can do with it, in terms of seeing, modifying and distributing. The later is the most complicated and you need to decide if they must pay, respect / honor author / restrict licenses / etc. Also is not clear if you want to enforce users not to profit with your library or in general like a ONG organization,

for 3 you want a copyleft license like GPL

and since the last point is not important right now you don't even need a multi license, right now :)

Also you could not have a license at all, put some general non formal rules that what's allowed without permission and what is only allowed with your permission and negotiate each situation individually: https://choosealicense.com/no-permission/

4
  • Licenses are the legal basis on which people other than the author are allowed to use a piece of code or a library. Without a license, only the author of the code is allowed to make changes or incorporate it in a larger program. This also holds for accepting contributions. One of the rights that must be explicitly mentioned in a license (and is mostly something for contributor license agreements) is the right to change the terms under which a piece of software is offered to others (i.e. the license). This puts the way that others contribute to your project firmly within the scope of licensing. Commented Jul 5, 2019 at 6:25
  • 1
    The advise in your last paragraph is usually bad for business. Licensing-aware professionals and legal departments try to avoid such crayon licenses as much as possible, because those licenses can easily have unintended legal side-effects that makes using them as part of a larger product tricky at best. For the well-known licenses it is at least known how they interact with each other. Commented Jul 5, 2019 at 6:34
  • My point was just informing that not having a license is in its rights and what the legal situation will be if so. And BTW authors not licenses control changing the terms on which the creation is released (of course your actions in the past could limit what you can do in the future, but was a consequence of author's decision and not a license) .
    – cancerbero
    Commented Jul 6, 2019 at 8:50
  • I think the example described an open source developer trying to have a bigger picture about the topic and not so on business, but perhaps I'm wrong. I agree with that it's usually bad for business which product can be integrated with third parties. But sometimes the intention is the opposite. Also I would say no-license it's even bad human culture/knowledge itself as Licenses and patents were created because of just that - knowledge being lost when the author died - (although the reason of software patents today seems to be just the opposite).
    – cancerbero
    Commented Jul 6, 2019 at 9:09

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