|
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
|
|
|
|
|
You could place a copyright notice in the header of any pre-existing code files that you plan to use, and provide a license file pertaining to that code. Perhaps you could persuade them to accept something licensed under The MIT License[^]
Handling code snippets might be tricky, but if they are trivial, you could just rewrite them slightly for this customer. This Stack Exchange post may be helpful: copyright - How does fair use apply to code snippets? - Software Engineering Stack Exchange[^]
Caveat: I am not a lawyer, but this is the type of approach I would use.
|
|
|
|
|
Could you grant the customer an appropriate non-exclusive licence to the code? One that satisfies their desire to have a copy of the source that they can keep and modify, but they are not the sole owners of that code? Probably most important to you is that you don't want them to be able to restrict you from using it elsewhere, even on a competitor's project. That's the same kind of license they'd be getting from any open source code you used in their project.
If you're developing the code you're claiming ownership of at the same time as working on their project, then you might have difficulty proving you didn't charge them for developing that code, thereby making them the owner of it instead of you. So don't do that.
|
|
|
|
|
1. Explain that there are some code sections in the form of existing source code which are *already part of your own IP* and therefore you are unwilling to allow the customer to "own" these. However you are willing to provide a free license for the customer to use and redistribute said functions as part of the final binary. Or let them take the code and develop based on it freely without owing you anything else.
1a. Side-option here is to very quickly open-source that code, now the customer literally cannot own it, downside is, neither do you. But at least it's pretty easy to explain - "some parts of this code cannot comply with the contract as they are open-sourced under the 'Do whatever you want' license"
If you are OK with that then this probably a good option as it forces the customer to compromise on the contract text.
2. If #1/1a doesn't fly and the customer refuses to modify the agreement - then your price just went up by a factor of 10-50. I'm not joking - the customer is essentially asking you to hand over something that is *already your IP*, and for that they need to pay, since you could get into legal issues later on if you ever re-use that code so you must be compensated for the loss of that IP.
If a client refused to budge on this I'd fire them, I know that might not be an option for you but I would encourage you to dig your heels in a little bit on this. Chances are this is not the customer trying to own all your stuff out of greed, just a case of a standard contract where the customer wants to make sure you don't screw them later on by claiming ownership of the final codebase in its entirety, of do a bait and switch by forcing them to "licen$e these functions I own" later on.
|
|
|
|
|
Member 10346655 wrote: Side-option here is to very quickly open-source that code, now the customer literally cannot own it, downside is, neither do you
Open sourcing doesn't affect ownership. At least in the US, the copyright holder owns the code and distributes the code with a license. The license states what is required to use or extend the software. Most open source software uses one of a few well-known licenses such as the GPL, LGPL, MIT, BSD, or Apache.
|
|
|
|
|
Set up a separate corporation to own the shared library, and license the shared library from the other corporation.
For best case, have the customer also license the shared library directly under a maintenance agreement.
|
|
|
|
|
Joan M wrote: - The customer wants you to sign down a confidentiality contract in which it states that the source code is customer's property. Confidentiality is not ownership.
Things that you explicitelly develope for them, OK.
Snippets that you own before working for them, should not be affected.
Things that are everyday functions is just not possible... they don't own "hello world", "foo", "boo", the .Net Framework or the windows API.
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
yes... those should be 2 separate documents, but their lawyer made a strange mix there...
^^¡
and I'm not worried about confidentiality... but for being able to reuse code in the future...
|
|
|
|
|
Joan M wrote: but for being able to reuse code in the future... As others said...
Before pasting your functions to their project... CTRL+H (find and replace) and use var1, var2 and so on...
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
And when they ask about it just look at them with a mad man look and say "who is the crazy one now hu? hu?"
|
|
|
|
|
Hi All,
The dratted Win 8 or Win Hate as it was dubbed, I would have thought it was dead and buried. However someone in Site Data has to use Win 8 as the program, drivers won't work on Win 10? First I have heard of Win 10 playing up with Win 8... Any other known issues I have missed?
|
|
|
|
|