I see that a lot of proprietary projects which make their source available operate with dual licensing model, with the open source version being licensed under GPL v3 and proprietary product being, well, proprietary. The rationale behind choosing GPL v3 is to often exclude other commercial entities from using their code without them disclosing their source code.

Let's have two entities, a company C and a programmer P. If P modifies C's GPL v3 code, then C cannot P's modificationsin their proprietary offering without releasing their proprietary code under GPL. Here P and C are on equal footing -- both of them own their own code, and their code can't be used by the other under a proprietary license without re-licensing. I believe this is what the point of GPL was -- if 100 developers contribute to the project, all 100's consent is required in any contract which doesn't use GPL.

However, if P additionally signs a CLA so that they may contribute code to the upstream project, don't they lose their power? Now C can use P's code in their proprietary product, but P still cannot use C's code in a proprietary product (and neither can anyone else besides C).

There are a lot of social issues I have with this, but I'd like to keep this question about (a) if I am correct about GPL's original "motivation", and (b) if I'm correct about CLAs being antithetical to that

  • 4
    What a CLA does depends entirely on what the CLA says (and do not confuse Copyright Licensing Agreements with Copyright Transfer Agreements). We can't speculate about what signing a particular CLA would permit/oblige P to do any more than we can about P's signing any other arbitrary contract; it depends on the wording.
    – MadHatter
    Oct 12, 2020 at 5:50
  • 1
    Then don't sign the CLA and don't contribute. Signing the CLA is like being an unpaid employee of the company. Oct 12, 2020 at 16:25
  • 1
    @MadHatter Pretty sure CLA in this context stands for Contributor License Agreement.
    – Eric
    Oct 12, 2020 at 20:15
  • @Eric yes, I agree. However, the question didn't make it clear to me that the OP understood the distinction between CLAs and CTAs.
    – MadHatter
    Oct 12, 2020 at 20:35
  • @MadHatter I understand what you're saying. But wouldn't CTA have to be a part of the CLA for the situation I mentioned (company being able to use P's patch in their upstream proprietary product) to arise? Oct 13, 2020 at 16:05

2 Answers 2


(a) if I am correct about GPL's original "motivation"

No you are not correct about the motivation for creating the GPL. To quote Richard Stallman, the father of the GPL license:

My work on free software is motivated by an idealistic goal: spreading freedom and cooperation. I want to encourage free software to spread, replacing proprietary software that forbids cooperation, and thus make our society better.

That's the basic reason why the GNU General Public License is written the way it is—as a copyleft.

It has also been said that the philosophy behind the GPL is to give freedom (to inspect, modify software) to the end-users. If you hold to that philosophy, then you don't want that someone between you and the end-user can decide to restrict the freedoms on the end-user.

There is also a philosophy behind the permissive licenses and that is that the immediate recipients should have the maximal freedom, even if that means they have the freedom to curtail the freedom of recipients further downstream.

(b) if I'm correct about CLAs being antithetical to that

A CLA that gives someone the right to use your code both under the GPL and a proprietary license indeed goes against the philosophy of the creators of the GPL. But that philosophy is not part of the actual license, so you can use the GPL license without believing in that philosophy.

A potential contributor who holds the philosophy behind the GPL in high regard will probably refuse to sign such a CLA. Adherents of the philosophy of permissive licenses might not have an issue with signing such a CLA.

  • 3
    You say the OP is wrong about the motivation for the GPL... and then cite a quote from Stallman supporting the OP's view, specifically stating that the purpose of the GPL is "spreading freedom" by "replacing" (excluding) proprietary software. Oct 12, 2020 at 14:18
  • 1
    @MasonWheeler, I see a subtle difference between wanting to give freedom and wanting to make it difficult to relicense. In the case of the GPL, the latter is a side effect of the former. Oct 12, 2020 at 14:57
  • @MasonWheeler, ...using the GPL with a CLA to make a proprietary product while simultaneously allowing users of an OSS branch the full set of freedoms is hardly "replacing" proprietary software -- the folks to whom joint copyright is being granted are using the grant they're receiving to continue producing proprietary software, even while using the GPL to make themselves the only party who can license the software in question under GPL-incompatible terms. I have trouble seeing this as in line with the stated intent. (I'm also perfectly happy with it as a business model, to be clear). Oct 12, 2020 at 15:59
  • I'm also confused about what @MasonWheeler mentioned. Perhaps the distinction between "replacing proprietary software that forbids cooperation" and what I've mentioned is more subtle than I'm able to understand, I'd appreciate a more detailed explanation. Oct 13, 2020 at 16:00

As I understand them, Contributor License Agreements do two things:

  1. Allow the curator to make certain decisions about what can be done with the project without needing to seek additional consent from all contributors,
  2. Help the curator ensure it has the legal right to distribute the project in the first place.

You can think of a project that accepts contribution as a kind of federation. While there is some overarching unity, every contributor retains copyright (even in copyleft licensed projects) to their contribution, and permission is needed from every contributor to distribute or license the project. This is because distributing or licensing the project requires distributing and/or sublicensing the contributions. There is the additional wrinkle that any individual contributor may later choose to revoke this permission.

A good CLA will reduce this headache to a manageable level. Once a contribution is made, it is considered irrevocably made under some known conditions and the curator has the right to sublicense and distribute the contribution. You can think of the GPL itself as a sort of macro-level CLA where the contributions are entire libraries: the library creator has given you the irrevocable right to use their contribution subject to certain conditions. Further the GPL (like a good CLA would be) is structured so that meeting the conditions is entirely within your control and is not subject to the library creator arbitrarily changing their mind later about what you can do with the library.

EDIT: My point is that a CLA (or a DCO which is a similar concept) is a necessary component to any FOSS project, whether or not it uses the GPL as its license. Without a CLA or DCO that is compatible with the philosophy of the project's license, contributions cannot be accepted by the project.

  • This is not particular correct. The GPL and CLA's serve distinct purposes - the GPL is essentially the "freedom to fork" while a CLA is to provide a path to re-integrate a fork upstream. The actual question asked however, is about a CLA which presumably gives the original author (alone) the right to offer the 3rd party contributions under a proprietary rather than GPL license, making it yet something else again. Such a scheme runs the limiting risk of the community deciding to support a GPL only fork, instead, containing contributions the original author cannot offer under a non-GPL license. Oct 12, 2020 at 21:43
  • @ChrisStratton Agree and disagree. Both the GPL (or any software license) and a CLA govern how the receiver of the licensed content can use it. You just usually have more control over which license you use for your own projects vs which CLA may be in use for a project you wish to contribute to. From the perspective of a FOSS project, the software licenses used in dependencies matter just as much as the CLA used for contributions in terms of deciding whether the project can be distributed or not.
    – Eric
    Oct 12, 2020 at 23:28
  • Comments are not for extended discussion; this conversation has been moved to chat.
    – MadHatter
    Oct 14, 2020 at 14:30

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.