Best practices, Copyrights and legal for independent contractor software development

As a new-to-independent-contracting coder, I'm interested in the best way to protect my ability to continue coding in my field.

I want to be clear, this question isn't just about the best way to maintain my copyright on a code...but information about what forms of coding contracts (I.e. work-for-hire) could lead to problems.

This is my point of concern: I'm a very niche contractor. I work almost exclusively in Python, and code almost exclusively biomedical models.

Point being, there are only so many idioms and frameworks that can be used in modeling. If someone hires me to do an enzyme-on-a-platform model, it would be nearly impossible to code a second model for another client (even if using a completely different enzyme in different solution) WITHOUT reusing or re-creating from scratch identical or nearly identical code.  

I have however discovered that entrepreneur companies (more than half my clients) won't accept the "perpetual and irrevocable licensing" I offer. They insist upon ownership of the code or a work-for-hire style agreement.

My fear (based on horror stories) is that I can code myself out of a career - inasmuch as people owning the code for the above model means I could (in theory) never do another such model again without fear of being sued for reusing or re-creating code I don't own.

I'm interested in advice, links and experiences as to whether this is a concern or a "boogieman" and what other people have found to be the best approach.

Mike R.Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I think it's a valid concern.  If you do a work-for-hire project for company A to build product A.  Then you do a subsequent project for company B, you certainly cannot re-use the code that you built for company A unless they specifically allow that (which would be very uncommon).

Re-using the "design" is a grayer area.  It would be very hard for company A to prove that the design infringed on their earlier work, but company B (or you) might be sufficiently concerned about the risk of a lawsuit (even one they couldn't necessarily win on the merits) to not wish to hire you.  If that design included anything deemed a corporate secret for company A, they would probably be on much better legal ground and might even win a case.  But if you are just using a similar approach and retyping all of the code you're probably fine.  For example, somebody who builds websites for restaurants is probably using a very similar design each time.

I suspect the real key to this is how small the community of companies is you might work for and how many of them would know or care about your existence.  To continue the website for restaurants example - if that was your specialty - your risk would be very small as there are hundreds of thousands of potential companies to hire you.  But if you were doing research development work for a top-5 pharmaceutical company and if the relevant teams know there's only 3 guys in the world who can do this research could get ugly much faster.

Ultimately if you remain concerned about this, the right solution is to spent $1,000 to talk to an intellectual property lawyer and ask them to try to craft language to go into your standard contract that is acceptable to a company hiring you, but leaves you on solid ground for subsequent projects.  I suspect you need language that gives complete ownership of what you create to the hiring company but allows you to explicitly re-use designs that you come up with in subsequent projects.   Then once you have that language you can see how well it goes down with a company that looks to hire you.

Hope that helps,


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Gary PattersonVP Technology / Senior Consultant Commented:
I've dealt with this issue myself from both sides - as a software developer, and as a start-up hiring technical talent.

Here are some thoughts:

1) Estimate how much you'll lose if you provide "work for hire" or exclusive licensing, and quote
 accordingly.  Quote two prices, one for work for hire, and one for "unrestricted license", and let the client decide what is most important to them: cost, or proprietary code.  If it is worth it to the client to pay the premium for ownership, then collect the fee and do it once instead of ten times.

Of course, if there is a lot of competition for these assignments, this approach can backfire and cost you the assignment altogether.  If that's the case, you'll just have to determine if the price you can charge is worth the risk of locking yourself out of future assignments.

2) Get an attorney to craft you some careful language.  Grant clients ownership of the code, but don't agree to restrict yourself from providing similar development services to another client.  Only allow them to keep the product, but don't agree to restrict the skills and knowledge that you already have.  We've used language like this in work for hire contracts in the US where we had similar concerns.  And don't keep a copy of work-for-hire code, so you can't possibly copy what you don't have.

3) Simply don't write code for hire.  Figure out a way to build this and package it, and sell it as a commercial product.  Build a package that contains the the models, or a toolkit for easily making the models, and sell the tools to the client as a commercial product (plus enhancements, setup, tuning, training, and maintenance).  If there is a easily-identifiable and easy-to-reach market for your models, then that's a better way to make money anyway.

4) Exclusivity for a time.  Offer exclusive rights for a period of time.

5) Understand the client's needs.  Startups are often on the hunt for funding.  One of the questions they get asked is "is your technology proprietary?  They want to answer "yes" on the core intellectual property.  Help them - provide them with ways they can say "yes", while still enabling yourself to make a living.  Provide each client with a small exclusive component that will protect the core IP that particular client is worried about, but just provide an unrestricted license for the "boilerplate" portions that aren't.

I've got more, but no time to write it up now.  I'll try to get back to it later when I have more time.

Bottom line: I say that if you have an application that you feel there is a high likely hood you will develop multiple times, you should give some hard thought to building a commercial product.  Collaborate with the client so that you both get the best deal out of it.  Help them with some specialized proprietary code, and cut them a deal on the product in exchange for being your alpha customer.

Check out my EE profile:
Mike R.Author Commented:
Doug and Gary. Thank you both for taking the time to write such insightful and detailed posts. I find both suggestions very valuable and I’d like to address some parts of them specifically. I apologize for how long this post is (already) turning out to be and greatly appreciate the help.

Let me start by saying that, in completely sincerity, one of my main goals is protecting my client’s need. I really want to ensure they’re ideas are protected. About half of my clients are entrepreneurs or industry biotech, and it’s critical they FEEL comfortable that their inventions (which is what they are) are safe.

The real crux of the issue is re-usable code and protecting the “whole” of their idea versus the “parts”used to build it. Carburators and cam shafts, versus the engine design as a whole that they get used in. I THINK I’M REALIZING THAT MY BIGGEST NEED at this point is finding the right wording to separate the “whole” from the “parts” and I’m having a difficult time finding that at a price I can afford

…so suggestions, links to text and recommendations to specific attorneys would be happily accepted :D

ONE THING TO NOTE: Is I already have separate NDAs and non-compete contracts with the client, that would prevent me from using his IDEA on my own (regardless of whter it was software, hardware – or a car engine). He can (and will) patent his physical product, which I could not recreate in any way – regardless. So, this is just about the wording of the CODE’S COPYRIGHT (that gets delivered with just the code…not the idea as a whole).

@Doug: My clientele is very limited. I do computational biology modeling…which reduces them to University labs and biotech innovators. I specialize in Python (more limited focus) and in cell biology and bioreactors (extremely limited). So, in this sense, I’m like that mechanic that only works on Nissans built between 1992 – 1997.  I AM working on expanding my focus :D

Let me give a real world example (that does not violate any NDAs :) to help break down the problem.

A potential client is an inventor. He is inventing a biomedical filtration unit (bioreactor). I would need to model …

1.      Enzymatic reactions on a shelf (very generic)
2.      An “ABC” enzymatic reaction on a shelf (less generic, but still generic)
3.      Fluid flow through the bioreactor (generic)
4.      Fluid flow through a specific series of chambers (very specific to his job)
5.      The entire “whole” – the combination of this client’s bioreactor including fluid flow through the specific shapes and chambers, in a specific order, at specific temperatures, using a specific medium, using the specific enzymatic reactions, in a specific order, etc. (this must be entirely his)

About 1: So, modeling an enzymatic reaction is something I will do many, many times in the next few years (one of my projects lasts - usually - 1 to 3 months). Although, on its most generic level, this code would be identical for all clients I COULD (if forced) rewrite this code in – maybe – 5 or 6 different ways. Beyond that there’s just no way to keep the code from looking similar or identical to SOMETHING I’ve already written.

About 2: An “ABC” enzymatic reaction on a shelf is more specific. It’s a relatively common biomedical reaction, and I might need to use THAT SPECIFIC reaction (maybe) a half dozen times in the next 10 years (depending on the direction my career takes). How many different ways I can write it is the same as above…so maybe I could re-write it differently each time. But it would be annoying (like having to find a way to make toast without a toaster – since you can only use the toaster once). Just unnecessary extra work.

About 3: Fluid flow through a bioreactor is something I will have to model dozens and dozens of times. All of the GENERAL code for modeling fluid flow would have to be reusable.

About 4: This is very specific to this clients bioreactor and, as such, this IDEA has to be exclusively the clients – without the specific code (actual text of the Python idioms) being used to accomplish this being (as parts) owned by him.

About 5: This “whole entity idea” must be entirely his. I have to be able to re-use the parts, but not recreate this “whole”. I do already have NDAs and non-compete agreements with him.

I think one of my potential concerns is also: how trivial a bit of the code can be before it can’t be claimed as copyrightable anymore. I.e. common idioms to python like …

‘’.join(c for c in Variable if c is not 3)”

…absolutely can’t be “copyrighted” otherwise Python programmers would be breaking copyright law by their second project.

@Gary: I am in the process of contacting attorneys and the issue is; generic copyright lawyers aren’t specialized enough in these software issues and can’t/won’t really help. The ones who are demand a $5000 retainer to say hello. As a new, individual person, startup, niche contractor…that’s about 2 months take home salary :(

@Gary: Part of the issue is making the client FEEL SAFE with the wording. I already do not do “work for hire” and my current potential client is feeling too squirrely about my “copyright being broken into parts” suggestions. So it’s going to cost me a $5000 job. Which sucks but is fine. I’m just hoping to find a way to alleviate this in the future.  

@Gary: The idea of two prices is interesting. Because of the specificity however, I suspect it might have to be the difference between $5000 and $50,000.


If you haven’t already fallen asleep…here’s the wording I have so far in my “new” copyright. This was pulled out of a combination of the internet and “my backside”.

TERMS i.f. “Software Module” or “Module”. Herein a Software Module (Module) is a component or part of a Software Application containing one or more programmatic routines, methods, functions or attributes. One or more independent modules make up a Software Application. Each module serves one or more unique and separate Software Application operations. Examples of “Modules” include but are not limited to a Python file containing individually callable methods, functions or attributes; a Perl “.pm” or “.pl” file, a Dynamic Load Library (DLL) file, or a Windows “.exe” file.

TERMS i.g. “Framework”. Herein a Framework is a concrete or conceptual platform where common code with general or specific functionality can be selectively used, specialized or overridden by developers or users. Frameworks are made up of libraries of Framework Modules which are reusable anywhere within a Software Application under development regardless of the Software Application’s “certain specific and defined functional results”.

TERMS i.h. “Software Application”. Herein a Software Application is a group of modules, to be used in a directly or indirectly interoperable manner in order to bring about “certain specific and defined functional results”. A Software Application is defined by the sum of its component parts and modules, and the term does not in any way apply to the individual components or modules outside the united group of modules regardless of their individual functionality.

TERMS i.i. “Framework Module”. Herein a Framework Module is a single Software Module containing code with reusable functionality that can be selectively used in whole or in part, with or without modification, as a component of a Software Application. A Framework Module is reusable within Software Applications under development regardless of the Software Application’s “certain specific and defined functional results”.

TERMS i.j. “Application Module”. Herein an Application Module is a single Software Module containing code with specific functionality upon which a Software Application’s “certain specific and defined functional results” are dependent. Constituent Application Module(s) are inherent to and defining of the Software Application’s character and are not useful outside of the Application Software’s “certain specific and defined functional results”.

Clause 1a. ASSIGNMENT OF OWNERSHIP AND INTELLECTUAL PROPERTY RIGHTS. Contractor agrees to assign to Client all right, title, interest and ownership, to do with as Client sees fit, in and to any Software Application(s) and constituent Application Module(s) as defined herein and which are governed under these copyright and licensing terms, whether or not patentable or registrable under patent, copyright or similar laws. This Clause in no way invalidates Clause 2, ‘RESERVATIONS FOR “Contractor” ‘. Applicable Software Application(s) and Application Module(s) will be identified as such by being assigned to Clause 1a in the module’s headers.

Clause 1b. PERPETUAL AND IRREVOCABLE LICENSING TO THE CLIENT OF “FRAMEWORK(s)” AND “FRAMEWORK MODULE(s)”. Any Framework(s) and Framework Module(s) which are governed under these copyright and licensing terms are authorized for perpetual and irrevocable use by Client, to do with as Client sees fit, including redistribution, copying, modification and inclusion in other copyrighted works authorized for and by Client regardless of whether part of a profit or not-for-profit distribution. This Clause in no way invalidates Clause 2, ‘RESERVATIONS FOR “Contractor” ‘. Applicable Framework(s) and Framework Module(s) will be identified as such by being assigned to Clause 1b in the module’s headers.

Clause 2. RESERVATIONS FOR “Contractor”. The entity(s) “Contractor” reserves the right without limitation or exclusion to and for the use, re-use, sale, re-sale, distribution, and re-distribution of Framework(s) and Framework Module(s) as defined herein, including in other free, sold or copyrighted works, for this or any other Client, regardless of purpose, whether for-profit, not-for-profit, or distribution under public license. Copyright and ownership for all Deliverable(s) governed under Clause 1b herein remain solely in the possession of the entity(s) “Contractor”.
Gary PattersonVP Technology / Senior Consultant Commented:
You lost me at "herein".  I'm not an attorney, and even if I was I wouldn't give legal advice in a forum like this.

As I see it, you have 4 basic choices when it comes to agreements:

1) Hire an attorney to turn your wishes into language.
2) Find an off-the-shelf agreement and use it unmodified - with or without an attorney.
3) Find an off-the-shelf agreement that is close and modify it - with or without the assistance of an attorney.
4) Write it yourself - with or without the assistance of an attorney.

This is one of those risk/reward decisions that you have to make for yourself.  I'm a fan of user-written agreements when the concepts are simple.  When the concepts are more complex, I want some guidance, or a template to follow.

Constructing a complex licensing agreement like this is going to cost you.  You seem concerned with copyright.  Copyright is just one of the issues you need to address.

My suggestion is, and will be the same:  

Create a "product" out of the "generic framework" bits.  You can then use an off-the-shelf commercial product license for it at little or no cost.  Google "software licensing agreements" and "software licensing templates" to find off-the shelf agreements that are already attorney-vetted.  Companies and users understand these agreements and are very tolerant of them because they see them (and usually execute them without thinking) every time they buy, download, or install a software product.

Then, for the custom bits, you just do a work-for-hire contract and give all rights to the client.  Again, this is easy, off-the-shelf language, and should alleviate the questions and concerns about ownership.

Seems to me a lot simpler than creating one-off Frankenstein agreements that are going to cost a fortune, confuse and worry your clients because it is different from what they usually see, and may cost you sales.

We do this same basic thing with reusable code.  Here's how I approach it with the customer:

"In order to do this for you for the best price, I suggest we split this into two components: the secret stuff, and the generic stuff.  We'll build the generic stuff cheap, and we'll keep it to reuse for other projects.  The secret stuff, we'll build just for you, you own it - we won't even keep a copy.

We'll license the generic stuff to you just like any other software you might buy off the shelf.

The secret stuff we'll build custom for you as work-for-hire, so you'll own it - just as if you hired in-house developers and built it yourself."
"In order to do this for you for the best price, I suggest we split this into two components: the secret stuff, and the generic stuff.  We'll build the generic stuff cheap, and we'll keep it to reuse for other projects.  The secret stuff, we'll build just for you, you own it - we won't even keep a copy.
I agree with Gary's suggestion here - this sounds like a workable approach given your example.  Explicitly dividing up the logic into the re-used and the custom.

Beyond that there’s just no way to keep the code from looking similar or identical to SOMETHING I’ve already written.
One comment on this.  From my (albeit non-attorney) understanding of this - copyright treats identical and similar very differently.  Copyright is all about the explicit expression of an idea.  Not the underlying concept.  So rewriting code, even if it implements the same logical design, should avoid any copyright issues.  A patent could be used to protect the design (since they deal with processes) while copyright coves a specific expression.  It's basically why two people can write books on J.F.K's assassination and reach the same conclusions for the same reasons - as long as they don't actually copy each others words.   So it really matters here if you actually re-write it (different method names, different variables etc.) or you just copy/re-use it.

Like Gary I'm not going to pitch in on the specific legal language - that's getting beyond my skills :)

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.