选择库的开源许可证

时间:2010-12-30 14:00:01

标签: open-source licensing

我想为我的项目选择一个好的开源许可证。我有一些要求,但我很难选择许可证,因为他们会阅读一些不同的东西。

该项目是一个Java项目,可以计算水肺潜水的减压方案。我希望这个项目是开源的,因为错误的解压缩方案可能是致命的。因此,对算法和源代码的反馈对我很重要。我没有制作自己的算法,但是我使用了在1个Java库中实现的各种开源算法。

我的要求是:

  • 我和该项目的其他贡献者不希望对错误的计算解压缩方案负责,因为代码中的错误,错过代码的使用或导致错误解压缩方案的任何其他方式。
  • 图书馆应该可以在我计划建立的网站上使用,而无需发布网站的服务器端代码。
  • 不允许图书馆本身获利。甚至连图书馆都没有改变和重新发表。但是我不介意人们是否出售使用图书馆的程序。
  • 如果人们更改了代码,那么他们应该强制重新发布带有开源许可证的库(可选要求)。

我希望有更多知识的人可以帮助我。

2 个答案:

答案 0 :(得分:3)

嗯,这里有一些我注意到的事情。

首先,您谈到需要能够使用您自己的代码执行操作。如果您是版权所有者,您可以使用自己的代码做任何你该死的事。许可证适用于其他人,不适合您。

此外,对于代码可能对其他人做什么不承担任何责任,这几乎是许可证的标准。

话虽这么说,我在工作中发现,根据我的需要,我只能使用3种不同的许可证。

GPL全面

作用:

  • 没有人可以将任何代码视为有效的(没有找到我的重新许可)。他们仍然可以使用它并向人们收费,但由于他们必须许可结果GPL,这不是特别实用。原因是他们的任何用户都可以放弃他们喜欢的所有免费副本。
  • 这些资源可以供任何人参与,所以我可能不必找到并修复每个该死的bug并自己编写每个新功能。

缺点:

  • 这些代码都不适用于专业应用

我通常将此用于独立应用。

链接例外的GPL

这基本上就是它所说的; GPL与异常链接(或#including)代码不会呈现整个结果GPL。这是an example from the Classpath library

作用:

  • 没有人能够将代码本身专有。
  • 代码可以在专有产品中使用,而无需使整个闭源产品开源。只有GPL许可的东西必须保留GPL。

缺点:

  • 设施本身永远不能扩展为专有设施。在我的书中通常是一个加号,但它确实阻止了一些人使用它。

我通常将它用于帮助设施和API。

公共领域

这意味着任何人都可以使用此代码执行任何他们喜欢的操作,包括进行微小的调整,将自己的版权置于其上并将其称为自己的版权。

作用:

  • 任何人都可以随心所欲地使用它。

缺点:

  • 无法保护代码被专有软件销售商“窃取”。
  • 不可能在5个司法管辖区做(我理解的宽松BSD可能是一个很好的选择)。

当我发布一些我不希望别人接管的东西,或者发布一些应该是标准库的参考实现的东西时,我会使用它。

现在在像你这样的情况下,我会做的是:

  • 将GPL与库的链接例外一起使用。这将允许每个人(包括您)在专有应用程序中使用该库,但库本身将始终保持免费。
  • 使用GPL,并坚持其他人的贡献将其版权归还给您。这允许您使用其他人的贡献制作您自己的专有应用程序的完全权利,并且不允许任何其他人(包括那些贡献者)同样的权利。在我的书中有点俗气,可能会劝阻外部贡献者。但是,只有最成功的自由软件项目才能获得任何外部贡献者。所以它可能不会那么多损失。

最近我注意到Bruce Perens(OSI的创始人之一)实际上在一年前写了一篇博客文章,the exact same point。他选择了两个不同于我后两个版本的许可证。他选择LGPL作为中间许可证,我认为这是他的错误。但是,他为后一个许可选择了Apache License 2.0,我认为他可能对此有一点意见。通过直接公共域使用Apache获得的好处是您可以更好地保护自己免受专利诉讼。这不是我真正需要担心的可怜的事情,但你的公司完全是另一回事。

答案 1 :(得分:0)

这不可能。你说你想要一个禁止赚钱的开源许可证。但是,作为开源许可证的关键要求之一是对商业化没有任何限制。

Ergo,你所描述的许可证不可能存在。


这里标准答案:StackOverflow是一个编程问题的网站。我们是程序员。你的问题是一个法律问题。这意味着所有答案(包括我的答案)根据定义都是废话,因为我们不知道我们正在讨论的WTF。

对于法律问题,请咨询律师。