One of the main purposes of a CLA (contributor license agreement), as I understand it, is to allow some owner of the software to have full rights to relicense the code if desired. This is rather onerous on both the contributors and the owner. Rather than doing this, couldn't you just add some line at the top of your license, such as:
The following restrictions apply, unless granted explicit permission by <owner name>
(I'm not a lawyer and don't know how to write a license or contract, but hopefully the general idea is clear)
If I were to use a license text with this general idea, could it hold up? Can taking steps to make sure contributors are aware of this, such as by putting it prominently on the contributing page, help the case?
Some things I would want to allow, that seem like they should be fine as long as the general idea holds, possibly requiring some changes to license text:
- If someone wants to fork a project, they should be able to remove the owner from the license text (but not add a new one), such that the original owner cannot grant rights to derivative work (but contributions that do not remove the license text may still be relicensed by the original owner)
- The owner should be able to charge money in exchange for granting a closed source license.