As an individual freelancer, I'm writing some code for my customer's commercial closed-source project. The customer don't mind me to open-source this code, but they would like the code to be available for use only in open-source projects, but not in commercial projects, or at least not in closed-source projects.
I plan to continue maintaining the open-source version of this code and use it in my other open-source projects. As well as I plan to continue cooperation with this customer and fix problems with the closed-source project.
My current ideas are:
Make a GPL fork from the initial release of the code
- Pros: easy;
- Cons: if someone submits a patch to the GPL fork, I can't port it to the private fork, because the patch is GPL; I can port only my own patches;
Make a GPL fork and also ask contributors to sing
CLACTA for transferring rights to the patches to me- Pros: all patches from GPL fork can be ported to the private fork;
- Cons: nobody likes signing
CLACTA; also I'm not sure how to make the signing process correct - first because I'm an individual, second because IANAL;
Maintain a single version of the code licensed under GPL with a special exception for specific customer (company)
- Pros: single repo to both projects is ideal!
- Cons: I can't find examples of such exceptions - are there? Does GPL allow it at all?
What do you think about this ideas and are there better solutions?