为什么不开放非营利性源代码?[关闭]


34

我非常喜欢开源代码。我想我了解开源的大多数优势。我是一名理科学生研究员,我必须使用数量惊人的非开源软件和代码(要么是专有软件,要么是非公开软件)。我真的看不出有什么充分的理由,而且我可以看到代码和使用它的人一定会从更加公开的中受益(如果没有其他方面,科学上,必要时可以复制您的结果非常重要,如果其他人无法访问您的代码,则要困难得多)。

我走出去,开始传教之前,我想知道:有没有什么好的选择释放不以营利为目的的代码公开,并与符合OSI许可证?

(我意识到周围也有一些类似的 问题,但大多数问题都集中在代码主要用于赚钱的情况下,而我在回答中却没有多大关系。)

澄清:通过“非营利”,我包括下游的利润动机,例如母公司的品牌认知度和投资者的利润期望。换句话说,这个问题仅与迄今为止没有与软件相关的获利动机的软件有关。


+1,因为我自己发现了一个有趣的问题。但是我确实想知道这是否是问这个问题的正确地方。也许您会从其他SE网站(例如PM.SE网站)获得不同的见解。只是一个建议。
haylem 2012年

@haylem,我没看过PM.SE,但这似乎更适合项目管理的技术方面?
naught101

之后您会主动维护该项目还是代码墓地。换句话说,项目的未来是什么。

@ThorbjørnRavnAndersen:是的,我正在积极维护,开发和使用代码。
naught101

Answers:


28

您需要考虑到开源代码可能需要额外的精力。

例如,在此博客条目中,Sun / Oracle工程师描述了他们在开源代码(开源或脏衣服?)时必须付出的努力

当我们准备好进入开源世界时,正在发生的众多活动之一就是准备用于开源的代码。有一些明显的事情需要完成。例如,我们的源代码包括我们编写的代码和我们从他人获得许可的代码的混合体。我们将需要分离出后者,而仅开源适当的代码段。

另一个准备活动是“清理”专有信息的代码,提及特定客户,开发人员,技术等。这似乎不太明显,但是请考虑以下示例:

/\*
 \* HACK - insert a time delay here because the stupid Intertrode
 \* Technologies framebuffer driver will hang the system if we
 \* don't. Those guys over there must really be idiots.
 \*/

尽管以上所有内容都是正确的,但我们可能与Intertrode Tech之间存在某种关系,并且在代码中包含此类注释可能会以某种方式损害我们的业务,因此应将其删除。可以说它不应该放在第一位,但是现在是时候将其取出。

“擦洗”活动的另一部分是删除亵渎和其他“不良”字眼...

请注意,必须对被视为完全可以作为封闭源代码的代码进行上述所有更改-可以这样说,这纯粹是额外的工作


2
嗯,这适用于具有现有代码库的大公司,而不适用于从头开始编写为开源的代码。
Konrad Rudolph 2012年

1
@KonradRudolph OP提到我必须使用...不是开源代码(它是专有的,或者它不是公共的),这意味着它从未从头开始过
gnat 2012年

DOOM 3不会发生同样的事情吗?专利发布延迟了《毁灭战士3》的源代码发布
2012年

11

安全。

例如,假设您构建了一个Web框架,然后您自己使用它。

作为一个非营利项目,您没有时间专门检查每一点代码是否容易受到一种或多种攻击的攻击:

  • CSRF
  • XSS
  • SQL注入
  • 会话固定
  • 使用错误的第三方库甚至语言

现在,将项目开源了,您可以让友好的眼睛参与其中,但是您也可以让恶意的眼睛全面了解您的工作,并且,如果他们找到了正在运行您代码的服务器,那么您将无法隐藏自己的代码。晦涩之处。

当然,这可能不适用于您正在使用的软件类型。一如既往,模糊不清是安全懒惰的借口。

但是,就像我在Stripe中获得的几个级别中捕获标志游戏一样,知道代码是发现漏洞的最简单方法之一(有时它是唯一的方法)。


7
这场辩论已经进行了很长时间了,我的印象是,开放源代码对于安全性更好,但前提是该项目相当受欢迎(至少在开发人员中如此)。奇怪的是,网上的任何地方都没有一个很好的论据(无论如何,我还是可以找到)。
naught101

1
与naught101s相结合,这很有道理。如果更少的人关心您的来源,并且您正在生产中使用它,那么“邪恶的”人很有可能会对其进行检查并最终对您使用
schlingel 2012年

1
通过隐秘获得安全?
Danubian水手2012年

3
@lechlukasz您甚至阅读了整个帖子吗?
妮可·2012年

1
@Oleksi谢谢,但是我知道。我说:“模糊不清是安全懒惰的借口。” 这个问题不是关于打开还是关闭,而是关于打开以前关闭的系统。我碰巧完全同意您发布的链接,但是开发人员并不完美,当您将系统开源时,发现漏洞的第一眼可能会利用漏洞而不是为您修复。
妮可

10

不开源的一个很好的理由是您的某些来源可能已获得版权。您不经常在网上搜索问题的快速解决方案,而只是采用发现的代码片段的频率如何?

好吧,这些代码可能已受版权保护,我不知道作者是否希望发现他的代码在其他许可证下得到了许可。


1
+1(受版权保护)。只是想增加专利。您可能只是发现您的开源项目侵犯了“军团”所拥有的成千上万的软件专利。流媒体视频?获得专利。每次点击付费广告?获得专利。只是一些例子。但是,机会是“军团”不在乎-除非您是竞争对手。
Amadeus Hein 2012年

1
呵呵。这并不是反对开源的论据,而是反对盗版的论据。但是您是对的,我敢打赌这在许多大型私人代码中都是个问题。
naught101

1
@ naught101同意。开源只会暴露问题。在这种情况下,专有专利是不被追究的;)
Andres F.

因此,您说保持源关闭的一个原因是让您隐藏随意的版权侵权行为?您不认为这是一个相当不道德的理由吗?
Mark Booth 2012年

1
当然,这是不道德的。。。。
Pieter B

6

您需要谨慎选择许可证,以避免潜在的责任问题。

律师可能是一个更好的话题,但是一般的想法是,如果有人使用(或滥用)该应用程序并造成一定的伤害,将会发生什么?你有责任吗?显然,这取决于您所编写的软件类型,但是您始终需要注意许可证中有关您的责任的说法。这可能是一件棘手的事情,所以不发布源代码可能会更容易。


1
是的,这是个好主意,大多数OS许可证通常在某处都包含一些简单的文本。我想我当时假设的是“不承担任何责任”类型的许可证。
naught101

4

警告:我不是律师

好吧,如果它是一个非营利性组织,并且其知识产权与该软件的代码紧密相关,那么有些人可能希望保护它,使其免于商业重用,甚至被滥用以创建软件的复本。

其他一些原因-实际上可能在第一个方面根深蒂固-在您的情况下,许多高端研究都是通过私人资金进行的,通常投资者希望看到ROI。到目前为止,还没有完全说服软件行业的所有参与者(或新手)开放源代码模型的可行性(最可能的原因是缺乏对许可的知识和了解,或者仅仅因为担心许可不会阻止恶意软件的使用)。使用和复制)。

此外,这些公司不希望遭到企图背叛的公司提起诉讼,并且无论有没有理由,许可在这方面也被视为一种保障。

看起来可能并非如此,但非营利组织可能为其创始人或投资者带来了利润。好处并不直接。因此,他们对NFP的强势发展非常感兴趣,并且不会被竞争对手所打败(即使您在非赢利市场上也常常不会想到“竞争者”),他们希望保留自己的NFP。 IP,即使这样做的代价是无法获得更多的自由来审查其代码以发现问题并尽早对其进行改进。

还要注意,版权法律因国家/地区而异。例如,许多欧洲国家/地区认为美国版权法和美国专利制度相当愚蠢,因此其文化背景和影响力很难摆脱。

在这个问题上加分我2美分。

(我与大学合作过很多,最近在生物信息学和医疗保健方面……对我和我的同事来说这是一个反复出现的问题:)


嗯..我有点在考虑问题中的代码和IP。也许我应该更清楚一点。我认为投资回报率和品牌的考虑利润动机......(我认识到,“科学”是一个有点模糊,而且大量的科学是盈利的-我的场(地球系统科学绝对不是虽然)。
naught101

澄清了问题。对不起,麻烦。
naught101

我认为您的领域是有利可图的。它可能没有广阔的市场,但这并不意味着它没有利润。实际上,我认为这涉及相当多的钱。为什么您会有其他感觉?
haylem 2012年

我正在进行气候建模。没有人为气候模型买单。没有人愿意使用气候模型。使用该软件没有任何利润。人们得到使用这些模型进行研究的报酬(而且这通常包括编写模型),并且有时需要支付计算时间,但这两者都意味着共享代码会使事情变得更便宜(花费更多的时间用于研究而不是编写代码) ,减少了在HPC设施上浪费的时间)。我真的看不出该软件与任何获利能力之间的关系。
naught101

1
@psr:我想这不是naught101的要点:该模型的使用结果有可盈利的结果,但是不一定要在销售实现该模型的软件上花费很多钱。我也很惊讶,但很可能会。
haylem 2012年

1

至少有两种不同类型的开源。

如果您的态度是“这里有用,我已经做好了”(事实证明是正确的),那么没有什么坏处。

另一方面,如果您的态度是“我真的很兴奋,我希望一些真正的用户来帮助推动未来的发展”,那么请仔细考虑。您将不得不花费时间为用户提供支持,其中许多用户都不知道。您将不得不考虑对功能和增强功能的冲突请求。您将发现进行更改以保持向后兼容性的难度越来越大。


3
我真的看不到发布代码如何迫使任何人提供支持吗?至少在科学上,即使不是代码本身,至少对于过程,大多数用户还是很了解的。
naught101 2012年

1
@ naught101:否定,但是如果有人使用您的代码,您收到电子邮件,问题,建议...这需要一些努力来处理,除非您只是选择忽略它们。在科学之外,很多用户并不太了解,因此您可能会发现自己只是在发布一些代码的情况下就帮助人们解决了基本的设置问题等。至少我经历过。甚至“按原样提供”等BSD风格的免责声明也不会- 也不应 -阻止人们寻求帮助。
Joonas Pulakka 2012年

1
赞成,因为这个答案的适用范围实际上并不比其他答案少。@JoonasPulakka:当然,它不应该阻止人们寻求帮助。但这应该阻止他们期待答案。另外,如果你已经得到了实际的软件在公众场合,那么想必你有相同的责任,用户不管你是否代码是公开的(根据EULA,也许)。也许你不得不期待更多的查询开发商,如果你发布的代码,但它会是不错的认为,他们大多都会有一点线索,并可能偿还一些建议补丁或两个..
naught101
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.