I'm trying to get into freelance/contract work for computer programming. Many clients want to "own everything" and have terms like "once paid, the developer transfers all rights to the client".

Does this mean I cannot reuse any parts of the source code, even small simple ones? For example if I build a program for a client, and part of the program involves converting 24 hour time into AM/PM time then can I reuse the code in another project or do I have to build it from scratch again? How could one even tell the difference?

What about abstract things related to programming itself, like data structures. C++ doesn't have its own linked list so if you use on in a project and transfer all rights to the client, then does that mean you can't reuse that library in another project? Does that mean you can never use a linked list again (I'm guessing not but then does it really matter if you build the code from scratch vs copy/paste from a previous project)?

I'm guessing there's some kind of threshold that has to be met for copyright to apply (it can't be too trivial or common place).

I'm not trying to rip of the client, I'm legitimately confused as most understandably want to own the source code but does that mean you can't reuse common features between projects?

  • 1
    The meaning of "all IP rights" is not clear enough? – Nij Nov 3 '17 at 5:00
  • @Nij no. What if the source code is not considered the product itself? – drinkbeer22 Nov 10 '17 at 3:40
  • 1
    The source code is IP. It was created as part of the product. Its ownership will be transferred. – Nij Nov 10 '17 at 3:52
  • @Nij you seem to be assuming this is a work for hire. – drinkbeer22 Nov 13 '17 at 12:43
  • 1
    Yes, that is typically what freelance, work, and paid mean. Since you use all three, it's more than an assumption, it's a virtual stated fact. – Nij Nov 13 '17 at 17:14

It does mean that you cannot reuse any parts of the source code, even small simple ones. You would have to rebuild the code from scratch. There is a significant chance that the code would be "substantially similar" to the code that you were hired to build, also that if anybody else were to write a bubble sort or 24-to-am/pm conversion routine, it would look the same, where even variable names (which should describe function) are the same or very similar. In case of an infringement lawsuit, you would have to defend yourself by showing that there are only a few ways to code a given function.

Copyright protects only the "expression", not the abstract idea. A linked list is an idea, which can't be protected by copyright; same with recursion, pointers, stacks, object-oriented programming... Anything that involves copy and paste is infringement. If you re-read the copyrighted code and then try to reconstruct it, you probably crossed the infringement line. If you remember the problems and solutions and accidentally write somewhat similar code, that is probably on the safe side.

From the perspective of the programmer not wanting to always reinvent the wheel, it would be most useful to make a distinction in the contract between "the essentials of the customer's program" versus "incidental utility work". The difficulty will arise in saying specifically what is essential vs. incidental. For instance, I know that if I were to hire you to develop a speech-recognition system, low-level audio-acquisition and encoding would not be essential to my purpose, whereas DSP parsing routines would be the center of my interest. The programmer would then want to retain recycling rights to all non-essential code.

  • 1
    What can be included in the contract to protect the developer from being accused of infringement when he remakes a very simple/common function for another product? It seems like a waste of time to have to remake it from scratch. – drinkbeer22 Nov 2 '17 at 3:40
  • It may help to explain to the client that this is like telling a carpenter to build something but explaining that if they want to use any tools, they have to find a new way to build them, build them from scratch, and destroy them after this project, never using that method of building them again. Transfer of IP should be restricted to things specific to the application and an irrevocable, transferrable license to everything else. – David Schwartz Nov 2 '17 at 18:14
  • @DavidSchwartz: Add "non-exclusive" to the license to avoid trouble. – gnasher729 Nov 4 '17 at 1:42
  • If you put in "non-exclusive" in your contract to write the code for Word 2020, that may mean you also have the right to use that code and sell it, for half the price. I presume that their lawyers would catch that and the contract would go elsewhere. – user6726 Nov 4 '17 at 1:53
  • @user6726: David Schwartz said "transfer of IP restricted to things specific to the application and license for everything else". So no Word 2020 specific code for sale. But a library of useful things that can be reused from contract to contract. – gnasher729 Nov 4 '17 at 20:20

There is actually code that I have written several times. For my private use, and for use at three different employers. Each time without referring to any previously written code. It's a waste of time, but my employers paid for it.

If you do contract work, then you need to put into the contract what you want (if the other side agrees). If they want full copyright, then you write everything from scratch for them and get paid for the time. It is obviously better for everyone involved if they only get copyright for things written specifically for them, and a irrevocable, non-exclusive, unlimited license for any utility functions written by you (assuming the use of such utility code benefits them as well).

Irrevocable, non-exclusive, unlimited license means they can do with your software whatever they want, for as long as they want, but they are aware that others might get exactly the same license for the same code and can't complain about it, and you are still the copyright holder and have all the rights of the copyright holder, and they can't complain about that.

  • Thanks I thought of the license part, just one question, what is "unlimited" mean in this context? In other words, what is the difference between a limited and unlimited license? – drinkbeer22 Nov 10 '17 at 3:38
  • Limited means just that: there are limits on the usage under the license. Unlimited means just that: there are no limits on the usage under the license. – Nij Nov 10 '17 at 3:54

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.