0

我有一个为视频文件创建缩略图的项目,它很大程度上基于directshow.net中的互操作定义。

目前媒体浏览器是 GPL,所以一切都是兼容的,我很高兴剪切和粘贴这段代码(因为它的所有属性都正确)。

但是...我正在考虑将此代码包含在衍生的 MIT 许可项目中。这让我有点不知所措。

Directshow.net 在 LGPL 下获得许可,这意味着我可以依赖该 DLL。但是......我不能真正包含限制较少的许可证下的代码。

有问题的文件是互操作定义,可以通过阅读 MSDN 并将内容转换为 C# 轻松/繁琐地定义,如果我手动执行此操作,我很可能会得到相同的代码(或非常相似的代码)。

我站在哪里?如何将此功能纳入我的 MIT 许可项目?

相关: http: //sourceforge.net/forum/forum.php ?thread_id=3040125&forum_id=460697

4

5 回答 5

6

把所有的代码做成一个DLL,就可以了。根据 LGPL 的条款,您可以将其作为共享库从您想要的任何项目链接到它;许可要求仅涵盖 LGPL DLL 本身。它必须是 LGPL,但你的项目的其余部分不会。

如果您想将库的代码静态链接到可执行文件中,事情会变得有点棘手。LGPL 的重点是最终用户必须拥有自行修改(尤其是升级)库功能的自由。如果它是一个独立的 DLL,那么只需将一个 DLL 换成另一个即可。如果你拿代码并静态链接它,那就没那么简单了。那么你有两个选择:

  1. 使用与 LGPL 兼容的许可证开源整个项目。(这个变得丑陋了。)
  2. 向您的用户提供目标代码(提供给链接器的中间阶段编译文件),以便他们可以获取库的更新版本并手动链接它。这是一种丑陋的解决方案,但这是允许的。

最好的办法是只使用 DLL。

于 2009-06-03T12:29:01.567 回答
1

使用 LGPL,您只需共享(并使用 LGPL 或 GPL 覆盖)源代码,该源代码是相关库的直接派生——即您可以对该库进行的更改。任何仅依赖于该库的代码(例如通过链接但不更改它)都不受 LGPL 许可的约束——因此您可以根据自己的意愿对其进行 MIT 许可!

于 2009-05-31T07:17:24.747 回答
1

此外,界面定义、无“创意”表达(如描述性评论)不受版权保护,如果有记忆的话。如果您包含的唯一代码是这样的“样板”,那么您应该没问题。

当然,我不是律师,现在也找不到开创这个先例的案子。也许某个好心的编辑会觉得有帮助?

于 2009-06-02T05:37:36.123 回答
1

这是对接口注释的补充:(L)GPL 是在链接时调用的许可证(其所有措辞都是关于链接时刻的),严格来说,当使用 LGPL 标头时,实际上不会链接任何 LGPL 代码。

于 2009-06-03T20:11:58.027 回答
0

最好避免法律问题并重新创建互操作定义。看看 P/Invoke Interop Assistant。只需将 C++ 标头粘贴到工具中,它就会为您提供绑定。这仍然很乏味,但比手动完成要痛苦得多。

于 2009-06-03T18:49:02.140 回答