I am an online software developer who does freelancing through an online portal. I started this last year but achieved success only this year. I found a very good client who said he has a job chain for me. I have enough reasons to believe him because he has already purchased more than 200 projects via this freelance portal.
I made a kind of dictionary application for him which converts English to French. He said he will add the words, and I need to the "technical" part of the program. In the beginning, I did not think about this much, so I added a few words and completed the work, but now he is asking for the source code.
I assume he needs the code for adding the words, but I am not sure. He said this will be an ongoing project, and I should have a lot of tasks from him after this. But, if I give the source code, how could it be a ongoing project for me?
This client is very very important for me because this is the third job I did for him. He normally goes for high payments and the payment is also super quick; this time he paid me even before I started the work!
So, how can I handle this situation? There is a risk I can lose him.
Since you do not want to loose this customer, for this single time give him the source code.
Politely mention that it was not formally agreed upon about the ownership of the source code, but you are still giving away the source code to create goodwill for future projects.
After giving the code hope for the best. Be ready for the worst. We all have to learn some things the hard way some time.
Next time always write it in agreement that who owns the code and charge accordingly.
When I am coding for a customer I am always giving him the source code. The binaries alone are no of value except I plan to make a product out of it and want to sell it multiple times. If I am paid per hour my customer owns the source code without a doubt. If you worked as a freelancer for your customer to create a program for him, he most likely does own the source code already. Or do you have a different agreement?
Personally I would give him the source code as he might need modifications, bugfixes, extensions and support. Except you want to be paid for adding words to your program. As long as he is happy with your work, he will keep on going to give you work (assuming it is like that if he paid you upfront).
In this kind of "work-for-hire" situation, he may, in the absence of any other agreements, legally own the source code because he paid you specifically to produce it. If there is code you produced before working with him, or for another client and carried over, then that would remain yours (or the other client's.)
Realistically, there are usually two halves to most coding projects, a customer-specific portion (usually front-end, or highly specialized backend) and some generic backend libraries, like XML-RPC communications or graphics manipulation.
The code that is customer specific is usually of little value to anyone but them, and that code I happily hand over.
The backend libraries, however, are usually things I'm developing for multiple clients and to serve as the value proposition to future clients. That is, I can tell future clients that I already have a framework that does most of the tedious stuff or the heavy lifting, and all we need to write is code specific to their goal. Then I license the backend to them, usually with something very open like the BSD license. They get a snapshot of the source and a license that gives them nearly all the benefits of owning the code, while allowing me to use the code again in future projects.