Mike R.
asked on
Best practices, Copyrights and legal for independent contractor software development
As a new-to-independent-contrac ting 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.
Thanks!
Mike
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.
Thanks!
Mike
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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."
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 :)
Doug
ASKER
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”.