将您在工作中生成的代码重新用于个人项目是错误的吗?


31

在我的各种工作场所中,我总是写代码,这使我认为“在其他情况下这将非常有用”。的确,即使我花了更长的时间写代码,我还是故意写的,我知道这会在将来对我有所帮助(例如自定义SubString()函数)。这些摘录的一个不错的选择是各种“助手”类。

我确定这些片段可能会在网上其他地方找到,但重点是,我写了它们,以后将在其他工作或个人项目中再次使用它们。目前,我没有维护个人代码库,但问题是,将您在工作中产生的代码用于(a)用于个人项目,(b)用于其他工作是否是错误的?



2
@Michael类似,但不完全相同。答案非常相似,但实际上是两个不同的问题。这是一段简短的代码片段-几个类,一个或两个方法。另一个是关于复制整个项目。
Thomas Owens

有趣的是,我总是发现潮流是朝着另一个方向发展的。我通常会在自己的业余项目中拿出非常有趣的代码块,在其中进行更多实验。当这些成功的想法成为我的有薪工作时,当然没有人会抱怨。:-)
DaveGauer

Answers:


25

我一直通过拥有一个个人项目解决这个问题,在该项目中,我将所有疯狂的想法和通用的东西放到了一起,然后以BSD许可的形式进行许可,该许可使人们可以重复使用,更改,重新命名,关闭它并收取费用它。这样,我保留了版权,但是可以为此和该雇主随意使用该代码,因此,我保留了原始文档的版权,但是雇主保留了重用实例的版权。我认为,如果他们对此有疑问,那么他们只需要付钱给我在工作时间重写它,从他们的角度来看这是没有意义的。此外,公司一直在使用BSD代码,因为BSD背后的想法是让人们和公司几乎可以使用他们想要的任何东西,包括重命名和出售它。

然后,当然,如果在工作场所对代码进行了添加,那么我必须在自己的时间重写它,否则我将无法在其他地方重用它……这很好,因为通用的东西通常相对较小,除非它是无论如何,这种想法需要大量的业余时间。

自行编写代码并在BSD风格的许可证下授权代码,应该可以自己维护一个库,您可以在几乎任何地方使用它。

现在,对于声称侵吞您所有个人项目的版权的合同……这可能在不同司法管辖区之间存在根本差异,但至少在某些西方司法管辖区,据我了解,合同不能做到这一点。合同可以说确实可以,但是不会在法院强制执行,因为必须明确转让版权,而不是“您的所有基地都属于我们”,这种协议永远不会得到维持(在无论如何,我来自哪个司法管辖区。对于可以通过合同在法院中维持的内容有很多限制,这就是为什么您通常(并希望)看到一个条款,说明如果合同的一部分不合法地起作用的原因, ,其余合同仍然有效。

但与往常一样,在您将此解释为准确的法律建议之前,请咨询律师。我从来没有在这个问题上上法庭,所以我不知道这些事情都是律师证明的事实。:)


31

这取决于您的雇佣合同。如今,最可能的答案是(a)是,这是错误的,并且(b)是,这是真的错误。如今,几乎提供给开发人员的所有合同都有条文规定,您在公司雇用期间编写的任何代码(无论是否在办公时间内)都是其代码,并且您会自动将版权转让给他们。除非您对此进行特别协商,否则大概适用于您。

但是,与往常一样:

不要相信我们!在做可能有危险的事情之前先咨询律师。


7
+10(如果可以的话),表示“不相信我们!在做潜在危险的事情之前先咨询律师”。最好。劝告。曾经
Sardathrion-恢复莫妮卡2011年

2
对于“几乎所有提供给开发人员的合同”规定“您在公司雇用时写的任何代码(无论是否在办公时间)”均属于雇主的说法,您是否有任何消息来源?
CVn

3
这些用语在雇主发现自己的时候过于习惯,而不是太小,在很多情况下,它们都有常识的余地。也就是说,(1)您需要确保您的常识观点与他们的观点相符,并且(2)这是很大的风险。几年后,观点可能会改变-特别是如果您赚了很多钱,或者如果他们认为您写的东西可能会损害他们的销售。对于小型通用实用程序函数的库,重写起来可能更容易,而且不用担心。更重要的是,您将处于非常危险的境地。
Steve314,2011年

4
@MichaelKjörling。您所寻找的资源来自Joel Spolsky在Start Ups中关于该主题的出色答案
TRiG 2011年

22
其实..我总是说问律师是一件烦人且不现实的事情。首先,因为常识上你可能错了;如果您建议如何在SO上修复严重的安全漏洞,请不要说“问程序员!” 每次。第二律师很昂贵;老实说,您认为实际上会聘请多少人来询问琐事/好奇心?您是否曾经聘请律师提出类似问题?
Thomas Bonini 2011年

9

只需在需要时重写代码。只需几分钟即可完全避免该问题。

在此期间,您可能会学到更多,并且会写点更好的东西。重写代码通常也会使其更优雅。


同意,但是不仅仅需要花几分钟时间编写代码的子库呢?用于访问数据库,构建文件等的类?没错,尽管重写可以改善代码
Arj 2011年

3
不是那么简单。任何重新实现都必须与原始代码完全不同。即使重写也可能是不好的。改进现有内容的版本肯定是不好的。最好将其完全分开。
tp1

如果您为某人开发了某种专有算法,那么如果您再次为其他人编写该算法,则可能会遇到麻烦。有点粗略。是的,如果仅仅是样板代码,就很容易启动新的集合。
蒂姆·波斯特

@ tp1 x()等等,如果函数的目标如此具体和有用,以至于没有太多的编写方法,该怎么办?在这种情况下,如果实现如此相似,如何将其分开?
2011年

@ a12jun,这就是为什么每种情况都需要单独考虑的原因。排序的概念可能是程序员在计算机科学领域的现有经验,并且可以写作。但是,如果它是某些特定的东西,很少见或特定于某种软件,那么它将变得很糟糕。
tp1

6

取决于您的工作条件。请咨询您的主管,人力资源部门,法律部门和/或道德部门,以确定您公司拥有什么,您拥有什么,以及请求获得使用权或财产所有权的过程是什么您在工作中产生的。

在我工作过的几乎每个地方,进入项目的东西都是公司所有的,但是我已经寻求并获得了许可,可以逐案将其用于个人项目,这通常需要解释我想要的东西以及如何解决它对组织的不利影响。


我同意这一点;与您自己公司的人交谈是一个很好的起点(假设您与他们之间有合理的良好关系)。他们不太可能会说“确定,只要它与外包业务没有密切关系,就用它来做自己喜欢的事”。
基思·汤普森

是的,尝试寻求许可是个好主意:合同可能会说“您的所有基地都属于我们”,但这通常只是出于CYA目的,他们很愿意允许您的合同不能保证的事情。(但是您可能要确保以书面形式得到,以防万一。)
SamB 2011年

4

在使我的雇主同意以开放源代码许可证的形式发布我的一些代码时,我取得了一些成功(不是完全成功)。通常,代码是我自己写的,但有时不是。所有代码都不特定于任何行业。

我从失业开始就编写一些库,然后根据MIT许可发布它们,从而开始了整个工作。然后在以后工作的招聘过程中,我会提到它,并说如果可能的话,我会使用我的代码来帮助他们,但是他们会介意是否添加了我在为他们工作时写的东西,但只有那些不是我写的东西特定于他们的业务并且只有得到他们的批准。

结果千差万别,但是随着时间的推移,我已经能够建立自己的图书馆。在某些情况下,拥有图书馆可以为我的雇主缩短开发时间。


4

我感到惊讶的是,这里投票最多的答案是“是”。作为开发人员,答案始终是“绝对不会”,除非代码是:

  1. 我独立于当前和所有先前项目开发的先前组成的库,或者
  2. 为此目的而提供的库,例如,开放源代码的东西。

有人付钱给您写代码。除非有不同的理解和协议,这是很好的,否则其他人无法获得其直接收益。

现在-直接一词。如果您到达了项目的结尾,并且学到了一些有趣的东西,并且创建了一些与客户的知识产权没有直接联系的有用的东西,那么请花一些时间为自己创建一个库。更好的是-使用它启动一个开源项目,这样每个人最终都会因此而变得更加富有。我认为从驱赶积雪的角度来看,这绝对是100%纯净的,确实,我自己做了。

在短期内,重用您已为其他人付费的代码将导致您法律上的头疼。从长远来看,它将导致您性格头痛。


1
勇敢地回答了道德问题,而不是法律问题。切记:整个道德不包含在法律之内。同样,至少在美国,法律没有脱离现实和社会。法律和律师似乎积极地与更大的利益作斗争。
Bruce Ediger

罚款和花花公子的答案,但与法律无关。从法律上讲,这个答案在大多数西方国家确实是动摇不定的。
quick_now 2011年

2

我确信这是法律问题,具体取决于您的住所/工作地点以及所达成的协议/您的合同。

如果我自己花时间在自己身上学习一些东西,那么我所支付的所有费用(计算机,互联网访问,软件等),他们会不想我在工作中利用它吗?您找到了一个个人项目的正则表达式,并决定将其通过电子邮件发送到您的工作帐户,因为您可能会使用它。花费公司时间假装再次在互联网上搜索它会有点愚蠢。当然,我们会努力提高自己的技术水平,这是程序员的期望,等等,但是如果它不在编程甚至IT领域之外,该怎么办?如果他们想玩这个游戏,我可以阻止。

该公司可以尝试紧紧掌握我编写的代码。建立关系只是基础薄弱。如果他们非常在乎几行代码,我无法想象他们会在多大程度上支配我的时间。这值得更多。


1

过去我也有同样的想法。不幸的是,我认为您直接为自己的工作写的任何东西在技术上都将由您的雇主拥有版权。您可能需要征求许可才能在与公司无关的其他工作中重用该代码。

另一方面,如果您在业余时间为自己的项目之一编写代码,则可以用某种版权保护代码,然后提议将该代码提供给雇主使用。

无论哪种方式,都需要就此问题进行清晰的沟通

当然,IANAL。


1

您的问题与“ 开放源代码-重新创建/开放您先前为另一家公司创建的程序合法吗? ”的问题非常相似。

我要说的是,您的法律依据不可靠,因为您工作的公司可能拥有您为他们编写的代码。最好从头开始编写例程,但是即使这样,如果您仍然有其他代码的副本,可能还会有疑问。

[我不是律师,所以不要指望我的建议能在法庭上为您提供帮助。]


+1表示“我不是律师,因此不要指望我的建议会在法院为您提供帮助”。
Sardathrion-恢复莫妮卡2011年

1

我要说的是,最好不要在项目之间保留那些通用的小方法/功能。在大多数情况下,您可以使用Boost或任何您提供的语言来执行此操作。在大多数情况下,这些文字要比您的文字更好。

一个好的主意是为它们提供一组单元测试,并使用它们来测试您的代码kata。


1

这些工作正在前往亚洲,因此在肉汁火车仍然存在的情况下重写代码。如果您获得编写代码的报酬,则可以编写或粘贴代码,并假装自己在做一些有趣的事情时重写了代码。甚至更好的是,在家工作,并付钱给亚洲一些更熟练,更聪明,更重要的是,便宜得多的编码器为您编写代码,并赚钱。这样一来,您就可以出去享受世界,在我们的企业大神解雇我们之前,我们全都在芯片工厂里工作,他们为富有的中国和印度iphone消费者以每小时2美分的价格生产芯片。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.