Seriously, Don't Sign a CLA
drewdevault.com
drewdevault.com
I have a business. That business deals in copyleft software that I have sole copyright in (or comes from permissively-licensed code).
My customers, which will be businesses, will be required to sign a contract with a CLA so that if they make changes, I will be the copyright holder of those changes.
No, I won't have individuals sign a CLA. But I also won't accept contributions from individuals, like the SQLite authors, who need a guarantee that all of their code can be public domain.
In this way, I will be legally able to loosen the license over time if I so wish. Without CLA's for customers, I couldn't do that.
All open source licenses have some form of legal liability wording in them, e.g. from GPL v2:
> 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
No CLA I've seen so far does anything to maintain that protection from liability. Those responsible for the software could switch the license to one which leaves you, or your employer, legally liable for any damages incurred. That could very, very quickly, bankrupt you and/or them.
However, if you don't own the software and don't distribute the software and don't have any other kind of relationship with the users of the software, it's likely going to require the plaintiff to demonstrate particularly egregious conduct on your part in order for a court to find that you have some liability for damages arising from the use of the software. But YMMV.
But if I accept a contribution, I'm already accepting responsibility for it, so I will not accept it unless I understand it and test the snot out of it.
This is another reason I don't accept contributions from individuals.
It's about the person/company that signs the CLA. They're the ones that end up in potential legal nightmares, unless the CLA specifically promises to continue to indemnity.
Or you can make it poprietary, which is the exact reason I would not want to sign a CLA with you, because I want a guarantee that my contribution remains foss.
But again, I don't take contributions from individuals, so I wouldn't ask you to sign one anyway.
This means that if I take it proprietary, I will have ensured I do not steal from any contributors.
Businesses will be contributors. These businesses have more "power" than me because they'll be bigger than my one-man shop.
I'll do these CLA's to adjust that power balance.
Without a Contributor License Agreement (CLA), even if the repository is licensed under the MIT license, I'm not sure I'm protected against disgruntled contributors, regardless of the complaint.
We've found contributors are more likely to sign a CLA if kept ignorant of it until the time comes to merge the reviewed fruits of their labor. /s
My understanding is that the CLA is there for two main reasons: First, as a legal CYA, since large companies are lawsuit magnets, and more importantly to me: for flexibility in changing the OSS license we use. Our individual OSS projects have moved between teams, and best practices enough that we have them under a number of permissive licenses (BSD-3-clause, MIT, Apache 2.0). It's been useful sometimes when combining projects, or to reduce the number of license headers to (sparingly) re-license under a common license. Without a CLA this would basically be impossible.
The CLA does require trust that we won't relicense under a restrictive license or gain undeserved benefit by making commercial licenses that rely on the copyright (as opposed to say I support license). That has turned some potential contributors off. At least that's a choice everyone can make.
This is why I would never sign a CLA. I may trust the entity asking for one, but owners change over time, and I can't trust that the project or business won't be transferred to someone else in the future who may not be trustworthy on these issues.
Either by making it GPL3 and have them lose access to it in their use case, have the code made proprietary so they can't use it at all, or switch to another license entirely (BSD, MIT, or public domain which are all "worse" than GPL per the GPL3 folk).
I don't understand people who would assign copyright for OSS code they wrote to someone else, because that's just a giant F U to the entire concept, and has literally no up side for anyone other than the new owner.
A CLA should specify that the copyright assigned will always be under a license approved by the FSF and OSI.
The "and" is important, as it's probably possible for one of those organizations to go off the rails, but not both.
At that point, the contributor could take the existing codebase and fork it to keep it open source. Of course, they can only do that under the existing license so they have no power to change the license themselves.
What CLAs do allow (that IMHO is beneficial) is the copyright owner developing other licensing options for specific customers. This can provide a better income source than just “support” for a project.
Sveasoft tried the same thing with WRT54G firmware back in the day, and failed so hard that apparently nobody really remembers.
A CLA primarily provides legal coverage for the legal entity primarily responsible for the project, as they can claim copyright on all the changes.
From a project maintainer perspective, I prefer DCO over CLA, as it provides a similar style of protection, but in general lawyers at companies default to a CLA.
If you want access to future changes, you need to limit yourself to contributing to copyleft licenses.
Unless you're a GNU project under the FSF?
However, it's important to note that practically it's not clear that GNU actually need a CLA if they wanted to pull such a movie. Contributions to GNU projects are GPL-x-or-later licensed, and GNU are the authority to declare something as GPL 4, even if it contained language that allowed the project owner to close the project.
[0] http://files.pharo.org/media/PharoSoftwareDistributionAgreem...
I suppose if every contribution from the very beginning was made predicated on a license that was irrevocably open source and permitted the project maintainers to re-license the project under a future compatible license, then CLAs perhaps wouldn’t be necessary (though doesn’t there still need to be an assignment of the contributor’s inherent copyright rights?), but how often is this the case in practice?
The DCO is basically the legal CYA your lawyers might require from contributors saying "I wrote this code any any future contributions I will submit and am happy to license it under X". Notably unlike CLA, it doesn't assign ownership to the recipient or give them permission to arbitrarily relicense.
the contributor is giving the company/project something. and not making a promise that they don't keep.
if i understand it correctly, consideration is only relevant for a contract that has not yet been executed.
once the contribution is made, there is no enforcement necessary, because the contract is already completed. the project must now be able to assume that it can use the contribution under the terms that were agreed upon.
if that was not the case, no project could ever accept any contributions from anyone.
all the CLA is doing is requiring the contribution to be made under specific conditions.
if the project only accepts contributions under the GPL then there is an implicit CLA that all contributions be released under the GPL. once the contribution is released the license for it can't be changed either.