在其原始许可下涵盖的互操作定义的程度

时间:2009-02-25 06:02:21

标签: .net licensing

我有a project为视频文件创建缩略图,它基于directshow.net中的互操作定义。

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

但是......我正在考虑将此代码包含在衍生的MIT许可项目中。这留下了一点点。

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

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

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

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

5 个答案:

答案 0 :(得分:6)

获取所有代码并将其转换为DLL,你没事。根据LGPL的条款,您可以从任何项目链接到它作为共享库;只有LGPL DLL本身才受许可要求的约束。它必须是LGPL,但你的项目的其余部分不会。

如果您希望静态将库的代码链接到您的可执行文件中,事情会变得更加繁琐。 LGPL的观点是最终用户必须能够自由地主动修改(尤其是升级)库的功能。如果它是一个独立的DLL,那只是将一个DLL换成另一个DLL的问题。如果您使用代码并静态链接它,那就不那么简单了。那你有两个选择:

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

答案 1 :(得分:1)

使用LGPL,您只需要共享(并覆盖LGPL或GPL)源代码,该代码是相关库的直接衍生物 - 即,您可以对该库进行更改依赖在该库上的任何代码,例如通过链接,但不会改变它,不受LGPL许可的约束 - 所以你可以MIT许可它到你心中的内容!

答案 2 :(得分:1)

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

当然,我不是律师,我现在找不到立即设立先例的案例。也许某种编辑感觉很有帮助?

答案 3 :(得分:1)

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

答案 4 :(得分:0)

最好避免法律问题并重新创建互操作定义。看看P / Invoke Interop助手。只需将C ++标题粘贴到工具中,它就会为您提供绑定。它仍然是单调乏味的,但比手工操作更加痛苦。