当我不被允许被开源代码“污染”时,学习和编写代码的策略是什么?[关闭]

StackOverflow https://stackoverflow.com/questions/421975

  •  05-07-2019
  •  | 
  •  

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

例如,书中的编码示例几乎都是“按原样”使用的。Microsoft SDK 代码示例“按原样”使用。有关编码的博客文章“按原样”使用。有几个网站提供代码示例(包括 SO),使用这些代码示例的风险由您自行承担。没有任何暗示的保证或对知识产权诉讼的赔偿,等等。

基本上,我仅限于使用 Asp.Net 和 .Net Framework,而不使用其他任何东西,并且防止我的眼睛意外地拾取我尚未创建的东西(好吧......这可能是我对规则的肛门解释; -)。

我发现这很困难,因为我认为学习编码的很大一部分是阅读其他代码。阅读有代码的博客、阅读有代码的书籍、查看编码示例、使用 SDK 示例中的代码等。另外,我认为使用人们已经证明是某种良好解决方案或模式并免费提供给其他人使用的代码是安全的。我不会认为我可以自己编写所有代码。我肯定要站在别人编码的肩膀上才能达到一定的高度。

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

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

有没有人有过在这样或类似的情况下工作的经验?这是罕见的事情还是在某些行业很常见?还有其他人和我有同样的处境吗?

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

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

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

因此,即使被起诉知识产权侵权的风险极低,但也不是零概率。因此,我无法使用其中任何一个。即使它拥有某种公共许可证。:-(

有帮助吗?

解决方案

通过“赔偿”,我认为他们的意思是保证代码没有版权或专利或者可能是他们事先不知道的商业秘密负担,或者有人愿意在这样的情况下补偿它们起来。我从来没有去过一家担心过这种情况的公司,也没有听说过。

目前还不清楚你在这里真正想要的是什么,除了同情之外(我确实对那些陷入公司愚蠢行为的人表示同情)。如果您担心书中的示例代码,这听起来很严格。这是一个糟糕的政策,会阻碍你,但我不知道你能做些什么。与乔尔关于将事情视为咕噜声的博客文章不同,听起来你不能只是明智地开始做事而不明显违反公司政策。

不知道你的情况,我的建议是寻找另一份工作。这个肯定会扼杀你的专业成长,而且有这个政策的公司不太合理。

(如果你可以向他们保证没有危险,那就太好了,但事实并非如此。人们对版权撒了谎,虽然开源项目往往没有,只有傻瓜肯定会说大量的代码没有侵犯美国的任何专利;即使它是在软件专利首次授予前一年写的,这只是法庭斗争的良好理由,而不是避免法庭斗争.GPLed软件实际上比BSD软件更好,因为它需要一些专利许可下游,但它不能处理第三方专利。当然,如果他们担心被起诉,编写内部软件是没有办法解决的。这可能会侵犯专利。)

其他提示

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

任何一个

  • 您拥有许可证并且可以使用源代码。没有风险。你有许可证。不可能有诉讼。

或者

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

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

我听说过的事情。

  • 如果有病毒怎么办?

  • 如果它不像宣传的那样有效怎么办?

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

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

这引导我们找到真正的原因。[暗示:这不是“诉讼风险”。]

如果您没有对开源进行尽职调查,就没有人可以起诉。

大多数商店没有真正可靠的配置管理或质量保证政策(可以在法庭上作为最佳实践的那种)。在他们把这些事情落实到位之前,他们不敢考虑引入真正需要可靠的质量保证和配置管理的开源。

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

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

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

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

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

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

  

可能我也不太了解许可。从公司的角度来看(我猜),他们不希望因知识产权侵权而被起诉。

     

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

我不确定我是否理解正确。如果你说当你没有被抓住时许可证侵权是好的,我将不得不反对你。

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

如果你不知道“洁净室”,概念,然后始终有这种方法。让朋友看一些开源代码并让他们告诉你他们认为它是如何工作的。绘制出来,然后自己编写代码。

如果适用于IBM,对吧?

请记住,并非所有开源都是GPL。您的公司可以根据需要复制尽可能多的BSD许可代码。 BSD授权代码已经进入了OS X(这可能是我今天最大的轻描淡写)以及Windows NT的较小程度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top