Kalombyr
@Kalombyr

Разные лицензии на программу и плагины к ней?

Доброго дня!
Пишу прогу под GPLv3 с возможностью подключения плагинов (динамическая линковка).
Вопрос - будут ли какие-либо ограничения по лицензии у самих плагинов (например, если автор захочет ограничить коммерческое использование своего плагина)?
Могу ли я ограничить с какой лицензией можно подключать плагины (например только MIT или GPLv3)?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
@Z-r
IANAL, TINLA.

> Пишу прогу под GPLv3

Так. А выбор условий лежит полностью на вас? То есть это либо целиком ваш труд (что почти невозможно :-), либо все хозяева всех зависимостей разрешили вам это делать по вашему собственному усмотрению?

Если да, то обратите внимание, что вы же можете сколь угодно избирательно ослабить авторское лево GNU GPL — ну, к примеру, прямо дозволить компоновку с теми или иными несвободными библиотеками. И это не будет ей противоречить.

> с возможностью подключения плагинов (динамическая линковка)

Так.

> Вопрос - будут ли какие-либо ограничения по лицензии у самих плагинов

Ровно на этот вопрос дан развернутый ответ [0] в ЧаВО по лицензиям ГНУ.


— Когда программа и ее внешние модули считаются единой комбинированной программой? (#GPLPlugins)

Это зависит от того, как главная программа вызывает свои внешние модули. Если главная программа использует для этого fork и exec и они завязывают тесное общение через сложные структуры данных, общие или передаваемые туда и обратно, то они становятся единой комбинированной программой. Когда главная программа использует для вызова внешних модулей просто fork и exec, не завязывая тесного общения с ними, внешние модули остаются отдельными программами.

Если главная программа динамически компонуется с модулями и они вызывают функции друг из друга и разделяют общие структуры данных, мы убеждены, что они формируют единую комбинированную программу, которая должна рассматриваться как расширение и главной программы, и модулей. Если главная программа динамически компонуется с модулями, но взаимодействие между ними ограничено вызовом «главной» процедуры модуля с какими-то параметрами и ожиданием результата, то это предельный случай.

Применение общей памяти для обмена сложными структурами данных вполне эквивалентно динамическому связыванию.

— Если я пишу внешний модуль для применения с программой, выпущенной под GPL, какие требования это налагает на лицензии, под которыми я могу распространять свой модуль? (#GPLAndPlugins)

См. [предыдущий] вопрос для определения того, считаются ли модули и главная программа единой комбинированной программой или раздельными произведениями.

Если главная программа и модули составляют комбинированную программу, то это значит, что вы должны выпускать модуль под GPL или совместимой с ней лицензией свободных программ и распространять его с исходным текстом так, чтобы это было совместимо с GPL. Если главная программа отдельна от внешних модулей, то это не налагает требований на внешние модули.


Чем он вас не устроил?

> Могу ли я ограничить с какой лицензией можно подключать плагины (например, только MIT

Если да (второй абзац), то да, только тогда уже ваша программа не будет под GNU GPLv3. *Такое* условие ей противоречит.

[0] https://www.gnu.org/licenses/gpl-faq.ru.html#GPLPlugins

___
P. S. И да, хотя вы об этом не спрашивали, не удержусь посоветовать не следовать дурным примерам, и не распространять свою работу на условиях GNU *L версии такой-то и _только_ такой-то, но всегда выбирать версии такую-то _или более позднюю_. Как этот рекомендовано в ней самой [a].

Это справедливо даже в том случае, если сейчас у нее есть зависимость от работы под версией N ровно.

[a] https://www.gnu.org/licenses/gpl-3.0.html#howto
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы