2009-02-25 2 views
0

У меня есть a project, который создает миниатюры для видеофайла, в значительной степени основанный на определениях interop в directshow.net.В какой степени определения interop покрываются по их первоначальной лицензии

В настоящее время медиа-браузер - это GPL, поэтому все совместимо, и я все хорошо умею вырезать и вставлять этот код (поскольку все его атрибуты должным образом).

Но ... Я рассматриваю включение этого кода в производный лицензионный проект MIT. Что оставляет меня в небольшом месте.

Directshow.net имеет лицензию под LGPL, что означает, что я могу зависеть от этой DLL. Но ... я не могу включить код под менее ограничительной лицензией.

Указанные файлы являются определениями взаимодействия, которые можно легко/утомительно определить, прочитав MSDN и переведя материал на C#, если бы я сделал это вручную, я бы скорее всего пришел к тому же коду (или что-то невероятно похожее).

Где я могу здесь бы быть? Как получить эту функциональность в моем лицензионном проекте MIT?

Похожие: http://sourceforge.net/forum/forum.php?thread_id=3040125&forum_id=460697

+2

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что его следует попросить адвоката. – BradleyDotNET

+0

Я голосую, чтобы закрыть этот вопрос как вне темы, потому что речь идет о лицензировании или правовых вопросах, а не о программировании или разработке программного обеспечения. Подробнее см. [[Здесь] (http://meta.stackoverflow.com/a/274964/1402846)] и [[помощь/по темам]]. – Pang

ответ

6

Возьмите весь код и внесите его в DLL, и все в порядке. В соответствии с условиями LGPL вы можете ссылаться на него как на общую библиотеку из любого проекта, который вы хотите; только сама LGPL DLL покрывается требованием лицензирования. Это должен был быть LGPL, но остальная часть вашего проекта не будет.

Вещи становятся немного более причудливыми, если вы хотите статически свяжите код библиотеки с исполняемым файлом. Точка LGPL заключается в том, что конечный пользователь должен иметь право изменять (и особенно обновлять) функциональность библиотеки по своей собственной инициативе. Если это автономная DLL, это просто вопрос обмена одной DLL для другой. Если вы берете код и статически связываете его, это не так просто. Затем у вас есть два варианта:

  1. Открытый проект с полным исходным кодом с лицензией, совместимой с LGPL. (Этот становится уродливым.)
  2. Предоставьте объектный код (файлы компиляции промежуточной стадии, которые передаются в компоновщик) вашим пользователям, чтобы они могли взять обновленную версию библиотеки и связать ее вручную. Это своего рода уродливое решение, но это разрешено.

Лучше всего использовать только DLL.

1

С LGPL, вам нужно всего лишь разделить (и накройте LGPL или GPL) исходного кода, который является прямым производным от библиотеки в вопросе - то есть, изменения вы можете сделать в том, что библиотека. Любой код, который только зависит от от этой библиотеки, например. связывая, но не меняя его, не ограничивается лицензией LGPL, поэтому вы можете MIT-лицензировать его до вашего сердца!

+0

Дело в том, что, когда часть программного обеспечения является MIT или BSD, вы можете закрыть ее источник. Если я распространю DLL, содержащее программное обеспечение GPL, это GPL LGPL, я понимаю, что источник DLL ДОЛЖЕН быть GPL, а также соответствовать copyleft. –

1

Кроме того, определения интерфейсов, sans 'creative' expression (например, описательные комментарии) не подпадают под действие авторских прав, если используется память. Если единственным кодом, который вы включаете, является такой «шаблонный», то все должно быть в порядке.

Конечно, я не юрист, и я не могу найти случай, который установил этот прецедент прямо сейчас. Может быть, какой-то редактор понравится?

+0

его сложное, вы можете определить одно и то же определение interop разными способами. Поэтому кто-то может утверждать, что определение взаимодействия является творческой работой ... –

0

Возможно, было бы лучше просто избежать юридических головных болей и воссоздать определения взаимодействия. Взгляните на помощника P/Invoke Interop. Просто вставьте заголовки C++ в инструмент, и он даст вам ваши привязки. Это все еще утомительно, но гораздо менее болезненно, чем все это вручную.

1

Это дополнение к замечанию интерфейсов: (L) GPL - это лицензия, которая вызывается при связывании (вся ее формулировка касается момента связывания), и строго, когда используется заголовок LGPL, NO код LGPL не является фактически связаны.

+0

Правда, если ваш заголовочный файл ТОЛЬКО содержит заголовки (прототипы функций) и никакого действительного кода. Иногда это происходит, но не всегда. –

 Смежные вопросы

  • Нет связанных вопросов^_^