问题
I am working on a project at work and see an opportunity to extract and abstract some functionality that is part of the project and release it as open source.
I have a hard time accepting the idea that this functionality should remain proprietary and believe the open source community would get a major benefit from it.
Would this be unethical without consulting my employer?
Also, my boss is a little on the controlling side and likes to Google people on a regular basis, so I suspect he will discover my open source release sooner rather than later.
Since he is strictly opposed to releasing any functionality as open source and would fire me for doing so, is there any other avenue I can use to release this code?
How have others approached this dilemma?
I was considering rewriting the code so that it is indistinguishable except in functionality from my employer's code - would that help or am I on the road to prison for thinking this way (this code needs to be released! - it's driving me crazy!)?
回答1:
It seems you've answered your own question since you know your boss would object. However, if that's not enough to make you reconsider releasing code you've written while employed by an employer that cares about this then consider the real-life example of Perl developer "Tilly" -- Slashdot: Beware Employment Contracts .
Tilly wrote significant code used in Perl. The Perl community became dependent on his work to the extent when his employer threatened to sue him for releasing code developed while he was under contract it rocked the Perl development community. Eventually the employer decided not to pursue its rights for the already released code, but things could have gone very wrong quickly.
Do yourself, your employer and potential users of your code a favor: don't release what you don't own. If you want to fight for the right to release code while employed, win that right BEFORE getting an unsuspecting userbase dependent on your code.
You probably want to read Tilly's thoughts on the subject of Professional Employees and Works for Hire.
回答2:
I can't see how you have any legal or ethical basis for releasing your employer's code as open source without your employer's consent, even if you rewrite the code. If you do this and your employer finds out, best-case scenario is that you get fired. Worst-case scenario is that you get sued. If I were your employer, I'd do the latter.
By the way, since you say that your employer regularly googles the employees, posting this question here under your own name may not have been a good idea.
回答3:
Whether something is ethical depends on your ideas of what is right or wrong. In this case, you and your boss are likely to have different ideas, therefore I'm not sure the question is meaningful.
What you really want to know is whether it is legal. This depends on both your local law and the terms of your employment contract. At least here in Belgium, the company will have copyright on all of the work you do for the company unless the terms of your contract explicitly specify otherwise. I believe this is typically the rule elsewhere also. The US copyright law for example covers this as "works made for hire":
(b) Works Made for Hire. — In the case of a work made for hire, the employer or other person for whom the work was prepared is considered the author for purposes of this title, and, unless the parties have expressly agreed otherwise in a written instrument signed by them, owns all of the rights comprised in the copyright.
So no, you cannot just take the work and slap a free software license on it.
However, copyright only covers implementations, not ideas. Again from US copyright law:
In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work.
This is the difference between patents and copyright. Therefore you are free to create a new implementation if there are no patents on these ideas.
Edit: as some commenters remarked, your employment contract may include non-compete or non-disclosure clauses which may apply even to reimplementations.
Edit2: if a non-disclosure clause is violated, then trade secret law may apply. And as you can read in that law (or the answer of Tim Howland) the penalties for "Theft of Trade Secrets" can be quite harsh.
回答4:
Its illegal and unethical, and if you even write it on your own without "rewriting" the original code, you're in violation of your employment contract.
By the way, start looking for a job. I'm your boss.
回答5:
Not only are you screwing over your employer who paid you to create the code, you are also screwing over anyone who adopts your code in good faith as part of their project. If you pass off code to others that you don't have legal rights to use, you will be forcing them to rip out your code and reimplement it from scratch when your theft - and it is theft - is discovered.
EDIT: Several commenters below seem confused and think this is an issue with copyright law, and don't classify borrowing an employers source code as theft, as the employer still has their original property. However, the employer has lost something that is potentially quite valuable to their business- the exclusive access to their code, offering them a competitive advantage. This doesn't have anything to do with copyright (although if you release your employer's code with your own copyright, as is required under most open source licenses, you are clearly committing fraud)- the issue is that this is theft of trade secrets. If the code is integral to the employer's business, then it can be considered a trade secret. Trade secrets don't have to be registered with the government, so you will likely be going to court if your employer is pissed off enough. If you have a good lawyer, you'll settle immediately to avoid prosecution.
Intentionally revealing a trade secret - also known as Trade Secret Theft- is a federal and state crime, punishable by up to 10 years in prison and a 500,000 fine. In other words, you aren't just screwing your employer, screwing any projects that adopt your code in good faith, but you are also lining yourself up for significant legal jeopardy.
回答6:
That's Intellectual Property theft and, unless you're living in China, it's illegal.
I admire your consideration of the open source community. Unfortunately you are bound by the law - that code is actually your employer's property, so releasing it is equivalent to taking their office furniture downstairs and handing it to strangers.
Even the concept behind the code may belong to them so it would not matter if you re-wrote it substantially.
No one on this forum would recommend illegal or unethical activity, so if you do try to circumvent this - and I'm sure there are ways - you would be on your own, unless you decide to consult your local criminal community for tips.
回答7:
I'm not a lawyer. Best to consult one.
But it does sound unethical to me.
I don't know about your employment agreement, but if you wrote it on your company's time and were being paid I would say that the software belongs to them. If you have a no-compete clause, even the rewrite would be dicey for you.
Best to consult a lawyer.
回答8:
Yes, it would be unethical to release your code as open source without your employer's permission. Unfortunately, there's not a lot you can do. I wouldn't recommend making an open source version of proprietary code you're working on. There's just too much room for lawsuits.
DISCLAIMER: I am not a lawyer.
回答9:
This is probably what most of us would refer to as an "X files" like reponse ;-)
Just for the record, I also think that -at least under the outlined circumstances- this would boil down to being "intellectual theft", so it really comes down to the specifics in your contract.
Also, personally I would ask myself a couple of questions, like:
- why do I really want to release this source code to the public?
- what is so revolutionary about it?
- is it worth the possible hassle (i.e. being unemployed/getting sued)?
So, I cannot only relate to your situation, but also to your employer's situation-and I would in fact be very fed up with an employee who simply releases my IP into the open/public domain (or as open source), certainly if that means that I may sacrifice a competitive advantage. Have you signed any NDAs?
Thus, it's indeed an ethical dilemma.
On the other hand, I can also understand the sentiment that something really needs to be made known to mankind (if that's really the case), so if your code were to solve major worldwide issues like "world hunger", "world poverty", "cancer", "AIDS", or the "energy crisis" by coming up with clean nuclear power, then for god's sake: what the heck ;-)
No, honestly: if I were in a similar situation, where I would be convinced that releasing info into the open -that I developed under contract- in order to possibly help mankind in some major way, I would consider distilling it down into very abstract, algorithmic basics that could be easily and anonymously posted to websites like wikileaks.org.
In fact, just re-implementing the algorithms in a niché language (think brainfuck ;-)) could also help obfuscate the origins, there are so many niché languages that are not mainstream, and which are not necessarily understood by many developers. In fact, you could even encrypt or password-protect your info, so that it will need to be unlocked by whatever 3rd party is interested in it, so that you didn't really provide anything directly. Using encryption schemes that can be cracked in a foreseeable time frame by the corresponding computing power, would give you the guarantee that your code will eventually be unlocked by someone.
However, in any way I would most certainly refrain from releasing anything that's associated with my name or any other personal information that could be used against me in a worst case scenario. In fact, I wouldn't even engage in any activities related with such an effort from my work place, home or any place that could be directly linked back to me.
回答10:
First, I would reread your contract, possibly with the help of a lawyer, to see what exactly is permissible and what not.
You might be allowed to hint someone else at the possibility to do something like that. This is often enough to spur independent development. Just be sure that this hint is done in private/anonymously and doesn't contain any information that only you could have.
回答11:
This could be its own question but it seems fairly on topic here. Everyone keeps saying to check your work contract and talking about non-disclosure and non-competes…what if when you were hired you never signed anything and there’s no contract or agreements? Wouldn’t you be the owner of that code and free to publish it as you wish? On one of the SO podcasts Joel mentions that in a situation such as this the programmer is the owner and can release it. I know there’s catches with everything but is there any info to look at on this scenario?
回答12:
Most contracts are likely to a clause saying items written belong to your employer. I think you'd end up getting fired pretty quick if you did this.
回答13:
Short answer: it is almost certainly illegal and unethical to steal your employer's code, whether or not you are making it open source.
Short solution: rewrite it from scratch, at home and on your own time.
Short caveat: it is possible that your employment agreement / contract specifically prevents exactly this sort of thing. Read before you act.
Start with a document defining the requirements and specifications for what you think needs to be created. If you sit and think about the results of your first prototype (that you were paid to build), there's an excellent chance that you'll see opportunities for improvement. Create an open source project with that mission and start coding to those requirements. Write a completely new product that meets your requirements out where everyone can see and contribute and you'll have potentially made something useful that also has little traceability to your original work.
Short nail in the coffin: when you rewrite it, write it in a different language first. If the project is popular, come back to the project later and create different language versions (including the one that you use at work).
tl;dr: it is possible that your employment agreement / contract specifically prevents exactly this sort of thing. Read before you act. NOTE: this is intentionally the same as the caveat above.
回答14:
I think you have a unique talent of landing yourself in trouble.Just look back at what you are doing and see for yourself how much you are hurting yourself and the economy!
- You don't have your employer's consent
- You have to rewrite your code
- You may lose your job.
(Once this happens there is a long list of consequences to follow - You will stop spending,start defaulting your loans,add to the unemployment numbers and create a mess)
So just think whether you are in the right senses before doing stuff like these.Everyone everyday can find opportunities to defy the rules.But that is not what we are hired for.So please!
回答15:
You can (not should) do a couple of things.
a) Release the source with no licence. If your employer owns the source, this is Copyright Infringment. Source with no licence is not Open Source, it is just a repository of ideas where the ideas can be copied but not the
b) Release the source with a licence. If your employer owns the source, this is Copyright Infringment, and possibly also something else, like Fraud (IANAL). It also completely destroys the trust that people place in Open Source licences.
There aren't very many things I can conceive of that would get one of my employees fired on the spot, but releasing software that I owned, ostensibly as open source, would qualify!
回答16:
Your employer owns the code you've produced under his employ. This is the contract made when you sell your development skills for money; you produce code for your employer and forfeit ownership to it to him, and he produces money for your code and forfeits its ownership to you. It's a trade. In this situation, it is entirely unethical to release code without proper consent, excepting extraordinary circumstances (life and death, etc.).
However, it is not unethical to use your knowledge and accumulated experience and training to write a completely independent piece of software that accomplishes similar ends. Your employer may deem this a conflict of interest and fire you for it, but as long as this code is completely devoid of any code from your employer's codebase, there's almost nothing else he can do (as far as I know; IANAL) (assuming a standard employee-employer relationship and no extraordinary contracts).
If you truly feel that similar code would be such a boon to the open-source community, I'm sure we all encourage you to pursue building and releasing that project, but please, please make sure you do so in a completely legally unambiguous way; ensure that none of the original code appears in your clone, and that you aren't bound by extraneous legislation or contract. Unclear, unclean, or otherwise dubious licensure surrounding your project would make it as good as useless to the greater open-source community.
Good luck!
回答17:
Just thought I'd add my opinion:
I think that keeping code closed-source is unethical if doing so provides very little benefit to you while releasing it would benefit many.
However, if your employer owns the code, it's his decision, and him making an unethical choice doesn't give you any rights to his code.
I see a solution, however: if your contract permits you to write - and own all rights to - this kind of code outside of work hours, you can write the code, release it as open-source, and then use an open-source library in your employer's code (a library whose author happens to be you).
However, you would have to choose an appropriate open-source licence for the code (for instance, GPL code cannot really by used within otherwise closed-source software).
But if you have been paid to write the code, then the employer has the final say.
Please note, IANAL.
回答18:
I've to disagree with most of the replies here, my way of thinking goes something like this: if you develop something by your own, on your own time, it's your intellect at work and thus your intellectual property therefore you've every right to do whatever you want with your product. You can't just drop and forget the good ideas / implementations you had programming just because you had worked for employer X some time in the past. If we all did that the OSS would probably not exist.
However if the idea behind the code was not yours, or if the code base itself is not solely yours you need to get a consent from all the parties involved in the production.
I don't mean that you won't get fired, but that's your decision to make and you're free to make it. However, I seriously doubt that you would get any kind of legal trouble if you could prove that (or disprove the other) the idea and implementation came from your head and was done on your free time.
回答19:
If you release your employer's code as "free software", you jeopardize the free software project you're contributing to. This is one of the reasons that the Free Software Foundation asks for advance verification of copyright and, if necessary, a disclaimer from a person's employer. With the forms and disclaimers, they can fend off a claim of copyright infringement pretty well. Projects that don't double check contributors' ownership of code face legal battles if someone tries to contribute their employer's code.
来源:https://stackoverflow.com/questions/455221/releasing-open-source-without-the-permission-of-your-employer