【发布时间】:2010-05-27 20:48:51
【问题描述】:
假设我编写了一些代码,我们称之为 X。它使用一些 GPL 代码,我们称之为库 Y。显然我必须使用 GPL 许可证发布 X。没关系。我的问题是,我是否可以在 MIT 等许可下额外发布 X,这样如果有人只想要 X 而不是 Y,他们就不需要将它与 GPL 一起使用?
【问题讨论】:
假设我编写了一些代码,我们称之为 X。它使用一些 GPL 代码,我们称之为库 Y。显然我必须使用 GPL 许可证发布 X。没关系。我的问题是,我是否可以在 MIT 等许可下额外发布 X,这样如果有人只想要 X 而不是 Y,他们就不需要将它与 GPL 一起使用?
【问题讨论】:
是的,您可以在任何您希望的许可下发布您的源代码。根据美国版权法,您拥有该权利。
但是,如果您在源代码中包含任何 GPL 源代码(或与任何 GPL 代码一起分发),则您必须为整个工作使用 GPL 许可。那是因为你必须同意他们的许可才能使用他们的代码。
顺便说一句。我不是律师。
【讨论】:
MIT 许可证也与 GPL 兼容,这意味着 GPL 允许与使用 MIT 许可证的软件组合和重新分发。这个link应该为你提供全面的分析。您应该熟悉很多关于库、插件、模块等的 ifs and buts 和定义。
【讨论】:
这里的关键问题是:如果您仅根据 MIT 许可证(或其他一些相当宽松的开源许可证)许可 X,您的软件 X 是否可以分发?
这个问题的答案是:
如果无法避免对 Y 的依赖,那么在 MIT 下发布 X 将基本上阻止任何人(例如 Linux 发行版、商业供应商或提供预构建软件的网站)使用 GPL 许可库分发您的软件在构建中启用。
因此,虽然您可以决定根据 MIT 许可授权您自己的软件,但根据此许可发布它会给您的所有用户带来麻烦。
我猜这不是你要找的。p>
我的建议是您下定决心并在以下两者之间做出选择:
我希望这会有所帮助。
【讨论】:
尽管我不是律师,但我的理解是,您可以根据您想要的任何许可集许可您的代码,只要您还许可它与您使用的组件兼容。
如果您的代码不依赖 GPL 代码,那么只要您不使用 GPL 代码分发它,您就不需要获得 GPL 许可。例如,IPython 最初使用的是 readline,但他们从显式/必需的依赖项中删除了它,并且只在它存在时才使用它,这样他们就可以遵守 GPL,但他们选择的任何许可都许可他们的软件。 (抱歉,我找不到参考资料。)
【讨论】:
是的,您可以使用 GPL 库;只要你dynamically link 就不要使用 GPL 许可证。否则Linux内核不会有很多驱动程序。
这意味着您必须有一个单独的可执行文件(和/或有关您使用该软件的事实的文档);在运行时而不是编译时加载。这也意味着你离Dependency HELL!!!更近了一步
Dependency HELL 有几个领域,在这里它们没有特定的顺序:
每个都有多种形式,最终形成最坏的形式:
多个循环和相互冲突的依赖关系的长链,它们在你的大脑中蠕动,吸走你的灵魂!!!
【讨论】: