Freelancers: How do you cope with that?
-
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.
-
Hi all, - Customer asks you to make a program. - To do that program you may need functions, code snippets... that you already created time ago. - The customer wants you to sign down a confidentiality contract in which it states that the source code is customer's property. - The problem with this is that you must sign down the confidentiality contract before starting working: you make the program design afterwards so you don't know what you will reuse at the end. - Working in the industrial sector programming, libraries usually are not encrypted/linked therefore it's not possible to specify that all the code in certain library or file is left out of the contract, and in some systems you can't separate the code in files as you'd like... - I can't give the source code at the end as some of my customers ask me to store the repositories in their servers so the code is directly there since the beginning. I need to get legal advice but the lawyers I've contacted doesn't understand a thing about my questions... Have you solved this kind of situation? And if you have... How? Thank you all! :beeR:
www.robotecnik.com[^] - robots, CNC and PLC programming
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).
-
"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.
-
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).
Best, Sander sanderrossel.com Migrating Applications to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly
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?
www.robotecnik.com[^] - robots, CNC and PLC programming
-
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.
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.
www.robotecnik.com[^] - robots, CNC and PLC programming
-
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?
www.robotecnik.com[^] - robots, CNC and PLC programming
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.
-
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... :sigh:
www.robotecnik.com[^] - robots, CNC and PLC programming
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.
-
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 _inter_nationally. :)
#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
-
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?
www.robotecnik.com[^] - robots, CNC and PLC programming
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
-
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.
www.robotecnik.com[^] - robots, CNC and PLC programming
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.
-
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.
www.robotecnik.com[^] - robots, CNC and PLC programming
-
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
-
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
-
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...
www.robotecnik.com[^] - robots, CNC and PLC programming
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
-
Hi all, - Customer asks you to make a program. - To do that program you may need functions, code snippets... that you already created time ago. - The customer wants you to sign down a confidentiality contract in which it states that the source code is customer's property. - The problem with this is that you must sign down the confidentiality contract before starting working: you make the program design afterwards so you don't know what you will reuse at the end. - Working in the industrial sector programming, libraries usually are not encrypted/linked therefore it's not possible to specify that all the code in certain library or file is left out of the contract, and in some systems you can't separate the code in files as you'd like... - I can't give the source code at the end as some of my customers ask me to store the repositories in their servers so the code is directly there since the beginning. I need to get legal advice but the lawyers I've contacted doesn't understand a thing about my questions... Have you solved this kind of situation? And if you have... How? Thank you all! :beeR:
www.robotecnik.com[^] - robots, CNC and PLC programming
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
-
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...
www.robotecnik.com[^] - robots, CNC and PLC programming
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
-
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.
www.robotecnik.com[^] - robots, CNC and PLC programming
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!)
-
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...
www.robotecnik.com[^] - robots, CNC and PLC programming
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[^])
-
Hi all, - Customer asks you to make a program. - To do that program you may need functions, code snippets... that you already created time ago. - The customer wants you to sign down a confidentiality contract in which it states that the source code is customer's property. - The problem with this is that you must sign down the confidentiality contract before starting working: you make the program design afterwards so you don't know what you will reuse at the end. - Working in the industrial sector programming, libraries usually are not encrypted/linked therefore it's not possible to specify that all the code in certain library or file is left out of the contract, and in some systems you can't separate the code in files as you'd like... - I can't give the source code at the end as some of my customers ask me to store the repositories in their servers so the code is directly there since the beginning. I need to get legal advice but the lawyers I've contacted doesn't understand a thing about my questions... Have you solved this kind of situation? And if you have... How? Thank you all! :beeR:
www.robotecnik.com[^] - robots, CNC and PLC programming
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!