我有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
答案 0 :(得分:6)
获取所有代码并将其转换为DLL,你没事。根据LGPL的条款,您可以从任何项目链接到它作为共享库;只有LGPL DLL本身才受许可要求的约束。它必须是LGPL,但你的项目的其余部分不会。
如果您希望静态将库的代码链接到您的可执行文件中,事情会变得更加繁琐。 LGPL的观点是最终用户必须能够自由地主动修改(尤其是升级)库的功能。如果它是一个独立的DLL,那只是将一个DLL换成另一个DLL的问题。如果您使用代码并静态链接它,那就不那么简单了。那你有两个选择:
最好的办法就是使用DLL。
答案 1 :(得分:1)
使用LGPL,您只需要共享(并覆盖LGPL或GPL)源代码,该代码是相关库的直接衍生物 - 即,您可以对该库进行更改。 依赖在该库上的任何代码,例如通过链接,但不会改变它,不受LGPL许可的约束 - 所以你可以MIT许可它到你心中的内容!
答案 2 :(得分:1)
此外,如果内存服务,界面定义,无“创意”表达(例如描述性评论)不受版权保护。如果您所包含的唯一代码是“样板”,那么您应该没问题。
当然,我不是律师,我现在找不到立即设立先例的案例。也许某种编辑感觉很有帮助?
答案 3 :(得分:1)
这是对接口备注的补充:(L)GPL是在链接时调用的许可证(所有措辞都是关于链接时刻),严格来说,当使用LGPL头时,实际上没有LGPL代码联的。
答案 4 :(得分:0)
最好避免法律问题并重新创建互操作定义。看看P / Invoke Interop助手。只需将C ++标题粘贴到工具中,它就会为您提供绑定。它仍然是单调乏味的,但比手工操作更加痛苦。