2010-05-27 121 views
5

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

回答

1

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

+0

这不是我要求的。在这种情况下,组合软件将全部为GPL。麻省理工学院的许可证仅仅是一个例子,它可以想象得到与GPL不兼容的许可证。 – swampsjohn 2010-05-27 21:26:40

+0

查看此链接http://blog.milkingthegnu.org/2008/04/gpl-for-dummies.html进行全面分析。 – 2010-05-27 21:46:19

+0

@swampsjohn:如果您的许可证与GPL不兼容,则不应将其与GPL作品结合使用。 – ninjalj 2010-09-30 19:35:29

1

这里的关键问题是:如果您仅在MIT许可证(或其他一些非常宽松的开放源代码许可证)下许可X,您的软件X才能分发?

的这个问题的答案是:

  • 没有如果在GPL许可的库Y X的依赖是强制性的,无法避免的建立/使用十
  • 是如果的依赖GPL授权库中的X是可选的Y,并且默认情况下是禁用的。

如果无法避免Y上的依赖,MIT下然后释放X将从根本上防止任何人(例如Linux发行版,或商业供应商,或Web站点提供预构建的软件),从与GPL发布软件在构建中启用许可库。

因此,虽然您可以根据MIT许可证决定授权您自己的软件,但通过在此许可证下发布软件,您可能会为所有用户头痛不已。

而我的猜测是,它不是你要找的。

我的建议是,你让你的心,要么之间做出选择:在GPL下

  • 发布X如果GPL许可的库Y是你的软件是必不可少的。 (最简单的,正确的选项)
  • 如果GPL许可的库Y是可选的,并且您确实需要根据MIT许可获得软件版本,则在双GPL/MIT许可下发布X ,但希望允许启用Y支持的X(由您或其他人)分发。 (仅在真正需要时)
  • 如果GPL许可的库Y是可选的,则在MIT下释放X,但请注意,在启用Y支持的情况下,任何人都无法以任何方式分发软件。(造成用户潜在的麻烦,对于一个非常不明确的好处)

我希望这会有所帮助。

+0

MIT + GPL = GPL,所以你的第三个要点实际上是GPL。 – ninjalj 2010-09-30 19:42:52

-1

是的,你可以使用GPL库;并且只要你使用GPL许可证,你就可以使用它。否则Linux内核将不会有非常多的驱动程序。

这意味着你必须有一个单独的可执行文件(和/或关于你使用该软件的文档);在运行时加载而不是编译时。这也意味着,你是一步步接近Dependency HELL!!!

有依赖地狱的几个领域,在这里,他们是在没有特定的顺序:

  • DLL地狱
  • DSO地狱
  • 罐地狱
  • RPM地狱
  • 扩展冲突
  • 定义1 0

每一个

有多种形式,最终进入最糟糕的形式:多重循环和相互冲突的依赖那翻腾到你的大脑吸出你的灵魂的

多长链!

+0

哇,人们继续下去投票,根本没有评论,甚至不考虑写任何评论。 – GlassGhost 2010-10-29 22:48:48