BSD / LGPL / GPL / Apache许可证,.jb中嵌入.jars?

时间:2012-02-06 22:42:27

标签: licensing gpl lgpl deb

我正在开发一个业余爱好Java项目,该项目打包成一个.deb文件,其中包含几个具有不同许可证的不同JAR,例如:

  • Google Gson(Apache许可证)
  • HSQLDB(基于BSD)
  • Hibernate(LGPL)
  • (等)

尽管我还没有准备好发布或出售这个想法/项目/软件,但我仍然想知道这些常见许可证允许的内容以及一般情况下不允许的内容。例如,我听说GPL是“最糟糕的”(甚至不允许引用/动态链接库而不释放所有内容)但我不知道它是否属实,而且我真的不太了解其他许可证。

例如,如果我要出售我的软件,是否允许以下​​任何一种情况:

  1. 将所有依赖JAR打包在.deb包中,然后由apt使用自定义存储库进行分发和安装。
  2. 只在.deb中打包我的代码,让用户自己安装依赖的JAR(并在启动我的应用程序时指定JAR的类路径)。
  3. 在我的软件上安装预配置的盒子,以及Linux发行版和所有相关的JAR(只收取实际的硬件费用,软件的任何额外费用)。
  4. 提前致谢!

2 个答案:

答案 0 :(得分:2)

您应该阅读每个许可证,并根据您的预期用途进行检查。您列出的大部分内容都不应该为您带来太多额外的工作。如果您不想发布您创建的派生或复合作品的源代码,则必须小心不要在具有copyleft的许可下使用任何代码,因为那些通常需要以完整(GPL)或部分(LGPL)。可能还有类似于classpath exception的东西,其中一些代码在GPL系列下获得许可,因此它实际上取决于具体的术语。

Apache或BSD-Like许可证没有copyleft(但它们也有必须遵守的条款)。

您可以做的最好的事情是仔细阅读每个许可证,并澄清您与同行团体和法律支持的具体问题。

否则,您可以考虑将软件作为免费软件发布,这通常对整个社区都有好处。但这是你的决定。

答案 1 :(得分:0)

请注意 - 我不是律师,因此您的里程可能会有所不同。如果您打算从中赚钱......请律师处理您的许可证。但是,这是我对GPL / LGPL的理解

所有这些场景都被认为是释放二进制文件,因此无论采用哪种方法,GPL / LGPL都以相同的方式约束所有场景。

根据GPL,您实际上必须在发布二进制文件时释放源代码(在本例中为JAR文件)。您可以随时收取软件的副本 - 您只需要使用它来发布源代码。此外,在这种情况下,您的代码将需要在GPL下发布。

根据LGPL,就我的理解而言,只要您让用户能够用新版本替换这些共享库,您就可以将其与共享库(库JAR)捆绑在一起。事实上,只要包含许可证并且库的源可用,您就可以将包中的共享库捆绑在一起。

google / bsd许可证通常比LGPL更宽松,但我没有足够的知识给你一个粗略的细分。