LGPL требует, чтобы в случае, если программа использует библиотеку LGPL, пользователи должны иметь возможность повторно связать программу с другой версией библиотеки:
...
г) Выполните одно из следующих действий:
0) Передать Минимальный Соответствующий Источник в соответствии с условиями настоящей Лицензии и Код Соответствующего Приложения в форме, подходящей и на условиях, которые позволяют пользователю рекомбинировать или связывать Приложение с модифицированной версией Связанной версии для создания модифицированная комбинированная работа, в порядке, указанном в разделе 6 GNU GPL для передачи соответствующего источника.
1) Используйте подходящий механизм разделяемой библиотеки для связи с библиотекой. Подходящим механизмом является тот, который (а) использует во время выполнения копию библиотеки, уже имеющейся в компьютерной системе пользователя, и (б) будет правильно работать с модифицированной версией библиотеки, совместимой по интерфейсу с связанной версией.
...
Однако в некоторых случаях это может представлять значительные трудности. В частности, программы на Haskell почти всегда статически компилируются. Более того, компилятор выполняет межмодульную оптимизацию, поэтому невозможно вынуть часть кода и заменить его другой. Поэтому очень сложно удовлетворить это условие. (Смотрите эту ссылку на Haskell Wiki.)
Динамическое связывание было бы решением, но во многих случаях это невозможно. Например:
- Некоторые платформы могут вообще не иметь динамического связывания.
- Некоторые языки не имеют возможности динамического связывания. Или невозможно сделать модули мультиплатформенными.
- В некоторых случаях динамическое связывание препятствует важной оптимизации. Хотя я бы сказал, что это редко является серьезной проблемой, в таких языках, как Haskell, потеря производительности может быть значительной.
Поэтому я ищу стандартную лицензию, подобную LGPL, которая не требует возможности повторного связывания (и я понимаю, что это лишает пользователей свободы). Некоторые проекты используют собственную модификацию LGPL, например, wxWidgets . Но я бы предпочел использовать некоторую стандартную лицензию, которая несколько более официальная, возможно, проверена некоторыми юристами, и (L) совместима с GPL. Есть ли что-то подобное?
(Также мне было бы интересно узнать, есть ли непредвиденные последствия такой модификации LGPL.)
источник
Ответы:
Я удивлен, что никто не упомянул Общественную Лицензию Mozilla. Это похоже на LGPL, за исключением того, что позволяет статическое связывание. Версия 2 MPL совместима с GPL / LGPL.
Общественная лицензия Mozilla (MPL 2.0) и Стандартная общественная лицензия Lesser GNU (LGPL 3.0)
источник
wxwidgets лицензируется по существу = LGPL + статическое связывание
источник
IANAL, но меня убеждают, что одним из решений является предоставление объектных файлов для деталей, не принадлежащих LGPL. Таким образом, пользователь может повторно связать программу и, таким образом, может изменить часть LGPL, выполняя требования LGPL.
Другими словами, вам нужно иметь исходный пакет с исходными кодами LGPL и скомпилированными объектными файлами с кодом не-LGPL. Очевидно, что вам необходимо предоставить объектные файлы для каждой архитектуры, для которой вы выпускаете двоичные файлы, но я не думаю, что это большая проблема.
С точки зрения разработки, простейшим может быть только то, что система сборки будет одновременно собирать исходный пакет при сборке двоичного файла для распространения.
источник
Я нашел один с Google: лицензия OpenScales
Хотя это не стандартно, и я не знаю, существует ли он.
источник
Как бы вы продолжали гарантировать свободу пользователей? Я полагаю, что «правильный» ответ - статически связать прокладку, которая динамически загружает библиотеку.
источник