I know that there are a number of discussions about the GPL on this site but I just ran in to an interesting case of apparent misuse that I (surprisingly) haven’t seen discussed anywhere.

The CFEngine configuration management program is apparently distributed under the GPL (it even appears to be an FSF project) but the original author also distributes an “Enterprise edition” which is blatantly non-free. This appears to be an obvious violation of the GPL.

The official response to this question (from the CFEngine FAQ) is:

As copyright holders we are free to license CFEngine under any terms we choose. The files that belong to both the community edition and enterprise editions are consequently licensed under both sets of terms. The licensee of the Enterprise edition is therefore free to choose the terms that are deemed most desirable.

Which, as I understand the issue, is just not true. As copyright holders they are of course free to change the license (for future releases), but distributing code with both licenses is contradictory at best and illegal at worst.

Am I missing something here or does this seem wildly hypocritical?

  • What do you mean by "hypocritical?" Dec 5, 2013 at 22:07
  • That might not be the best word choice. I wanted to express that it's not okay to tell the "community edition" developers that their contributions MUST be GPL and not adhere to that policy yourself.
    – jmp
    Dec 5, 2013 at 22:12
  • 7
    They said it better than I could... They own the copyright; they can license it any way they wish. Dec 5, 2013 at 22:14
  • Related: programmers.stackexchange.com/q/30856/2406.
    – TRiG
    Dec 5, 2013 at 23:41
  • 2
    More to the point, if I own the copyright to some work, I can license it to one person with one license and to another person with another license. This assumes I own the actual copyright to that work. If I just have a license to someone else's work (say under GPL) I can only pass it on to others as my license allows. As long as CFEngine is wholly owned by one creator, and doesn't depend on any work they have under GPL from someone else, they are entirely free to offer different licenses to different people
    – The Photon
    Dec 6, 2013 at 0:35

5 Answers 5


Dual licensed models work under the theory that, if you want to write a closed-source application, you can earn that right by paying money for a commercial version. Otherwise, you can get the software for free, so long as you abide by the terms of the GPL (which is, at least in theory, designed to promote open-source software as truly "free as in speech").

Basically, they're using the GPL as a lever to induce folks to get the pay version. If they licensed it as MIT or BSD to the open-source community, there would be no incentive to pay for it in a commercial context.

The Free Software Foundation discusses this issue in detail here: http://www.fsf.org/blogs/rms/selling-exceptions:

A copyleft license permits embedding in a larger program only if the whole combined program is released under that license; this is how it ensures extended versions will also be free. Thus, users that want to make the combined program proprietary need special permission. Only the copyright holder can grant that, and selling exceptions is one style of doing so. Someone else, who received the code under the GNU GPL or another copyleft license, cannot grant an exception.

Viewed from a different perspective, the GPL is a way that a commercial software company can provide their software and source code for free to the public while still retaining the ability to make money, without which their software would be completely closed and proprietary.

Not everyone is sympathetic with this view, of course. See Milking the Gnu for an alternative viewpoint.

  • Interesting, that seems counter-intuitive. Why not license it MIT or BSD and then sell a non-free derivative (like Chromium->Chrome or FreeBSD->OSX)?
    – jmp
    Dec 5, 2013 at 22:20
  • 6
    Because there's no incentive to pay for it. Why would I pay for something that I can get for free, unrestricted? Dec 5, 2013 at 22:20
  • Ah, I saw that answer in the link you added. Thanks!
    – jmp
    Dec 5, 2013 at 22:22

The copyright owner has the right to distribute his software as he chooses, to whom he chooses, or indeed not at all if he desires. The only rule is "no take-backs". You can't change your mind about what has already been distributed.

In this case, he chooses to allow use and re-distribution under the terms and restrictions of the GPL. But for some users, GPL is not too restrictive. Therefore, under certain conditions, alternate licensing terms are also allowed. He can do this because he owns 100% of the copyright. While you are bound by the GPL if you choose those terms, he isn't bound by anything. He doesn't need to follow any license, because he's the copyright owner.

Let's make a more concrete example out of this:

Say I write a book which I give away for free: you can get a free print directly from me, or you can photocopy one from a friend. But I impose a restriction such that if you photocopy it from a friend, any marks you make on your photocopied version must also be made on the original you photocopied from. Why? Because that's the rule. My book, my rules. If you don't like the rules, write your own book.

Now say a distributer would like to print copies of my book. He's allowed to make copies already, but the restriction about making marks would be a real mess for him to keep track of. He doesn't want to do it. So I create an additional license. I say: if you want to make copies of the book but not keep track of markings, then you can pay me $1 for every copy you print, and agree to distribute your copies in paperback only; no hard cover prints.

In this example, both license apply. You get to pick which terms you want to follow. In this case, I gave you two options. Nothing wrong with that.

  • Thanks for the response, but this seems like a more convoluted way of explaining what Robert already said.
    – jmp
    Dec 6, 2013 at 5:43
  • 2
    @jmp sometimes different explanations help different people. Betto to have a few, so that if one doesn't click you can read another.
    – tylerl
    Dec 6, 2013 at 7:32
  • Law in some countries allows take-backs after e.g. 30 years have passed, or if the work being used violates personality rights of the authors (even if the authors are not the owners of the exploitation rights on the copyright!) or if the licence was given in bad faith, or illegally, or if the recipient slighted the licensor.
    – mirabilos
    Dec 6, 2013 at 12:15

A copyright license is permission from the copyright owner that allows you to legally use something that is copyrighted. It lets you out of legal trouble. The copyright owner couldn't possibly be in legal trouble for violating their own copyright, so even if it were a violation of the GPL, it wouldn't matter, because the author of the code isn't relying on the GPL for rights to their own code.

Offering you permission to use their code under the GPL doesn't (and shouldn't) stop them from offering you permission to use their code under other conditions. Doing this sort of thing is common enough that it has a name: dual licensing.

The owners of the copyright can license their code to anyone they want under any conditions they like. Whether you (or the FSF) like their choice is not relevant.

Just because someone uses a license written by Richard Stallman (the GPL) doesn't mean they have to share his views, so there is no hypocrisy.


Part of the issue is how that code is used. If contributed code were GPL only, it could not be extended by the non GPL enterprise edition. (This is what is meant when people say the GPL is viral.) The author of the code owns the copyright, as mentioned, and can do what she wants and offer it under whatever license or licenses she wants, but she couldn't use GPL only contributed code from someone else in code she distributed with an enterprise license and also enterprise licensed users could not use any GPL only code in any custom code if it is in combination with the enterprise licensed code.

The people who manage the repository set the rules about contributions, and these rules about community contributions work for them. If it is GPL you are allowed to fork the code and say that your repository will require only GPL licensing.


"This appears to be an obvious violation of the GPL."

They are not subject to the terms of the GPL in any way. The software was never distributed to them under the GPL, only by them to others.

If you write some code and then distribute it to me under GPL, then I would have to follow GPL, but you wouldn't.

The voilation occurs when someone gets someone else's software under GPL and redistributes it as closed-source.

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.