49

At my previous job I created a generic dashboard for automating tasks and it that turned out to be quite useful - and of course my previous employer owns all the code I wrote while I worked there. Now that I'm no longer there, is it legal for me to recreate that dashboard from memory and open source the code? If I do recreate it, the code (maybe 2k-3k lines) could be almost identical to the original since I have pretty good memory and tend to follow my usual coding style and naming conventions.

Edit: a little more background - this is a pretty generic piece of software that's used only internally by a small team (<10) within a global corporation. "The company" is not even aware of this system since it's I create it on my own initiative. It's built on python/django. And by almost identical I mean that for example the django models will have the same name/fields and views will use similar queries to return the same sets of objects.

kefeizhou
  • 461
  • 4
  • 7
  • 15
    Have you approached them about open sourcing the code? If its not part of their core money making business they may be happy to do that, and it would also have the added benefit of providing them with new features for free, assuming your or others would extend it. – dodgy_coder Sep 29 '11 at 04:57
  • 3
    in pretty much all contracts, whatever you do for your employer, be it written down or not, is *his* intelectual property. Hence spitting it out again and making it available to someone not ion that contract is a violation of the contract. – stijn Sep 29 '11 at 07:45
  • 1
    Theoretically legal but good luck proving that in court. :( – SF. Sep 29 '11 at 11:20
  • 6
    An interesting distinction here is the difference between "legal" and "ethical". In most cases if you have to ask the question it's because you already know the answer and just don't want to admit it. – Joel Etherton Sep 29 '11 at 11:22
  • 1
    If this was a generic function then it seems perfectly fine to reuse that anywhere you go and even post it online. So why would a set of functions be so much different? – kefeizhou Sep 29 '11 at 12:20
  • 1
    @Joel: I don't see where the ethicality problem comes in. He isn't reusing code from memory, he's rewriting and merely expects it to come out similar to the first (which is probably not going to happen anyway). – jprete Sep 29 '11 at 12:43
  • @jprete: The ethical part comes in where he knows he shouldn't do something but is willing to do it anyway. All this question is really doing is looking for public validation for it. – Joel Etherton Sep 29 '11 at 13:26
  • 1
    @Joel: There's nothing unethical about building two similar products. – Sean McMillan Sep 29 '11 at 15:03
  • @SeanMcMillan: No, but using your own knowledge of a particular company's intellectual property to build a competing product is unethical. Even reading the edit this question is more about self-justification than legality or ethicality. – Joel Etherton Sep 29 '11 at 15:21
  • 1
    @JoelEtherton: so according to you, it's unethical for someone to go from firm A to firm B and work on similar products at firm B using knowledge/experience he gained from firm A? – kefeizhou Sep 29 '11 at 15:30
  • @kefeizho: No, I'm saying that YOU know it's wrong to take specific proprietary knowledge from company A and apply it at company B to produce a competing product. Otherwise you wouldn't have asked for validation. You can't take knowledge or experience away from someone, but you can prevent that person from using PROPRIETARY knowledge for competitive advantage. I'm not saying your propsal is unethical at all. In your shoes I would just do it. However, you have asked the community for validation for the decision which means YOU think it's wrong to do. The question you should ask yourself is why. – Joel Etherton Sep 29 '11 at 15:36
  • 1
    @JoelEtherton: I don't think it's unethical since this is a generic developer tool used internally only and i was the original author. I think it is probably legal (or should be) and wanted to double check.. – kefeizhou Sep 29 '11 at 16:30
  • This is why you use source-control management. When you can show that two separate projects have two separate histories, it's obviously not stolen property. That being said, why can't I re-create your company's app? – Incognito Sep 29 '11 at 17:00
  • 1
    The ideas of "intellectual property" displayed in this thread are ludicrous - just because a programmer developed a "dashboard" app at one company doesn't mean that company "owns" the idea of a dashboard app, or can prevent a programmer that worked for them from re-implementing a similar one for another company. It's illegal for him to *copy* the code as the copyright is owned by the former company - not re-implement a dashboard. (Though IANAL and basically of course whoever has more lawyers "wins" if there's a disagreement.) – Nate Sep 29 '11 at 17:55
  • I think people on startup.stackexchange.com have some good knowledge in this area of subject matter. perhaps post there? or migrate the question? not sure. – Trevor Boyd Smith Sep 29 '11 at 19:02

13 Answers13

36

Good question, but it's probably the wrong place to ask because you won't get good legal advice from programmers. IANAL, seek proper legal advice.

It doesn't feel legal. There's a very good chance that if you release an almost identical program to the one that your old company owns you could be sued. That said I'm sure it happens a lot.

One thing you could do is recreate the program in a different language. That way it's clear that you didn't walk out of the company with the source code & then open-source it. It's also educational to solve a problem you are familiar with in a different language.

I'd also suggest thinking about ways to improve the program, make it more extensible etc. The second time you do something is almost always a lot better than the first because you can avoid all of the "I wish I'd done it that way" design decisions that you may have made the first time.

Even if you never release it it would be a good exercise. If ultimately you get legal advice & choose to release it you will be better protected.

ChrisF
  • 38,878
  • 11
  • 125
  • 168
mcottle
  • 6,122
  • 2
  • 25
  • 27
  • 5
    if you want to keep the same language, think about writing "almost" the same code but **changing the UI**. Like mcottle said, you may improve it, and if a webpage looks totally different, even though it has "almost" exactly the same code than the one you did before, you're going further away from law suit problems. – Olivier Pons Sep 29 '11 at 11:18
  • 1
    Parts of the code including the UI will be different but some might end up being the same for various reasons (personal coding style etc). How far do i need to go to be 100% in the clear? – kefeizhou Sep 29 '11 at 12:29
  • Having read this & your answer to mattcodes I have to add this: If you don't get permission you will almost certainly be sued - it's simply not worth it. IF you change design & change language you might get away with it but it's still dodgy. Without permission, making a clone in the same language you will be prosecuted and you will make yourself unemployable. – mcottle Sep 29 '11 at 13:13
  • 1
    -1 for "doesn't feel legal". The suggestions are good, nut the problems are practical, not legal. – Sean McMillan Sep 29 '11 at 15:08
  • 2
    Why the hell everyone think when you rewrite something from zero you'll do something better ? You can actually make something worse. – Clement Herreman Sep 29 '11 at 15:09
  • 2
    @ClementHerreman: Agree. Sometime it's better to go with something that's been proven in action. If you do rewrite from scratch you might make a lot of improvements but also introduce new bugs. – kefeizhou Sep 29 '11 at 15:18
  • 1
    I'm not making myself clear: rewrite **from scratch** is a bad idea. I think rewriting piece by piece an enhancing is faster and safer. – Clement Herreman Sep 29 '11 at 15:20
  • 1
    @Clement - I have to disagree because I learn from my mistakes. I've had the opportunity to do similar systems twice in my career & the second one was much better in both cases because I had a better grasp of the problem domain when I started designing the second system. – mcottle Sep 30 '11 at 01:21
  • Since there's a lot of Dashboard software around, publishing it as open source will give you more risks than what community will benefit. So, I feel that it's better for you not to publish it. Recreate is Okay. – Rudy Sep 30 '11 at 10:46
  • @Rudy: I have not seen any good open source dashboard for automating tasks reliably across multiple machines. Give few examples of these dashboard software you're thinking of .. – kefeizhou Sep 30 '11 at 15:52
21

Legal or not, if your employer finds out and decides to press the issue you will be in a world of hurt. Even if you end up being judged right, the potential litigation can end up being completely ruinous for you. You also risk incurring the wrath of the OSS community for polluting it with copyrighted code as well as the loss of reputation from being viewed as dishonest by your employer.

You also risk action from anyone who adopts your product. Worst case, anyone using your product will be faced with either having to license it from your previous employer or removing it from their solution, costing time and money - either way they may end up suing you for damages.

It seems it would easier to do the right thing - talk with your previous employer, get their consent to re-use the product you developed for them with the intention of open-source distribution. They may just say "go ahead". Doing it behind their backs is generally a bad idea, legal issues aside.

pap
  • 1,290
  • 6
  • 8
  • Almost invariably any employer who cares about owning the final product will *not* allow the employee that created it to distribute it in any other way with their consent. Otherwise what's the purpose of owning it? – Joe Z. Feb 02 '13 at 02:50
14

What type of programmer given the chance to recreate something they did previously (the lessons learnt etc.. ) would produce something "almost identical". Unless you believe you coded something perfect??? At which point you have bigger questions to ask yourself.

Mâtt Frëëman
  • 457
  • 3
  • 8
  • 10
    the lazy kind with not a lot of time. I'd rather just use what works than trying to solve the same problem twice in THIS particular case. – kefeizhou Sep 29 '11 at 11:21
8

Dashboards are a dime a dozen. Your employer never owned the IP on that idea. Your employer did own the copyright on the specific implementation.

You can write the new code from scratch. That means the work is not a derived work. It's smart to keep notes so you can prove this.

MSalters
  • 8,692
  • 1
  • 20
  • 32
  • Recent update: http://www.theregister.co.uk/2011/09/30/software_copyright/ . The ECJ is expected to state explicitly that UI is not copyrighted in itself, as it falls under the "ideas and principles" of a software program. – MSalters Sep 30 '11 at 09:18
5

Technically, you're creating a derived work - you are familiar with the existing solution, and you are recreating it from memory. The usual IANAL applies, but if your former employer sues you over copyright infringement, my guess is that they have a pretty strong argument, and it's going to be up to you to come up with a plausible explanation as to why your recreated program should not be considered a derived work.

Legal technicalities aside, getting into a lawsuit with a former employer is not where you want to be, ever - even if you win, you'll be 'that guy', which I doubt would be a smart career move.

tdammers
  • 52,406
  • 14
  • 106
  • 154
  • 3
    I don't believe that's how derived works are defined -- I think you have to actually include part of it. – Sean McMillan Sep 29 '11 at 15:05
  • Depends on jurisdiction and interpretation, but 'derive' doesn't necessarily have to mean 'include parts of'. – tdammers Sep 29 '11 at 15:22
  • 1
    @tdammers: Yes, but that makes it useless to ask here. We're not in general lawyers, and the ones who are aren't likely the OP's lawyer. We can't answer specific legal questions (and note that what constitutes a "derived work" is a hot discussion topic in the F/OSS world). – David Thornley Sep 29 '11 at 16:17
  • Well, my point is that even if you recreate the thing from memory, you'll have a hard time proving it's not derived when the judge / jury knows you had also written the original one which looks exactly like the new one you're claiming is not a derived work. "Innocent until proven guilty" does not apply to private law. – tdammers Sep 30 '11 at 06:11
4

In the US, if your former employer decides to sue you, you will be in trouble no matter what the judges think.

Theoretically, your company owns your work, not your brain. Hence, if you do the work again in your own time, they should not have any ownership of that. After all, they hired you because of what you knew before they hired you. It seems unlogical to assume that they can take advantage of your prior knowledge but at the same time deny you to do the same after you left. But IANAL, either.

Unless of course they made you sign some crazy stuff. Or unless they filed a patent. If they did that, they do own that part of your brain. In that case, those patterns of nerve cells that make up that knowledge inside your brain are not yours any more and you should refrain from using them ever again. Talk about selling your soul.

bastibe
  • 1,359
  • 2
  • 12
  • 17
3

I'm going to deviate from the main topic to say that I feel all this is really sad.

Now on the question:

If you were a carpenter making pieces of furniture, and the former company provided you with blueprints and designs, then you get hired by another company, clearly you are in trouble if you start making exactly the same stuff.

If your former company only bought the product of your work, and you designed and "invented" them (and you can prove it) then the law should be with you.

The moral of the story: next time do it open source from the beginning.

Mister Smith
  • 2,867
  • 4
  • 21
  • 17
  • I've considered it at the time but it's there's way too much bureaucracy involved with trying to open source even a small piece of code from a financial firm. – kefeizhou Sep 29 '11 at 12:22
3

(a) Do not take legal advice from the internet (including this advice!)

(b) Being sued is a real pain in the backside, even if you win

(c) It sounds like you think there is no real risk of being sued. If so, then it probably doesn't matter whether or not you have the private law right to do this.

Whether or not it's legal, this is going to come down to how much you want to recreate this project vs how much you want to run the risk of being sued. If you have the money, then I suggest speaking with a lawyer first about whether you have the right to do this, and the cost of making litigation go away if you do.

Marcin
  • 498
  • 4
  • 12
0

There is probably a legal difference between recreating the solution from memory, and creating an original solution to the same specification (but IANAL, so ask one). To prove the latter, you might want to publish an original and complete spec of the tool you plan on developing on your blog. Then it's possible for some other developer who's never seen your earlier work to code it.

hotpaw2
  • 7,938
  • 4
  • 21
  • 47
0

Here is a simple way: -Open the dashboard from publicitly available url. -Think about best ways to make it easier/better/so on. -Rewrite it on different language, as previously suggested. Good reason to learn ruby, haskell, lisp and so on. -Then make a project open source. feel free to add 'inspired by ...' and link to the original site.

0

It would not cost that much time to even ask them for permission. You need written legal signature. To cover your self.

But if you are going to ask them to let you recreate some thing you created for them already. Sell it to them. Sell them the idea. You are going to opensource a pice of software they already use, and make it open to potentially significant reviews and additions from the programming community. They will not have to spend resource internally to manage and improve the software. Unless they want to gain greater benefits. I mean really sell them the idea.

If it is not a core business technology that they are selling to customers you will probably get approval quite easily. If it is some thing they do sell to customers, then they open them selves up to competitors competing with the same product. Only you would really know how important your previous employer views that code. If it is not that import to there income generation, and is only a productivity enhancer, your are very likely to get approval.

It is the cheapest and shortest route to getting what you want. If they say yes no problem. It only cost you some time. If they say no, and you still want to continue then ask a lawyer about his opinion. I expect that the only thing they own is the implementation. If you recreate it with enough changes that it does not look and work exactly the same you are much better off.

It is dysfunctional state, of the current system where we don't own the produce of our labor. Some of the most successful societies where the ones where people could freely profit from their own effort. You could draw comparisons to this situation to the feudal land ownership and the problems it created. At some point people are going to be doing business differently. Like googles 1/5 of your time for your own projects.

nelaaro
  • 172
  • 1
  • 10
0

Surely this all comes down to the contract between you and the client. If you had planned to do this you should have had a clause which states 'this source sode remains the intellectual property of kefeizhou...' or something (I know hindsight is 20/20). I agree with the other comments that Programmers SE is not the best source of legakl advice, and that legal or not, this is setting you up for problems. Incidentally, I used to work as a graphic designer, and in that industry, almost all work remained the IP of the client and not the designer.

Paul T Davies
  • 3,144
  • 2
  • 22
  • 22
  • So if you draw a picture of a car for one client, you can't draw a picture of a car for another client ever again? – Nate Sep 30 '11 at 13:04
  • No, you can't draw a picture of a car for one client, and then submit the same drawing of a car to the second client. But also, you can't submit to the second client anything that it can be legally argued is the same or too simmilar to the first client's car. – Paul T Davies Sep 30 '11 at 13:09
-1

In France, it is illegal.

The owner of the code is your former boss. No matter how you retrieve it, from a USB thumb drive or from your memory.

If you want to use that dashboard, you have to set an agreement with the owner.

mouviciel
  • 15,473
  • 1
  • 37
  • 64
  • Surely every company has its own policy on this rather than a nation-wide law? I thought this would be something that is in a company's employee contract, if anything. – dodgy_coder Sep 29 '11 at 08:17
  • The default is that you get a salary in exchange to writing their code. Though the possibility may exist, I am not aware of alternate policies. This is different if you are a freelancer and sell apps or libraries, in which case you are the boss and you own your code. – mouviciel Sep 29 '11 at 08:35
  • Good thing I'm not in France. – kefeizhou Sep 29 '11 at 12:23
  • 1
    Can I give France a -1? "from memory" retrieval is not at all the same thing as from a disk. – Sean McMillan Sep 29 '11 at 15:07
  • 2
    Does this mean that, in France, if you implement an algorithm or write some sort of program, you can't ever implement that algorithm or write that sort of program for another employer? – David Thornley Sep 29 '11 at 18:25