|
Yes, that would be easy if the code is linked into a library...
But when you program robots or PLC's usually you can't do this as the code must be copied into the project as is...
|
|
|
|
|
I work at a robotics integrator and we've had similar situations in our engineering team. In the end, it usually came down to talking to the client about it.
These kinds of things are usually designed to protect the client from someone coming back later and demanding money. The code you'll be writing for this project will be owned by them and therefore never require a license agreement.
Are the function and code-snippets truly unique and novel or are they common implementation patterns that you apply to many projects? Just remember that if you write a for-loop for someone else doesn't mean you can't ever use a for-loop ever again.
So talk to the client. Let them know you have these functions and code snippets that you've used prior and plan to use in the future. That will help clear up the root issue they're trying to protect against.
...never send to know for whom the code faults; if faults for thee.
|
|
|
|
|
Pixelfish wrote: So talk to the client. Let them know you have these functions and code snippets that you've used prior and plan to use in the future. That will help clear up the root issue they're trying to protect against.
Although I don't disagree with what you have said, I just want to make a point that you should be careful what you talk to a client about. If this client is paranoid (maybe they have been burnt before) then this could get their tails up and cause more problems than it's worth.
This is even more so if the client is 'uneducated' in the world of programming - it might be nigh impossible to convince them that code by nature will always be 'similar', and they could easily just assume you are trying to scam them. Maybe even enough for them to decide to cut their loses and find someone else.
modified 9-Jan-20 9:54am.
|
|
|
|
|
"This code helps me develop faster, and therefore more cost effectively"
"I can do it without it, but the project will cost more and require more testing"
hack everything.
|
|
|
|
|
This is easily understood by the customer...
but will it be understood by a judge if a contract says the opposite?
and which would be the legal way to write that down in a contract?
|
|
|
|
|
If the contract is already in play, I don't know what say. This obv would only work if it was ironed out before anything was signed.
Sorry, I don't know what to tell you.
hack everything.
|
|
|
|
|
Still not signed down...
But I need to find the right way to write this stuff...
Searching for software specialized lawyers in my area and I'm not lucky at all...
|
|
|
|
|
I'm sorry to hear that. Best of luck to you.
Maybe you can find one that could consult long distance. My hubby works with some immigration lawyers in seattle that way sometimes (he's one of the few people in the world that is a non-native mixtec speaker)
Since it's mostly paperwork, it seems realistic, and it might widen your net when you search if you look nationally.
hack everything.
|
|
|
|
|
Or in Joan's case internationally.
#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
|
|
|
|
|
I wouldn't take the term "library" too literally. You have an existing range of code "snippets" that you have either developed yourself or taken from the public domain, that's your library. Some of the "library" may even just be in your head, like how to open a file. But software development is about how you put those pieces together to achieve a specific result. If you try and get into much more detail than that, you can argue that the word "public" has been take from prior copyrighted works; ultimately, someone could copyright the values 1 and 0 and we'd all be stuffed.
I come across this issue quite frequently. At one stage I'd developed a market-specific application for a client, and staff members from that company left and started up (several different) competing companies and all came to me asking to write them the same application. Once non-competition clauses in my original contract expired I was able to provide very similar applications quite quickly because they were composed of basic generic building blocks that I use in virtually all my apps (a framework, effectively) - things like error logging, data access, configuration options; but also stuff like postcode validation/formatting, google address validation etc. I already had the domain "knowledge" so bolting these together was relatively simple. At times I couldn't quite remember how to do certain stuff so I might refer back to other code I'd written, but wouldn't say I "copied" it as such. At one stage I also translated the code from one .Net language to another, which was a trivial process but resulted in different source code.
If concerned about legal redress, you might want to refer to the process you're undertaking as "building" an application, rather than "developing" it. The size of your building blocks varies, and some might be used elsewhere; but you're putting them together in a unique, bespoke way for this client to achieve their specific goals. (See Playing all the right notes[^])
modified 10-Jan-20 5:25am.
|
|
|
|
|
You'd probably need to clarify what they mean by "property". Giving someone the source files and agreements that the code was written uniquely for them, or that you won't use the same code elsewhere are different things.
|
|
|
|
|
F-ES Sitecore wrote: you won't use the same code elsewhere
Is what they mean...
|
|
|
|
|
If that's what they want then it doesn't seem like a tenable contract. If you operate within certain industries you have to respect and understand the basics of how things work, and the fact that you might include libraries etc that don't belong to you is surely the norm in almost all software development.
|
|
|
|
|
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!)
|
|
|
|