2

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?

2

IANAL/IANYL. That said, I think the GPL fits your needs precisely. I do exactly the same thing myself, in my own consultancy business; point 4(ii) of my terms and conditions says

Copyright in all original code, configuration files, documentation and copy is and remains the property of the Company, and these are provided to the Client under the terms of the GNU General Public License, version 3 (or, at the Client's discretion, any later version).

Clients do occasionally cavil at this, but I'm not flexible on the point; I refuse to be bound from re-using work I've done if I find I can later usefully do so. Most clients who do balk reverse their positions when I point out I may be able to solve their problems considerably more quickly and cheaply because I'm lawfully re-using work that I've done for some other client, earlier.

You also ask

Would I also be able to re-use the source code that I have written under another license later on?

to which the answer is yes; as long as you retain copyright in what you create you may always re-license it as you choose.

Edit: in answer to your question below

doesn't the GPL have a requirement to return modified source to the original distributor

No, this is not a requirement. If you receive software under the GPL and modify it, but you do not convey your modified software to anyone else, you do not have to release your source modifications to anyone at all. If you do convey it, you must disclose source (and build tools, etc.) to whomsoever you convey it to, but there is still no obligation to contribute those changes to the original author. The recipient is of course free to do so if you don't, but you are not obliged to.

  • OK thanks. So what do I need to do to retain copyright? Do I automatically retain copyright unless I explicitly transfer it to the client? Should I provide something like your quoted paragraph alongside the license? Also correct me if I'm wrong but doesn't the GPL have a requirement to return modified source to the original distributor (i.e. if someone gives me code and I modify it, I have to give the modified version back to the person who gave me the original code)? – Micheal Johnson Nov 15 '17 at 20:08
  • Everything I wrote refers only to work you created yourself; a discussion about reuse and/or modification of someone else's code you received under GPL would be a whole new question. As for how you impose the GPL on your own contracted works, the single most important thing is to strike out any sections about ownership of the work in potential contracts before signing them. Once you've refused to give up copyright, you can have a discussion with the client about how they can use the work. – MadHatter Nov 15 '17 at 20:47
  • So you're saying that if my client receives work licensed under the GPL, they have to provide any changes made to the work back to me? I'd much rather not have this restriction, the client needs to be able to freely modify the code at least for their own use. This isn't irrelevant to the original question, most of my original question was about what the client can do with the code that they've received under the GPL. Would a Creative Commons ShareAlike license be more appropriate here, and would the same re-licensing-by-original-author copyright situation apply? – Micheal Johnson Nov 15 '17 at 21:02
  • No, I am saying the exact opposite. Please read my edit above. I still think the GPL is particularly suitable for what you want. – MadHatter Nov 15 '17 at 21:03
  • Thanks for the clarification. I was always under the impression that modified source code must be made available to the original author (easily achieved in usual situations where code is published online, but being a lot more relevant in situations like this where code travels directly from one party to the next without widespread distribution). Essentially I wouldn't want the client to be forced to publish the code online, or hope that my email address from 10 years ago still works, when the day comes that they need to pass a modified version of the code on to their successor. – Micheal Johnson Nov 15 '17 at 21:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.