I had some thoughts about the concept of a “Contributor License Agreement”.
If you are the sole author of a program, you have a special position in that you can distribute the program with any license you choose. People that are not the sole author that copy the source code are not able to do that. If the original sole author of a program incorporates changes from someone that did not sign a Contributor License Agreement, they lose that special position, since distributing the program with a new license would require consent from all the authors, which is surely harder if there are more authors.
Because of this, it might be worth supporting some “community fork” more than an “original” repository, since that makes it clear that the program is likely to only be distributed using a specific license. However, if I’m interacting with an “original” repository, I will expect to have to interact with a Contributor License Agreement in order to have my changes used, since the original authors will want to preserve some flexibility regarding what licenses they can use with their software.
In that case, you might like Tubular bells (pt. I)