views:

258

answers:

6

I have always included clauses to transfer to my clients full author, ownership and use rights for all the source code, original images, original resources, etc. I develop/create for them.

Of course, I retain author, ownership and use rights for my libraries and I usually do not include source code for those. If the client requires my library’s source code, then I ask a premium for those and I provide them with the proper use license and I include the needed restrictions on allowed use.

I really see not the need to retain rights for myself or my company. A client’s work is just for them. I never reuse code (even if I have to write some process again, I do not see it as code reuse).

Why lots of companies/programmers retain author, ownership on commissioned work?

+2  A: 

I imagine it is to protect them from being sued if they ever do reuse code (on purpose or not).

BoltBait
Thanks BoltBait. This is a very good point. What we do is to release to the client the part that is particular to their solution. The rest (if a general routine is required) is implemented as part of our libraries.
vmarquez
+1  A: 

In case they write the next Google.

JasonS
Ha! Good for them. If this was my client's idea. It is THEIR's.If you reffer in case WE write the next Google. Believe me, I would never implement my "magic" for any client. ;)
vmarquez
+4  A: 

If one client commissioned it, chances are others will find it valuable as well. Often, developers will retain ownership so that they can exploit later opportunities. Alternatively, they might charge more in exchange for relinquishing rights to the work.

erickson
Thanks. Your point is correct. In my case, we are usually contracted to cover very particular needs/implementation so, reuse of the code that is particular to a client’s need is usually not possible for other clients. Which IS reused in any case are our own libraries.
vmarquez
+2  A: 

There might be a number of reasons for this. The most common one would be leverage. If part of the application you develop has broad applicability, the you might be able to retarget substantial parts of the solution to other clients. This would achieve one of two things: Shorter time to market which would imply a lowest cost for the client, or on fixed bid projects, bigger margins for you.

Another case could be to protect yourself. Your example itself is somewhat of a case study. You give the client the full rights and source to the work you do for them, but you retain the rights to your libraries, they pay extra, etc...

Depending how the contract is actually worded, if you use "your" libraries as part of the final deliverable, wouldn't that be work you actually create for them. If you did not include those libraries, would they still have a complete product. If not, then is not your library part of the work you did for them? Why should they pay extra for that? Lawyers love that kind of arguments. Of course, if you have friendly and satisfied clients, then this would not likely be an issue, but sometimes things don't go so well.

If your contract says something like "client has a right to the code, to do what they want with, but you retain your rights to do what you want with the code", then there is no gray zone. As with everything legal, hire a good lawyer.

Benoit
We leverage common code by retaining non specific-client's-need-code in our libraries. Usually what we put into our libraries in any particular project is dim. This might have to do with the fact we use to do very specific solutions.
vmarquez
We provide them with their's solution source code and our's libraries binaries. That is what is included with the development-project price. Source Code for our libraries can be negotiated at a separate contract/license and price.
vmarquez
+2  A: 

The earlier answers have it right and are both right. There are two basic reasons:

  • First, as you build experience in a particular area, you can accumulate knowledge across multiple customers and be even more valuable to future customers, provided that you are able to reuse what you developed in the first place.

  • Second, it is not always 100% clear where intellectual property rights begin and end. If you grab some clever code snippet from the last project for the next one, are you reusing “too much” so as to infringe the rights you gave the first customer? Best defense against a customer coming back and claiming infringement is not to give them the ability to do so in the first place.

One further point. Why would your customers need to have legal ownership of the code anyway? They can get all the legal rights they need to use your code by having a license. Having ownership on top of that does nothing for their ability to use the code and it prevents you from re-using it. (Of course the counterpoint to that is that they may want to prevent you from making “their” concepts available to a competitor if theirs, but there are other ways to address that.)

Will M
Thanks Will. We usually work for clients that have their own in-house development teams. Sometimes we even include their programmers/coordinators within our externally-provided projects.(... continued ...)
vmarquez
It has been always my decision to let them get the proprietorship even at the risk of them to give a future project to another provider. In general, we are called for the next one. It works for us. I think this practice does a lot in gaining confidence in us (b/c confidentiality, no compete, etc.).
vmarquez
+1  A: 

No body has mentioned this yet, but I always assumed companies did this to make it very difficult to hire anyone else to make program enhancements later on. This is obviously especially true if source code is not provided.

Enhancements can often be charged at a premium later for the actual amount of time the change would take to implement. I have seen such requests as adding extra datagrid filtering costing thousands.

PeteT
That's correct petebob. The other way works great for us. Helps to gain confidence with the client. In general we are called again when new projects with the same code or other code are required.
vmarquez