|
A problem, If you want the job, ( I'm still "oozing" from one I took a while ago. ) try to explain the problem to them. - For me, something related would start with the prints for a job ( that started with prints for a job ) and code for a job ...
You have "inherited" knowledge from past jobs, that's why you have value to them.
It is possible to build something for them while NOT copying any or your old files. But not possible to not use your old experience.
I can see trying to declare "this section is yours alone, I create it for this job, I don't take it away" but even that is tricky, you may hold the files separate, but they are still in your head.
If they can't understand the problem, and help with a solution, maybe you don't need the trouble.
( like I said, "oozing". )
Good luck,
dave
|
|
|
|
|
I don't think there is a problem with you re-using code, unless it is very specific and unique to that one customer. Which is probably more to do with overall end product of features, rather than the lines of code that come together to make said feature.
Imagine if you used a simple console output, such as:
Console.Write("hello");
Would that mean you can never use that again in another project? Of course not, they can't stop you using that. So what makes a 'block of code' any different? It's your intellectual property.
From the legal side of things it would really have to come down to exactly what is written in the contract, but keep in mind that just because something is written in a signed contract, it doesn't mean that it is automatically enforceable by law.
Personally I would just use common sense here. Imagine if you are the company and you found out that a particular 'bit of code' had been reused. Would you be overly bothered about that particular 'bit of code'? If yes, then perhaps the code is unique enough that you can't reuse it. But mostly I think the answer will be no.
Plus, unless you are copying some UI elements, it's pretty hard to prove code reuse.
|
|
|
|
|
musefan wrote: I don't think there is a problem with you re-using code, unless it is very specific and unique to that one customer.
Exactly.
It's much easier to enjoy the favor of both friend and foe, and not give a damn who's who. -- Lon Milo DuQuette
|
|
|
|
|
musefan wrote: Imagine if you used a simple console output, such as:
Console.Write("hello");
Would that mean you can never use that again in another project? Of course not, they can't stop you using that. So what makes a 'block of code' any different? It's your intellectual property. The question is how far does the above (sensible) example go?
Let's consider a painting. They put blue paint on a brush and rubbed it off on the canvas. Done before (prior art in patent terms) and cannot be held hostage. On the other hand, if you keep taking and smearing paint on canvas - at some point are you copying an existing work? Somewhere in that spectrum from a single brush stroke to a an art forgery is that boundary.
Neither can one demand exclusivity (patent, copyright) on something in public use for at least one year (in US) - so, even if there is no patent on the Beer Stein Lid, you cannot patent it yourself.
I do like the suggestion that if they don't want you to use existing (and thus not proprietary fro them) modules than they have to pay for you to re-develop it as legally unique for them.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
They can have the compiled program. Just put a high enough price tag on the source code.
Seriously, I couldn't give a flying hoot. How will they EVER be able to prove you have used the same code in a program for another client?
Anything that is unrelated to elephants is irrelephant Anonymous
- The problem with quotes on the internet is that you can never tell if they're genuine Winston Churchill, 1944
- Never argue with a fool. Onlookers may not be able to tell the difference. Mark Twain
|
|
|
|
|
Well, let's take an extreme example.
Someone who worked for Google now works for Bing and Bing suddenly becomes a decent search engine that just so happens to show the exact same results as Google...
I agree it'll be hard to impossible to discover, let alone prove, that code is intentionally duplicated.
I would copy and paste generic bits of code if they didn't have any specific customer logic in it.
That said, I consider it professional courtesy to not sell a customer's secrets or processes to other customers (whether I've signed a contract or not)
|
|
|
|
|
The source code you write is owned by the company, meaning you can't deploy that exact code or package at other customers.
That doesn't mean you can't recreate (parts of) the code from memory.
Of course it depends on the code.
When you make some smart use of some code pattern, you can reuse that all you like (because that's literally your job).
If your customer has some calculation they use to run their business, you can't use that for other customers (unless they use the same calculation, in which case you'll need to rewrite it from memory).
Reusing what you know is called knowledge and experience and it's exactly why this customer is paying you and also why the next customer will be paying you.
Just don't share anything that's specific to your current contract with others (which could also be specific code, but more often is about ideas, formulas and processes).
|
|
|
|
|
Sander Rossel wrote: Just don't share anything that's specific to your current contract with others (which could also be specific code, but more often is about ideas, formulas and processes).
Exactly.
It's much easier to enjoy the favor of both friend and foe, and not give a damn who's who. -- Lon Milo DuQuette
|
|
|
|
|
And what about the code I already had before starting in the project but that I've used in the project?
Who is the owner of that?
How can I be sure I'll be able to reuse it as many times as I want without legal issues?
|
|
|
|
|
Just specify in the contract what code that is and that you own it and you are giving them a free non-exclusive license to it, but that they don't own the code that you are bringing to the project that was written before the contract was signed.
#SupportHeForShe
Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson
You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
|
|
|
|
|
That would be it:
I'm the owner of the code that was done before the project.
They have a license to use it in any circumstance.
|
|
|
|
|
not just a "license", but a "free, perpetual, transferable" license - it never expires, never attracts an additional fee, and can be transferred to a new owner if the company is taken over. That last bit's important! Without it, software the company relies on might not be available to any new owner of the company, resulting in expense and potentially significant downtime. That in turn drastically reduces the company's value, so your client will need to see this sort of clause (if they have a half-decent lawyer!)
|
|
|
|
|
The only problem is that when I sign down the contract, I still have not started working on the project, therefore I still don't know what I could reuse...
|
|
|
|
|
Just list it all. Not the source code itself, but module A, module B, library A, library B, or project A, project B... You could also list filenames containing the source code. You would state if the code doesn't appear in the final project, then they have no license to it, just if it's included in the final.
#SupportHeForShe
Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson
You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
|
|
|
|
|
Joan M wrote: therefore I still don't know what I could reuse Therefore the contract is meaningless except to a lawyer (who will laugh with glee as they padd the account). I would go with that they have the ownership of the IP of the application you create for them but the code itself remains your property. Any industry specific IP they can identify and claim.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
What you could do is copy your code snippets to a "customised set" specifically for that job.
in that copy make a few changes - variable/method/class names and even comments.
they can own the set used for thir application(s), not the original.
I did a similar thing once, copied some code, and refactored/re-commented it into Nederlandse (just to throw off anyone looking at it, very few here speak it.)
alternatively for some snippets [those you are very familiar with even in your sleep] change the variable names to "a", "b", "c" ... and minimise the comments (i.e. just show input and output, not the way it achieves it or even any detail of what it does)
List<t> scrub(List<t> sl) - note: purposely obfuscated the parameter name to "sl" - why "sl" if it's not scrubbed?
after many otherwise intelligent sounding suggestions that achieved nothing the nice folks at Technet said the only solution was to low level format my hard disk then reinstall my signature. Sadly, this still didn't fix the issue!
|
|
|
|
|
Here also an interesting read: intellectual property - If you transfer all IP rights to client, can you still reuse parts of source code? - Law Stack Exchange[^]
To be pragmatical:
- You are not allowed to reuse.
- There is no way to change this.
- If limited to generic concept (string handling lists, parsers, file handlers, ... ), I doubt anything is ever going to happen if you reuse it despite above statements.
- The limit is your own ethic. To reuse examples stated above, if I worked for Google on the PageRank algorithm, and after being hired by microsoft Bing starts to act as a real search engine because of me reusing source code, I would say the red line has been crossed. If I reuse a hex to decimal string converter, it is illegal, but I have no problem with it, and most probably nothing is going to happen anyway.
|
|
|
|
|
I have portions of code that I reuse all the time in other projects (including freelance commercial work), and I am ethically not obligated to sign over this code because I package it as a library on GitHub with an MIT license (which anyone can then also use, too), and then use it in my other work from that source. If the client has any issues with this, all they need to do is review the code and they will see that it is sourced appropriately, and the MIT license is open enough that it won't interfere with any other license they want to slap on it.
|
|
|
|
|
SIEMENS make a drive, they offer some basic libraries to interact with it.
I do a "class" to interact with that drive...
Is that considered a "string handling list"?
Or once I've done that for one customer I won't be able to control a SIEMENS drive anymore?
The problem with ethic is that is not usable in a trial.
|
|
|
|
|
Joan M wrote: The problem with ethic is that is not usable in a trial.
You missed my point : My statement was, as soon as you reuse, you are breaking the IP law. Even if you rewrite it from memory, it is illegal.
This does not necessarily mean that you risk something in a trial, since there is the part where interpretation kicks in. In more situations than not, you do not risk anything.
But under this assumption, it is up to you to choose where you set the border line for you, hence the ethic limit.
Joan M wrote: once I've done that for one customer I won't be able to control a SIEMENS drive anymore
Yes you can, but not using the same code that the one you used for the first customer.
Again, practically, this does not make sense, however, it is how IP works.
|
|
|
|
|
then the only REAL way to do it is:
I'm the owner of it (IP).
And I license the code to be used in all possible circumstances by my customer.
Then I can reuse what is mine, and they also can.
|
|
|
|
|
The problem exists in Permanent employment as well. I had a contract that changed wording to (something like) 'all inventions, writings, creations etc done during the time that you are employed by the company become the property of the company'. I challenged by progressively weakening their responses. I queried if that meant that if I made a rocking horse (a creation) on a weekend whether they owned it (it was not a creation relevant to their business and whilst still employed by the company I was not 'on the clock'). Then challenged if ideas I've had for personal projects (by the previous response owned by me) could be used in their projects (they agreed that that was acceptable; otherwise I'd have to delete huge chunks of code written for them that included 'my' stuff). And then I asked about generic routines / utilities designed 'off the clock' but modified for their use 'on the clock'. At this stage, the management handed the problem to the Lawyers. Over a year later, I got a reply - read out over the phone and told that I would not see the written version. This, pragmatically, said they understood that you cannot carve up 'own' and 'company' work and they were happy for me to reuse anything that did not include company owned products or services and that I must remove any references to the company in the code (this was to remove any liability for them if anything untowards happen as a consequence someone using code that could be traced back to them). No, I cannot tell you who the company was (even though it does not exist any more).
I suppose that I was fortunate.
As a Freelancer, if you run as a limited company (or whatever the equivalent is where you live), then you work for yourself and you can make the same rules as they have. Namely, all code written as an employee of the company (you) belongs to the company (you). If they want access to your code, you can provide a perpetual one-off license for it at the cost equal to the cost of your contract with them. That means you get paid for it, they have the code, you have the copyright. (Actually, copyright has its own bonus. If you put a copyright for yourself in the code and they remove it then the code they have is not whatg you wrote for them and, if they get stroppy about it, you could bluff them for a breach of your copyright).
|
|
|
|
|
Anything you wrote before the contract is fair game. They don't own it, they own the way you combined it to make what they wrote
|
|
|
|
|
I'm not a freelancer, nor do I understand the robotics angle, so huge chunk of salt here...
Discuss with client, getting them to understand that you create/reuse libraries for common operations like logging (for example). Those things are not custom, thus not proprietary to their project, and they cannot have the source.
Once that meeting is over and you've established an understanding, consider whether the client is worth it. Remember that it's o.k. to turn down business for a number of reasons, the client being too much of a PITA is one.
Good luck!
|
|
|
|
|
Personally, I would move on to another client.
My old contracts stated that the client's intellectual property belonged to them and the consultant's intellectual property belonged to the consultant. When I would not provide the software, the attorneys argued over what this meant. My attorney, of course said the source code belonged to me. We settled, but they never got the source code.
The next time this came up, I was clear with the client what the IP clause meant. I explained that they would have the right to sell the end product and I would be available to customize the software for their needs under a separate contract. They tried to sell the software, but the prospective buyer demanded the source code, so my client sued me. I hired an IP attorney to handle the situation, but costs mounted. It was looking like it would cost me $40K to settle the case in mediation, so I took another friend's advice: He had been in a similar situation and when he made the final payment on his $50K attorney fees, his attorney told him that he should have just walked away. This is what I did. They didn't get the source code and the next year they filed for bankruptcy.
The last situation was a lot easier to resolve. I provided the client a contract that specifically said they would not get the source code. They thought that they were smarter than me, so they didn't sign the contract. At the end of the project, they owed me a couple thousand dollars, but demanded that I provide the source code before they would make the final payment. I suggested that they contact an attorney. In case you don't know it, the contractor owns the source code unless the right is specifically stated in a contract (if you are an employee, the source code belongs to the company). Their attorney advised them to pay or I would own their company. They paid up with no attorney cost for me. Easy-peasy! Never saw the client again.
Everything I developed was on my own equipment using commercial software, which I paid for. If the clients had gotten the source code, it would have been useless for them because they didn't have any of the commercial software packages.
Again, I recommend walking away from the contract. If you need to talk to an attorney, you need an Intellectual Property (IP) Attorney.
Mike
|
|
|
|
|