Чи є модифікована ліцензія LGPL, яка дозволяє статичне посилання?


21

LGPL вимагає, щоб вона, якщо програма використовує бібліотеку, що редагується LGPL, користувачі повинні мати можливість знову пов’язати програму з іншою версією бібліотеки:

...

г) Виконайте одну з наступних дій:

0) Передайте Мінімальне відповідне джерело згідно з умовами цієї Ліцензії та відповідним кодом заявки у формі, придатній для та за умовами, що дозволяють користувачеві рекомбінувати або повторно зв’язати додаток із зміненою версією пов'язаної версії, щоб створити модифікована комбінована робота в порядку, визначеному розділом 6 GPL GPL для передачі відповідного джерела.

1) Використовуйте відповідний механізм спільної бібліотеки для зв’язку з Бібліотекою. Відповідним механізмом є той, який (a) використовує під час виконання копію Бібліотеки, яка вже є в комп'ютерній системі користувача, і (b) буде належним чином працювати з модифікованою версією Бібліотеки, сумісною з інтерфейсом з Пов'язаною версією.

...

Однак у деяких випадках це може становити значні труднощі. Зокрема, програми Haskell майже завжди статично складені. Більше того, компілятор робить міжмодульні оптимізації, тому неможливо вийняти частину коду та замінити його іншим. Тому дуже важко задовольнити цю умову. (Дивіться це посилання на Haskell Wiki.)

Динамічне зв’язування було б рішенням, але в багатьох випадках це неможливо. Наприклад:

  • Деякі платформи можуть взагалі не мати динамічного зв’язку.
  • Деякі мови не мають можливості динамічного зв’язку. Або неможливо зробити модулі багатоплатформенними.
  • У деяких випадках динамічне зв’язування заважає важливим оптимізаціям. Хоча я б сказав, що це рідко є серйозною проблемою, але на таких мовах, як Haskell, втрата продуктивності може бути значною.

Тому я шукаю стандартну ліцензію, що нагадує LGPL, яка б не вимагала можливості повторного посилання (і я розумію, що це позбавляє користувачів трохи свободи). Деякі проекти використовують власну модифікацію LGPL, наприклад wxWidgets . Але я б скоріше скористався стандартною ліцензією, яка є дещо офіційною, можливо, перевірена експертами з правових питань та (L) GPL сумісною. Чи є щось подібне?

(Також мені було б цікаво дізнатися, чи є якісь непередбачені наслідки такої модифікації LGPL.)


Ви не можете динамічно зв’язуватися за межами бібліотек Haskell? Це повинно бути проклято незручно.
Роберт Харві

2
Якщо весь ваш проект - FOSS, то це може бути проблемою. Направте їх на джерела , і нехай вони розбирайтеся! :-)
Пітер Роуелл

2
Що відрізнятиме цю ліцензію від ліцензій, що не належать копіювальному?

2
@delnan У LGPL є багато інших речей, які часто бажані. Наприклад, вона вимагає, щоб будь-які зміни були (L) GPL, або забороняли тивоїзацію .
Петро Пудлак

Ліцензія на wxWindows є настільки ж офіційною, як і отримується, враховуючи, що вона затверджена OSI .
Йоахім Зауер

Відповіді:



12

wxwidgets ліцензується за принципом = LGPL + статичне посилання

... по суті, L-GPL (Library General Public License), за винятком того, що похідні твори у двійковій формі можуть поширюватися за власними умовами користувача. Це рішення, яке задовольняє тих, хто бажає виробляти програмне забезпечення GPL'ed за допомогою wxWidgets, а також тих, хто виробляє власне програмне забезпечення.

wxWidgets - сертифікований учасник програмного забезпечення з відкритим кодом у дискусії, яка призвела до цього рішення, включають фолк з Abisource , Роберта Роблінга , Джуліана Смарта, Маркуса Флека, Карстен Баллудер та деякі поради Річарда Столмана. Річард підтвердив, що нова ліцензія сумісна із програмами GPL'ed. Однак суттєвих обмежень щодо власницьких додатків немає.

Ліцензія на wxWindows була схвалена Ініціативою з відкритим кодом , і ви можете знайти ліцензію на їхньому сайті тут ...


0mq також ліцензується під LGPL з явним винятком статичного посилання.
Тревор Пауелл

4

IANAL, але мене вважають, що одним із рішень є надання об'єктних файлів для деталей, що не належать LGPL. Таким чином користувач може повторно зв’язати програму, і тому він може змінити частину LGPL, виконуючи вимоги LGPL.

Іншими словами, вам потрібно мати вихідний пакет із джерелами LGPL та компільованими об’єктними файлами коду, що не стосується LGPL. Очевидно, що тоді вам потрібно надати об’єктні файли для кожної іншої архітектури, для якої випускаєте двійкові файли, але я не думаю, що це велика проблема.

З точки зору розвитку, найпростішим може бути просто побудова системи також одночасно будувати вихідний пакет, будуючи бінарний файл для розподілу.


чи є у вас реальний сценарій, за яким це зроблено?
knocte

3

Я знайшов його з ліцензією Google: OpenScales

OpenScales випускається у версії 3 меншої публічної ліцензії GNU (LGPL, доступна тут ), з винятком, пов’язаним із винятком статичного посилання (див. Нижче) ...

Окрім тексту ліцензії LGPL, виняток із умов LGPL стосується OpenScales:

Як особливий виняток до ліцензії на загальну публічну ліцензію GNU версії 3, ви можете передати третій стороні виконуваний файл із комбінованого твору, який стаціонарно чи динамічно посилається на частини цієї бібліотеки у виконуваний файл, передаючи мінімальний відповідний джерело, але без необхідності передавати відповідний кодекс заявок відповідно до розділу 4d0 Малої загальної публічної ліцензії GNU, доки ви не використовуєте модифіковану публічно розповсюджувану версію Бібліотеки. Цей виняток не скасовує жодних інших причин, через які виконуваний файл може бути охоплений меншою загальною публічною ліцензією GNU або GNU General Public License.

Це не стандартно, і я не знаю, чи існує.


1

Як би ви надалі гарантували свободу користувачів? Я вважаю, що "правильною" відповіддю є статичне з'єднання прокладки, яка динамічно завантажує бібліотеку.


Так, це найкраще рішення. Але в деяких випадках динамічне зв’язування неможливо. Деякі мови не мають такої можливості. Або деякі платформи не мають такої можливості.
Петро Пудлак

Насправді лінкери роблять саме це, коли ви динамічно посилаєтесь на бібліотеку.
Кальмарій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.