We need to do something about the scourge of software keeping a rug-pull in their back pocket through the use of CLAs with copyright assignments. This thread serves to organize action against these projects.
What is a CLA and why is it bad?
A CLA is a “contributor license agreement”, which is a statement that contributors to a free software project are asked to sign before the upstream maintainers will accept their contribution. These take many forms, not all of which are harmful,[1] but most of them include a clause similar to the following (this example is taken from MongoDB):
By submitting a Contribution, you assign MongoDB all right, title and interest in any copyright you have in the Contribution, and you waive any rights, including any moral rights, database rights, etc., that may affect our ownership of the copyright in the Contribution.
Another common form of copyright license looks similar to this:
- Grant of Copyright License. Subject to the terms and conditions of this Agreement, You hereby grant to Ant Group and to recipients of documentation and software distributed by Ant Group a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.
The purpose of these clauses is to give a single entity, the project steward, a special license distinct from the one that everyone else gets, so that they may use your contribution in any way they please, irrespective of the license terms you get to use. Generally speaking, the only reason to do this is to allow them exclusive access to commercial exploitation of the software, or to set them up for a future rug pull in which they change the software to a proprietary license (again, to advance their private commercial interests).
Further reading on CLAs:
https://drewdevault.com/2018/10/05/Dont-sign-a-CLA.html
https://drewdevault.com/2023/07/04/Dont-sign-a-CLA-2.html
What to do when you encounter a CLA?
You do not have to sign the CLA. You should refuse and publicly state the reason for your refusal. State clearly that they may use your contribution but only under the original license terms that you received the original software under, e.g. BSD, MIT, GPL, etc.
You can make use of your changes privately, and distribute them yourself. Put up your modified version on your favorite source code repository service. Talk to your Linux distro about including your patch downstream.
Then, consider the following:
Direct action against CLAs: hard fork the project
This is where the political part comes in: you can take direct action against the scourge of CLAs by making a hard fork of the project.
- Rename the project. Be wary of any trademarks held by the project’s stewards.
- If it uses a permissive license, consider adding a copyleft license to protect your changes from being taken by the original project stewards.
- Publicize the fork. Seek out contributors and users. Adopt it as your own and market it as such.
You can take changes from the upstream project and incorporate them into your fork. Treat it as your own project now, and make it clear that anyone who wants their copyright respected is encouraged to contribute to your fork rather than sign the upstream CLA.
Consider offering to abandon your fork and merge with the original upstream project again if they agree to remove the CLA.
This thread on WFS
Feel free to ask questions here about CLAs and discuss them generally, as well as post projects which use CLAs and organize action against these projects.
Now go forth and defend free software!
List of projects using a CLA
- Qt
- Signal
- Audacity
- Synapse
- TinyMCE
- Unicode (good luck forking Unicode, though, lol)
- LXD
- writefreely
- Go
- Deno
- Prisma
- wing
- MobilityData
- Khronos
Some CLAs are designed to simply establish provenance, which is to say, it’s a cover-your-ass move which makes the contributor liable for the originality of their code by making you say “yes, this is my original work, or I am authorized to release it under the license terms applicable to this project”. This kind of CLA is fine, but the DCO is better. ↩︎