0

我在一家公司工作,该公司的规则基本上是(据我了解)您不能使用任何代码,除非(a)您自己编写代码或(b)有一些明确的赔偿条款保护您使用任何其他代码(例如开源代码)。我发现这使我的编码变得困难。

例如,书中的编码示例几乎都是“按原样”使用的。Microsoft SDK 代码示例按“原样”使用。有关编码的博客文章按“原样”使用。有几个站点带有代码示例(包括 SO),使用风险自负。对知识产权诉讼、废话、废话等没有暗示的保证或赔偿。

基本上,我仅限于使用 Asp.Net 和 .Net Framework,仅此而已,并防止我的眼睛意外捡起我没有创建的东西(好吧……这可能是我对规则的肛门解释; -)。

我觉得这很困难,因为我认为学习编码的很大一部分是阅读其他代码。阅读有代码的博客,阅读有代码的书籍,查看编码示例,使用 SDK 示例中的代码等。此外,我认为使用人们已经证明是一个很好的解决方案或模式的代码是安全的,并且可以自由地使用供他人使用。我不会认为我可以自己编写所有代码。我绝对必须站在别人的编码肩膀上才能达到一定的高度。

可能是我也不太了解许可。从公司的角度来看(我想),他们不想承担任何因知识产权侵权而被起诉的风险。

我的想法是你必须权衡风险。从书中获取代码片段的风险很低。合并来自开源库的代码可能是高风险的。我说根据您愿意承担的风险做出决定。

有没有人在这样或类似的情况下工作过?这是罕见的事情还是在某些领域很常见?外面有没有和我一样位置的人?

任何见解或指导将不胜感激!谢谢!

编辑: 感谢您的回复!澄清一些事情:我不提倡窃取代码。我说的是具有某种公共许可的代码,允许以定义的合法方式使用它。关键是公共许可证在使用该代码时没有任何赔偿。这意味着您使用它需要您自己承担法律风险(和其他风险)。如果有人起诉您使用代码的开源项目,您也可能会被卷入诉讼,因为您正在使用该代码,即使它具有公共许可证。

2005 年,微软通过向其合作伙伴承诺微软将保护他们免受知识产权诉讼,利用赔偿与开源供应商竞争。http://www.microsoft.com/presspass/press/2005/jun05/06-22PartnerIndemnificationPR.mspx

所以,即使被诉侵犯知识产权的风险可能极低,也属于非零概率。因此,我不能使用任何一个。即使它有某种公共许可证。:-(

4

7 回答 7

5

“因侵犯知识产权而被起诉的风险”并不是真正的正确思考方式。这不是一个“风险”的事情。

任何一个

  • 您有许可证并且可以使用源代码。没有风险。你有执照。不能打官司。

或者

  • 你没有执照,你违反了。实际上,您被起诉。这里也没有风险。您侵犯了某人的版权(或更糟)。

出于各种奇怪的原因,公司反对开源。诉讼风险不是其中之一。

我听说的事情。

  • 如果它有病毒怎么办?

  • 如果它没有像宣传的那样工作怎么办?

  • 如果它“崩溃”了一些东西怎么办?我们起诉谁?

这些都不是“风险”项目。它们是“尽职调查”项目。大多数情况下,它们很容易解决:选择具有足够用户的产品,让其他人在你之前审查代码;QA 开源就像您自己的一个人输入的一样。除了一个。

这让我们找到了真正的原因。[提示:这不是“诉讼风险”。]

当你没有对开源进行尽职调查时,没有人可以起诉。

大多数商店都没有真正可靠的配置管理或 QA 政策(那种可以在法庭上被视为最佳实践的政策)。在他们准备好这些东西之前,他们不敢考虑引入真正需要可靠 QA 和配置管理的开源。

于 2009-01-07T21:06:26.670 回答
2

我认为您的公司真正担心的是您直接复制可能存在许可问题的大段代码,如果他们被发现使用它会给公司带来法律问题。但是,您可能会阅读博客或其他未经许可的代码,并发现适用于您正在处理的特定问题的解决方案。在这种情况下,您最好重写代码(即查看解决方案并重现它),而不是仅仅复制代码并对其进行修改。在我的公司,他们通常建议使用非专有代码。

同样,对于每个人都以相同方式实现的少量代码(例如缓存的标准实现),您的公司每次都不太可能害怕使用外部代码,只要您确保仔细测试即可.

于 2009-01-07T20:47:12.217 回答
1

通过“赔偿”,我认为他们的意思是保证代码没有版权或专利,或者可能是他们事先不知道的商业秘密产权负担,或者如果出现类似情况,有人愿意赔偿他们。我从来没有在一家公司担心过这个问题,我以前也没有听说过。

目前还不清楚你在这里真正想要什么,除了同情(我确实对陷入企业愚蠢的人表示同情)。如果您担心书中的示例代码,听起来该政策非常严格。这是一个糟糕的政策,会阻碍你,但我不知道你能做些什么。与 Joel 的博客文章不同的是,在没有明显违反公司政策的情况下,您不能仅仅开始明智地做事。

不知道你的情况,我的建议是另找工作。这肯定会扼杀你的职业发展,而拥有该政策的公司不太可能对此感到合理。

(如果你能向他们保证没有危险就好了,但那不是真的。人们在版权问题上撒谎,尽管开源项目往往不会这样做,只有傻瓜才会肯定地声称一大块代码没有侵犯版权在美国的任何专利上;即使它是在软件专利首次授予前一年编写的,那也只是打官司的好理由,而不是避免打官司。GPL 软件实际上比 BSD 软件好,因为它下游需要一些专利授权,但是不能处理第三方专利。当然,如果他们那么担心被起诉,写内部软件是没有办法的,那会侵犯专利。)

于 2009-01-07T22:08:31.473 回答
0

您可以重命名变量,它们将如何发现?他们检查每一行代码吗?大学一直告诉你,不要在没有引用的情况下复制代码。为什么不尝试编写一些代码并使用在 Internet 上找到的部分代码?

通常,您将使用更多来自堆栈溢出或博客等社区的内容,而不是来自开源项目的内容。

最后,由于代码没有任何保证,风险自负。如果您自己提出代码,情况也是如此:风险自负。

希望这会有所帮助......祝你好运。

于 2009-01-07T20:48:33.197 回答
0

可能是我也不太了解许可。从公司的角度来看(我想),他们不想承担任何因知识产权侵权而被起诉的风险。

我的想法是你必须权衡风险。从书中获取代码片段的风险很低。合并来自开源库的代码可能是高风险的。我说根据您愿意承担的风险做出决定。

我不确定我是否理解正确。如果您说在不被抓到的情况下违反许可是可以的,我将不得不不同意您的看法。

您可以通过阅读代码来学习,而不会违反法律或被解雇。如果许可证不允许,请不要将代码复制到您公司的代码库中。

于 2009-01-07T21:01:48.193 回答
0

如果您不了解“洁净室”的概念,那么总会有这种方法。让朋友看看一些开源代码,让他们告诉你他们认为它是如何工作的。把它画出来,然后自己编码。

如果它适用于 IBM,对吗?

于 2009-01-07T21:21:00.977 回答
0

请记住,并非所有开源都是 GPL。您的公司可以复制任意数量的 BSD 许可代码。BSD 许可的代码已经进入了 OS X(这可能是我今天最大的轻描淡写),并且在较小程度上进入了 Windows NT。

于 2009-01-07T21:41:27.270 回答