tags:

views:

655

answers:

23

I've developed a web application in ASP.NET for a client who now demands that I turn over the source code. There is no contract (all work has been done on a Time and Material basis) and he has not paid any extra money for the source. I have my own reasons for not handing over the code to him, but I need an opinion from the community.

Numerous analogies can be made (a baker does not give up his recipes, a car manufacturer does not provide schematics for his engines etc) but what I want are reasons for not giving up the code. Please provide one reason per answer so I can properly gauge the relative merit of each, and try not to make this a religious argument - if you want, create your own question 'Why are the reasons AGAINST withholding code from a client?'

Thanks much!

EDIT: I'm not asking for a legal opinion really, although they are instructive and keep them coming - I would prefer ethical reasons.

+2  A: 

If there is no contract then you are not obligated in any way to give him the source. If you feel strongly that you don't want to give him the source then don't! No one can demand anything from you that you are not contractually obligated to provide.

I could think of many reasons why I would not want to provide the source to a client but none of them matter - you don't need to justify your decision to the client.

Andrew Hare
I also need to justify it to myself (:
Ryan Shripat
what you are "contractually obligated to provide" is what you need a lawyer to figure out for you. Depending in the country (and state, if in the US), there may be statutory requirements external to the wording of your contract.
Ben Collins
+16  A: 

I'd get a lawyer instead of asking Stack Overflow.

John Ellinwood
He should ask LawyerOverflow
TheTXI
Not in a position to afford a lawyer...
Ryan Shripat
ooo lawyeroverflow.com is available - who's going to snap it up
thomasrutter
No need for a lawyer. Quite simply, in the US (or Canada) unless otherwise specified, the contractor owns the application. The contractor only licences the use of the application to the client. There is no legal obligation to release the source code to the client.
rick
+7  A: 

In Canada, I believe the supplier owns all intellectual property unless expressly stipulated otherwise in the contract.

Check the contract and check the law in your region.

billmcc
There's no law pertaining to that in my country, Trinidad and Tobago...
Ryan Shripat
+1  A: 

To repack the same code in a different wrapper and get more money for it :-p.

Xolve
+5  A: 

Caveat: Not a lawyer

Without a contract the risk is that you turn over the code and they simply walk away without giving you another dime. Whether or not that is an acceptable risk is entirely dependent on your situation.

However if there is a non-trivial amount of money involved I would get a lawyer. As a general rule, Devs don't make good lawyers :)

JaredPar
This is not only a risk, but a likelyhood. The only reasons they might want the source are either to archive it against future need, or to have someone else work on it. And most companies aren't smart enough to do the first.
Michael Kohne
+2  A: 

With web apps this can seem a bit tricky. Since a lot of the web domain is accessible to the public. Though obviously not your ASP code. When you built this client a web application, what is the material deliverable? If he is allowed to take this web site and app along with it and do as he please (move it to another server) then I'd say giving up the source code is inevitable.

How are your deliverables defined?

tkotitan
The front end code is visible (ASP.NET, no code-behind) but the Business Logic Layer and Data Access Layer are compiled DLLs that can be obfuscated, FWIW.
Ryan Shripat
A: 

One possible reason is to secure further gains from supporting the product: by being the only owner of the code, you're the only person that can charge for bug fixes or new versions/features.

Again, this approach would probably backfire in the real world, once client emotions come into play. If a client is unhappy enough with you to want to go to someone else, making life more difficult for them by withholding source code is not going to be a brilliant way to encourage them to stay. Giving them the source can enable you to leave on good terms which in my opinion is more likely to be good for business. What can please an unhappy client and repair a tarnished relationship and what is thougt of as a smart business move to protect your income here seem to be two different things.
thomasrutter
+6  A: 

It depends where you live and the laws there.

Some localities consider work you did (and were paid to do) for someone else a "work for hire" and consider all work done belong to the employer. Other localities don't unless there is a specific contract in place stating such.

Don't ask legal questions (especially those that can have severe financial impact) of a bunch of strangers on an Internet site. Instead, hire an attorney that is familiar with the laws where you live, especially related to the software industry. Doing anything else is just opening you up for major financial risk.

Ken White
Agreed. OP should consult a lawyer for information on his local laws regarding "works for hire".
Dave Sherohman
+4  A: 

You don't want the client messing around with the code. He might try to get someone cheaper who will screw up everything and then come crying back to you. You don't want to carry on with the code after that has happened!

So I would suggest you make a contract with the client: He can have the code free of charge any time he wants, but must then refrain from ever coming back to you about the code. Make him choose between possible maintenance in the future or source for a code-sweat-shop now.

This will serve two purposes:

  • client will rest assured, that they can have the code any time (minimize risk of you going out of business and his software gets discontinued)

  • code is not touched (and broken in subtle ways) by a third party

Daren Thomas
If my clients want to bring in someone cheap to mess up my code and then come back to me to have it fixed, I'm fine with that. I charge by the hour...
Dave Sherohman
Interesting idea, but yeah like Dave I think this particular problem could be better solved by charging by the hour ;)
thomasrutter
Charging by the hour will only work if your client trusts your estimates. But in this case, your client has already shown he does not. He is looking for a better offer and might just try to battle you. You lose.
Daren Thomas
+10  A: 

I didn't quite understand if this is the case or not, but one good reason would be if the client has not yet paid you in full. Handing over the code before the project is completely wrapped up or you haven't been paid every last penny would probably be unwise.

thomasrutter
A: 

You can always provide access to the code under a restrictive (lawyer-written?) license, in which you frase your concerns as limitations (see, but no touch, do not distribute, don't sue, no guarantees, copyright remains with you, etc..).

oɔɯǝɹ
+2  A: 

None

...............

Toby Allen
+2  A: 

If he "has not paid any extra money for the source" (emphasis added), then he has paid you money. If not for the source, what exactly has he paid you for?

Going into the relationship without any paperwork is a problem for both of you, but if I asked someone to develop software for me, I would expect to have the source, and I'd be upfront about that.

A custom-made application without the source is worth a lot less, may be close to worthless, since it's not maintainable. Of course the original coder is the preferred supplier for further work, but what if something goes wrong with that?

it's common that the person who pays for the work owns the source (be that your employer or your employer's client). Also popular is that you both have some rights to it. Cases were the user owns a licence to use the software, but not the source at all are more common with shrink-wrapped software - e.g. Windows Xp, MS Word, computer games, and is uncommon with software made to order.

Anthony
"If not for the source, what exactly has he paid you for?" Well, the binaries and an installer I guess. When I paid for CityDesk, I got the program's installer, not the source code.
Daniel Daranas
But CityDesk wasn't developed specifically for you on a Time and Material basis. It is not software made to order for you.
Anthony
+7  A: 

As both an ethical and legal issue, I would say the source code is his if he paid you to write it. Whether it was fixed-price or time-and-materials doesn't matter. If I pay someone to build me a car, I own the car, not just the right to ride around in it.

I've done a lot of contract work, often as part of a team. There has never been any question as to who owns the software: This is "work for hire", and the person who paid me to do the work owns the complete product. Ethically (contractually) I'm not even in a place where I can re-use the software I've written on other projects. I don't own it.

Same thing with writing. I've written a variety of documents. The person who pays me owns the copyright to the document.

Leonard
+2  A: 

Is there a way to decompile ASP.NET code? If so, then what about decompiling whatever executable(s) you gave the client? That way, they have "source" they can reference (and hopefully even recompile), but it's not necessarily useful from an ongoing-maintenance standpoint.

I think a lot of this boils down to customer satisfaction. If you want business from this customer in the future, then maybe you should give them the source to keep them happy. If they're already unhappy and you doubt they'll be calling you again, then I wouldn't give them anything (or the minimum required under the applicable "work for hire" statutes in your jurisdiction, as others have already pointed out).

In the future you should have a standard contract that specifically states "User is granted a non-exclusive, non-transferrable license to the Software", and charge extra for things like code escrow.

TMN
"what about decompiling whatever executable(s) you gave the client? That way, they have "source" they can reference (and hopefully even recompile), but it's not necessarily useful from an ongoing-maintenance standpoint." - VERY interesting.
Ryan Shripat
+3  A: 

Your client is paying you (in time and materials) to develop something. That something is the code you are writing. The code is not the 'plan' or the 'recipe', it is the product. You may subsequetntly compile it, but that doesn't mean the code itself isn't part of the product; i.e. what the client is paying for.

I think you'd struggle a lot to justify legally or ethically any attempt to withhold the code from them.

mdja
+2  A: 

I know you asked for one per answer, but I have too many for that.

  • Client owes you money
  • You used some fancy proprietary code that you are unwilling to release to anyone
  • You infringed on someone's copyrighted material and you can't give that away
  • You have permission to use other copyrighted material, but not to release their source; and you can't get permission to release it
  • You may lose the client to a cheaper dev source and you want control!
  • You don't have it anymore
  • The client has a reputation of removing your copyright notice from the source and re-branding it as their own. (Who really owns this anyway?)
  • Your code is U-G-L-Y and would embarrass you
  • You mentioned at some point that they wouldn't own the source. Doesn't need to be written down, but would be helpful.
  • Your price obviously didn't include the source. (Subjective, yeah I know.)
  • You used large pieces of code from another customers project and it is actually owned by them. You specifically stated in your last contract that... oh, never mind. :-)

If they assumed A and you assumed B, your best bet is to negotiate an agreement. Be willing to let it go cheap, but try to get more than cheap. If they get lawyers involved, you will have no choice but to give in or hire your own, but now you're looking at a net loss for the project (or claim hard drive failure and no backups).

Moral of the story? None, really. Just learn from any mistakes this time and don't repeat them in the future. Contract work is really tough when assumptions are made but not clarified.

Good luck!

dna123
+3  A: 

My humble $0.02 as a contractor/company owner of many years:

Ultimately, you own the code, period, Not your client. Especially since there's no contract. So going along the lines of your baker/automaker analogy, you're golden.

However, the bigger aspect to consider is that of not only future business with this client, but also how much "pull" they may have in the business community you're a part of. Politics is an unfortunate thing that shouldn't matter, but it indeed does on occasion.

My humble suggestion is you analyze your client's potential to do your business future harm by bad-mouthing you, regardless of whether those spoken/written things are true or not. Please remember that perception is reality in people's minds regardless of Truth most of the time. So if this client can paint a perceived bad picture in the minds of other potential clients, be very aware of their political reach to do your good name damage.

My bottom line humble advice: do everything you can to make peace. Be amicable and treat this client well regardless of how they treat you. If they cuss you out, you bless them back and ignore the cussing. And above all, CYA all along the way. IE: Have absolutely no communication with this client that can't be logged in some way. Then, if in the end things have to get messy involving lawyers, you'll have what you need to win.

I hope things work out for you!

Boydski
thanks (:Yep, politics do, unfortunately, matter.
Ryan Shripat
Sigh...what a bummer bro.Then my last suggestion: Offer to meet face-to-face. Let them know you're willing to do what it takes to work things out, but you need to be paid accordingly. Dress nice, look them in the eye, smile and treat them respectfully.And don't forget to spray yer pits. {-o)
Boydski
+1 for mentioning the aspects of politics and the client's emotions (how if they're unhappy with you, it can have negative consequences on your business).
thomasrutter
A: 

I personally would favor the approach by which you both retain some rights to the sources. I think this is the most ethical way to resolve the tension between your client's rights to the product whose development he funded, and your right to retain some control of your creative output.

You need to work out exactly what those rights will be with your client and with the help of a lawyer.

Ben Collins
A: 

If it wasn't agreed in the contract, then be right the code is yours. Especially in cases when the project you've done for the client contains parts of other libraries that you have created and reused for the project. It would have taken longer and would have cost your client more if you were to start from scratch. And if those libraries were proprietary, you may not legally be able to release your source code to him anyway.

Also, if your client is worried about you disappearing with the code or your company going under, etc., you can always use a software escrow, a third party to hold on to the code. And to only release the source code through a force majeure clause where due to unforeseen circumstances or some agreed upon conditions.

seanlinmt
A: 

As others have said, talk to a lawyer.

That being said, this is typically how I structure it with clients:

Client gets a rate (either time, or lump sum) based on what rights I need to give them. This means, the client either does not get the source code, gets the source code but I remain the copyright holder, or, the client becomes the copyright holder of the code and can do with it as they please.

Of course, the price of the work is influenced by who ends up owning what when the time comes. I almost always give clients the code, I encourage them to either buy my copyright or license a source release from me.

In the cases where I piece together something using bits that are covered by the more restrictive free software licenses (i.e. GPL), the client must pay me to assign my copyright of the changes if they hope to keep them internal. The client, on the other hand, is only bound by the GPL if they distribute binary copies to someone else, which is not likely to happen.

Many clients like this, because they know I am obligated to give them my source code .. however, unless they pay me for a copyright assignment, I'm free to give the modified code to anyone else that I please. So, that works in both of our favors. They know they'll get the code (I'm obligated by the GPL to provide it to them) and I know they'll buy my copyright (of my modifications).

Finally, when I provide the code .. its on a "you break it, you bought it" condition. If they go modifying things and the whole system breaks ... I'm not obligated to fix it for free.

Tim Post
A: 

well i think he is planing to sell your code to some one like Mar 2 said

Searock
A: 

Disclaimer: not a lawyer, <insert legalese I'm not resposible if your cat dies from reading this>

I personally don't believe in copyrights to "soft" stuff (even books, etc) the same way I don't believe in software patents.

However, if you feel that you own your code, then you don't need a reason to withhold it; it's simply yours. Do you need a reason not to give your car to your client? It's yours dammit, do what you want with it. The other party should be giving you a reason to hand it in, not otherwise.

And, if your contract doesn't say anything about the source code, then you have the final say.

hasen j