5

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

4

5 回答 5

3

是的,您可以在任何您希望的许可下发布您的源代码。根据美国版权法,您拥有该权利。

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

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

于 2010-06-03T08:26:40.800 回答
1

MIT 许可证也与 GPL 兼容,这意味着 GPL 允许与使用 MIT 许可证的软件组合和重新分发。此链接应为您提供全面的分析。有很多关于库、插件、模块等的 ifs and buts 和定义,你应该熟悉。

于 2010-05-27T20:51:19.663 回答
1

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

这个问题的答案是:

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

如果无法避免对 Y 的依赖,那么在 MIT 下发布 X 基本上会阻止任何人(例如 Linux 发行版、或商业供应商或提供预构建软件的网站)在建造。

因此,虽然您可以决定根据 MIT 许可证授权您自己的软件,但根据此许可证发布它会给您的所有用户带来麻烦。

我猜这不是你要找的。

我的建议是您下定决心并在以下两者之间做出决定:

  • 如果这个 GPL 许可的库 Y 对您的软件至关重要,则在 GPL 下发布 X。(最简单的,做正确的事情的选项)
  • 如果 GPL 许可库 Y 是可选的,并且如果您确实需要在 MIT 许可下提供可用的软件版本,但希望允许(由您或其他人)分发 X 与 Y支持启用。(仅当确实需要时)
  • 如果 GPL 许可的库 Y 是可选的,则在 MIT 下发布 X,但请注意,在启用 Y 支持的情况下,没有人能够以任何方式分发您的软件。(给用户带来潜在的麻烦,但好处并不明确)

我希望这有帮助。

于 2010-06-03T08:03:27.947 回答
0

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

如果您的代码不依赖于 GPL 代码,那么只要您不使用 GPL 代码分发它,您就不需要在 GPL 下获得许可。例如,IPython 最初使用的是 readline,但他们从显式/必需的依赖项中删除了它,并且只在它存在时才使用它,这样他们就可以遵守 GPL,但他们选择的任何许可都许可他们的软件。(对不起,我找不到参考资料。)

于 2010-05-27T21:00:53.740 回答
-1

是的,您可以使用 GPL 库;只要您动态链接到它,就不要使用 GPL 许可证。否则Linux内核将不会有很多驱动程序(如果有的话)。

这意味着您必须有一个单独的可执行文件(和/或有关您使用该软件的事实的文档);在运行时而不是编译时加载。这也意味着你离依赖地狱又近了一步!!!

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

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

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

多个循环和相互冲突的依赖关系的多个长链,它们缠绕在你的大脑中,吸走了你的灵魂!!!

于 2010-09-19T03:35:00.510 回答