使用GPL代码和GPL以外的许可证的许可软件

时间:2010-05-27 20:48:52

标签: licensing gpl

假设我写了一些代码,我们称之为X.它使用了一些GPL代码,我们称之为库Y.显然,我必须使用GPL许可证发布X.没关系。我的问题是,我是否可以在麻省理工学院等许可下另外发布X,这样如果有人只想要X而不是Y,他们不需要将它与GPL一起使用?

5 个答案:

答案 0 :(得分:3)

是的,您可以根据自己的任何许可发布源代码。根据美国版权法,您拥有此权利。

但是,如果您在源代码中包含任何GPL源代码(或使用任何GPL代码分发),则必须使用GPL许可证进行整个工作。那是因为你必须同意他们使用他们的代码的许可。

顺便说一句。我不是律师。

答案 1 :(得分:1)

MIT许可证也与GPL兼容,这意味着GPL允许与使用MIT许可证的软件进行组合和再分发。这个link应该为您提供全面的分析。你应该熟悉的库和插件与模块等有很多ifs和buts以及定义。

答案 2 :(得分:1)

这里的关键问题是:如果您仅在MIT许可证(或其他一些相当宽松的开源许可证)下许可X,您的软件X是否可以分发?

该问题的答案是:

  • 否,如果X对GPL许可库Y的依赖是强制性的,则无法避免构建/使用X.
  • 是,如果X对GPL许可库的依赖性是可选的Y,并且默认情况下是禁用的。

如果无法避免对Y的依赖,那么在MIT下发布X本质上会阻止任何人(例如Linux发行版,商业供应商或提供预构建软件的网站)通过GPL许可库分发您的软件在构建中启用。

因此,虽然您可以决定根据MIT许可证许可自己的软件,但通过在此许可下发布,您可能会为所有用户带来麻烦。

我猜它不是你想要的。

我的建议是你下定决心:

  • 如果此GPL许可库Y对您的软件至关重要,则根据GPL发布X. (最简单,最正确的选择)
  • 如果GPL许可库Y是可选的,则在双GPL / MIT许可下发布X,如果您确实需要在MIT许可下提供软件版本,但希望允许(由您或其他人)分发X启用Y支持。 (只有在确实需要的时候)
  • 如果GPL许可库Y是可选的,则在MIT下发布X,但请注意,在启用Y支持的情况下,任何人都无法以任何方式分发您的软件。 (为用户带来潜在的麻烦,但收益确实不明)

我希望这会有所帮助。

答案 3 :(得分:0)

我的理解是,尽管您不是律师,但您可以根据所需的任何许可证许可您的代码,只要您还许可它以与您使用的组件兼容。

如果您的代码依赖在GPL代码上,只要您不使用GPL代码分发,就不需要根据GPL许可。例如,IPython最初使用的是readline,但是他们从显式/必需的依赖项中删除了它,只有在它存在时才使用它,以便它们可以符合GPL,但在他们选择的任何许可下许可他们的软件。 (对不起,我找不到参考资料。)

答案 4 :(得分:-1)

是的,您可以使用GPL库;只要您dynamically link,就不要使用GPL许可。否则Linux内核就不会有很多驱动程序。

这意味着您必须拥有单独的可执行文件(和/或有关您使用该软件的文档);在运行时而不是编译时加载。这也意味着您离Dependency HELL!!!

更近了一步

Dependency HELL有几个领域,这里没有特别的顺序:

  • DLL Hell
  • DSO Hell
  • Jar Hell
  • RPM Hell
  • 扩展冲突
  • 定义1 0

每个都有多种形式,最终形成最糟糕的形式:

多个循环的多个长链和相互冲突的依赖,它会让你的大脑挣脱你的灵魂!