I'm currently producing an application for a client, where I'm writing all the source code myself from scratch. The client is paying me a one-off fee for development work. The plan is for the client to receive the source code along with the compiled application as the application has a long expected lifetime and the client may need to modify or refer to the source code in the future.
I specifically want to permit the client to:
- Modify the source code for their own use
- Transfer the source code (modified or unmodified) or compiled application to someone else under an open-source license
I specifically want to prohibit the client from:
- Transferring the source code or the compiled application to someone else under a proprietary license
- Transferring the source code and selling the modified source code or resulting compiled application to someone else under a proprietary license
I don't care if:
- The client is able to distribute the source code or compiled application to the public under an open-source license
- The client is able to modify and distribute the source code without returning the modified code to me (in fact I'd prefer it if they didn't have this restriction)
In plain English, what I want is "you can modify this source code as you require for your own use without giving it to anyone else, if you give binaries to someone else then you have to provide the source code and if you give source code to someone else then the person you give it to must be bound by the same restrictions".
To me it seems that the GPL fits here quite nicely. Is there a more appropriate license that I should use rather?
Would I also be able to re-use the source code that I have written under another license later on? My understanding is that the GPL refers specifically to the receiving party, so if someone receives source code under the GPL then they are bound by the same license if they distribute or transfer it to anyone else (modified or unmodified) meaning that they themselves have to provide the source code under the GPL, but as the original producer of the source code I am not bound by the GPL. So I am free to re-use the code later in another way and distribute it under another license, because I did not receive it under the GPL?