Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm working as a independent software developer for mobile applications. A customer asks me to develop a mobile app. So at the moment I'm calculating the time and effort to write an offer for this project.

The app itself will only be used for a certain time as it is related to a certain event after that if will be useless. But the base functionality of the app will be reusable for other customers who want to have a similar app for their event.

At the moment I'm wondering if it is OK to develop the app for the customer let him pay the development and reuse part of the source code for another customer's app?

So what would be the best way for me to deal with this scenario?

  • To whom belongs the source code of the app?
  • Do I have to give the source code to the customer as they paid for the development?
  • If I have to, can I still keep a copy of it and reuse it later?
  • Do I have to ask the customer to reuse the code?
  • Do I have to work with some kind of licensing model here. And let the first customer only pay a certain part of the development so I can reuse the code without any concerns?

I hope I made my situation clear. I'm looking forward to you answers.

share|improve this question
    
Have you established a formal contract with the customer yet? –  Thomas Owens Jan 30 '12 at 11:49
    
No, at the moment I'm in the planing phase. Until now I've only talked to the customer about the requirements. –  Flo Jan 30 '12 at 11:53
5  
@Flo - Write a contract that addresses all these concerns. By default the copyright goes to you as the author. Of course if you agree to a contract that says otherwise that is on you. –  Ramhound Jan 30 '12 at 12:32
8  
You should consult a lawyer, instead of relying on the guesses of a bunch of programmers who don't know the details of your situation and your local laws. –  Paul Tomblin Jan 30 '12 at 14:38
1  
Related: stackoverflow.com/questions/900803 –  Robert Harvey Jan 30 '12 at 17:28
show 1 more comment

6 Answers

up vote 24 down vote accepted

You should decide before you start the project, who will maintain ownership of the code.

If they happily allow you to keep ownership then you're fine to use it in other projects. If they wish to take ownership after then it's a negotiating point.

share|improve this answer
6  
It may be in your interest to suggest a deal in which you can reuse the code, but not in projects for your customer's competitors. That seems more palatable from their point of view. –  Emilio M Bumachar Jan 30 '12 at 15:06
4  
If they object the usual option is to quote 2rates. 1 if I can reuse existing code and libraries and 2. an amount 10x as much if I have to recreate everything from scratch for this project only. In practice you put in a bit about "reusing standard code and libraries" just to cover yourself and nobody ever notices or cares. –  Martin Beckett Jan 30 '12 at 16:56
3  
+1 to Martin Beckett. You should have two codebases in any project; A set of "common" libraries containing code with global application, which you "license" to your clients, and the "custom" code that your client will actually own on completion. You can stipulate in the contract that development of the "common" libraries with new features in response to this project's requirements is still billable. You will have to negotiate with the client case-by-case on what qualifies as "common"; the client may want a codebase that isn't wholly dependent on your licensed code. –  KeithS Jan 30 '12 at 17:36
add comment

Since you don't have a contract yet, you need to work out these issues with the customer before you sign the final contract. From my understanding, this will happen if the customer agrees with your estimates on time and cost, so it's something you should be thinking about discussing with the customer now, along with the requirements. These are things that are often included in such a document. What's included should be agreeable to both you and the person paying for the product, although depending on the person or organization, you might not get everything you want.

If you don't have a lot of experience in writing contracts, or if you have very specific questions, the best person to ask would be a lawyer who specializes in contracts and business law - they would know if what you wrote would stand up in court should there be a problem. You wouldn't want a mistake in your contract to cause problems later on.

share|improve this answer
7  
+1 I would like to add too that getting legal consultation or help writing your first contract is a good idea so that you can get it right. Generally then most deals are very similar so it is pretty easy to use your old contracts as a template for your contracts that you write for new clients later. –  maple_shaft Jan 30 '12 at 12:45
add comment

The answers so far have been excellent. I wholeheartedly agree with the advice to:

  • ask a lawyer
  • draw up a contract every time you work with anyone
  • continue to work with your lawyer
  • profit!

In this situation, you already know that the "base functionality of the app will be resusable for other customers", and in fact I am sure you (and others) have already experienced situations in which you know some basic functionality or frameworks -- be they web, mobile, desktop, or otherwise -- are going to be reused. I mean really, why wouldn't we reuse something we know works, and we're familiar with? We probably all do it all the time.

This might not work for you, but it has worked for me over the years:

  • Eat the development cost of anything you think you will reuse, retain ownership, and license it to your clients. No external money changes hands in this process, to keep the ownership clear.

In that situation, with the help of a lawyer, you can make it clear that your clients are paying for everything built on top of that base functionality that you provide, they own that customization but not the base, and you continue to be free to develop for others in a similar way.

If the client demands exclusivity of use, then you can offer it to them at a price that remunerates you for the the time, effort, and inability to sell it to anyone else in the future.

The downside, of course, is that you're developing something for free. You have to be certain it will be resusable, and that others will pay you, otherwise it's a bad gamble. But if you plan to be an independent developer for some time, and have a client base -- or at least want to -- this line of thinking might be something to consider for the long run.

And talk to a lawyer!

share|improve this answer
add comment

To whom belongs the source code of the app? Do I have to give the source code to the customer as they paid for the development?

This depends on the contract. In general, you must ask the customer about what is known as exclusivity. For example, you could charge much more for exclusive development (and then the customer will own the code); alternatively you can tell them customer will have to pay less but you are legally owning the source. You can supply/install binary-only version of the software to customers so that customer's will have to come to you for modifications.

If I have to, can I still keep a copy of it and reuse it later? Do I have to ask the customer to reuse the code?

Generally, keeping a copy is not illegal/unethical. You can use it when customer asks more development. However, distributing code (to someone else) if the deal was exclusive, is not right.

Do I have to work with some kind of licensing model here. And let the first customer only pay a certain part of the development so I can reuse the code without any concerns?

Not only from the point of view of reuse of code otherwise, the licensing process must be there to define all items of customer's and your concerns. So you must license irrespective even if the deal is one sided. Also, you should include provisions for future development later for the same customer.

share|improve this answer
1  
-1, There is no reason you can't distribute the source code even if you own it. –  user606723 Jan 30 '12 at 15:22
    
@user606723 will you read the full sentence please? However, distributing code (to someone else) if the deal was exclusive, is not right. i.e. if you had developed the code exclusive for a customer distributing to someone else is not appropriate! –  Dipan Mehta Jan 30 '12 at 16:44
    
"alternatively you can tell them customer will have to pay less but you are legally owning the source. You can supply/install binary only to customer." <- this is what I am referring to. You can give non-exclusive rights to source code. –  user606723 Jan 30 '12 at 17:00
    
@user606723 isn't this covered in my answer as well? alternatively you can tell them customer will have to pay less but you are legally owning the source - what is the point of disagreement? –  Dipan Mehta Jan 30 '12 at 17:07
1  
@DipanMehta: I agree with user606723; and your latest edit hasn't fixed the problem. The problem is that "[...] alternatively you can tell them customer will have to pay less but you are legally owning the source. You can supply/install binary-only version of the software to customers [...]" makes it sound as though you can't give customers the source-code if you want to still own it. The fact is that you can still license the source-code to them for specific purposes, without giving up ownership and/or relinquishing all rights. –  ruakh Jan 30 '12 at 18:52
show 2 more comments

You can always use in your code other libraries, open source for example. Obviously client will not have copyrights over them. In special case, you can use libraries written by you. Client pays for customization - that part, that is designed for him and his business needs. Everything that is not user-specific and is to be used in multiple projects can be your own library. I see no problem there.

The problem would be if you reuse the interface or business logic, or even resell the same project to someone other. Utility code is something the client usually isn't aware of and doesn't care either.

share|improve this answer
1  
Of course, this would all have to be disclosed to the client. –  user606723 Jan 30 '12 at 16:17
1  
No, it wouldn't. Licences such as Apache or MIT allows commercial usage. –  Łukasz 웃 L ツ Jan 31 '12 at 8:40
add comment

The other answers are oversimplifying things. I don't mean to have a complete answer, just to point out a few things.

  1. You can give rights or you can give exclusive rights.
  2. If you give exclusive rights, you can maintain that as part of the agreement, you will retain non-exclusive rights. (This will allow you to use the code/program personally)
  3. Even if you don't supply exclusive rights, you can still supply non-exclusive rights to use, modify and distribute the source code. The two are not mutually exclusive.
share|improve this answer
    
-1 your answer doesn't cover ANY point that others haven't spoken before! –  Dipan Mehta Jan 30 '12 at 17:10
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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