LINUX.ORG.RU

Лицензия LGPLv3 для Qt5. Что на практике означает LGPLv3 при линковке с таким кодом?

 


1

3

Есть проект под лицензией BSD. Хочу положить на сайте собранный и статически слинкованный бинарь для ленивых. Слинковаться надо с Qt5, которая под LGPLv3. Какую-то GPL-заразу это может наложить на остальной код проекта?

Как я понял - никакой. Мой код по-прежнему BSD. Всё так?

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

иными словами, да, твой код остается под BSD, но по требованию LGPL ты должен предоставить либо исходники, либо объектники, либо другой способ пересобрать Qt и слинковать обратно твою прогу.

waker ★★★★★
()

Рядом с бинарём, отдельным архивом выложи *.o (или *.obj) файлы своей программы.

И можешь линковаться статикой без юридической ерунды.

EXL ★★★★★
()

Не парься. Делаешь «составное произведение» и распространяешь под любой лицензией. У нас в России все так делают.

anonymous
()
Ответ на: комментарий от EXL

Рядом с бинарём, отдельным архивом выложи *.o (или *.obj) файлы своей программы.

Что это за шиза? Нахера?

И можешь линковаться статикой без юридической ерунды.

Что вы хотите сказать?

Zmicier ★★★★★
()
Ответ на: комментарий от anonymous

Делаешь «составное произведение» и распространяешь под любой лицензией.

Переведите, пожалуйста.

Zmicier ★★★★★
()
Ответ на: комментарий от waker

но по требованию LGPL ты должен предоставить либо исходники, либо объектники

Для Qt — строго соответствующие исходники.

Zmicier ★★★★★
()

Есть проект под лицензией BSD

Нет какой-то-там «лицензии BSD», их по меньшей мере три. Хотя в данном случае это большого значения не играет (вообще достаточно было сказать, что ваша программа свободна).

Хочу положить на сайте собранный и статически слинкованный бинарь для ленивых.

Положите.

Слинковаться надо с Qt5, которая под LGPLv3. Какую-то GPL-заразу это может наложить на остальной код проекта?

Что? «GPL-зараза»? Что это? У вас, кажется, какие-то странные представления сложились; давайте о них поговорим поподробнее.

А в вашем случае никаких проблем нет — просто берете все исходники, из которых вы собирали вашу программа (включая Qt и все остальное) и кладете рядом со сборкой. В сборку наряду с текстом условий собственно вашей программы (одна из лицензий BSD) не забываете включить доступное пользователю упоминание о том, что с ней вместе собрана Qt, которая есть тоже свободная программа на таких-то условиях. И полный текст этих условий; причем обратите внимание, что GNU Lesser GPLv3 состоит не только из вот этого, но и из полного текст GNU GPLv3 тоже.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Что? «GPL-зараза»? Что это?

«Если модули включаются в один и тот же исполняемый файл, они определенно комбинируются в одной программе. Если модули составлены, чтобы работать, связываясь в общем адресном пространстве, это почти наверное означает, что они комбинируются в одну программу.» (c) http://www.gnu.org/licenses/gpl-faq.html#MereAggregation

Что приводит к тому, что FSF начинает требовать, чтобы программа, которая линкуется с GPL также распространялась под GPL.

monk ★★★★★
()
Ответ на: комментарий от EXL

Да прекрасно, не надо мне пересказывать условия лицензий ГНУ, тем более Википедией.

Здесь-то это нафига? У товарища как бы свободная программа — он ее исходники (я так понял) уже опубликовал, а теперь решил и сборочку опубликовать.

Zmicier ★★★★★
()
Ответ на: комментарий от monk

распространялась под GPL.

Да, или совместимой с GNU GPL лицензией.

Однако обратите внимание, что вопрос мой был адресован персонально товарищу hlamotron’у — о том, что у него за представления сложились.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Блин. Посыпаю голову пеплом. Я думал у него проприетарщина. Не понимаю, к чему у него эти вопросы про статическую линковку возникли.

Тогда да, тупо выложил бинарь и всё.

Так qBittorent делает (в сборке под MS Windows).

EXL ★★★★★
()
Ответ на: комментарий от EXL

Не понимаю, к чему у него эти вопросы про статическую линковку возникли.

В случае, если библиотека под GPL (например GMP до 6 версии), я не могу выпустить программу, которая использует (линкует) эту библиотеку под BSD. Так как нарушается

LGPL отличается от GPL только разрешением на динамическую линковку. Поэтому, если бы речь шла о LGPL2, то формально статически линковать с не GPL было бы нельзя. В LGPL3 появился пункт 4.d.0 «Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source». При этом разрешена статическая линковка. Но что именно надо предоставить, я не совсем понял.

monk ★★★★★
()
Ответ на: комментарий от monk

Не понимаю, к чему у него эти вопросы про статическую линковку возникли.

Да не, вопросы-то разумные; просто на них них сама лицензия предельно понятно отвечает. Но если ее не читать (например из-за опасения не понять английский), то они могут возникнуть.

Zmicier ★★★★★
()
Ответ на: комментарий от monk

В случае, если библиотека под GPL (например GMP до 6 версии), я не могу выпустить программу, которая использует (линкует) эту библиотеку под BSD. Так как нарушается

Я не понял, что вы написали. По-моему вы какие-то слова пропустили.

LGPL отличается от GPL только разрешением на динамическую линковку.

Ни в коем случае.

Поэтому, если бы речь шла о LGPL2, то формально статически линковать с не GPL было бы нельзя

Вы что-то путаете. Статическую компоновку с несвободными программами GNU Lesser GPL явно разрешала всегда.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Статическую компоновку с несвободными программами GNU Lesser GPL явно разрешала всегда.

С дополнительными оговорками (наконец-то нашёл по-русски): https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic

вы должны предоставить свое приложение в формате объектного кода 
(не обязательно исходного текста), с тем чтобы у пользователя 
была возможность изменить библиотеку и перекомпоновать приложение.

Правильное разрешение на статическую линковку, например, http://zeromq.org/area:licensing

Я не понял, что вы написали.

Динамически линковать BSD программу к библиотеке под GPL запрещено. Так как GPL в этом случае требует, чтобы весь продукт (библиотека + программа) распространялся под GPL.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от monk

С дополнительными оговорками

Не «с оговорками», а с условиями, в полном мере отвечающими задаче.

Правильное разрешение на статическую линковку, например, http://zeromq.org/area:licensing

Что значит «правильное»?

Динамически линковать BSD программу к библиотеке под GPL запрещено.

Что такое «BSD программу» (BSD — это такая операционная система, если что). Вы имеете в виду программу под изначальной (четырехпунктной) лицензий BSD? Ну это, да, конечно. Под трех- и двухпунктной — сколько угодно.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Под трех- и двухпунктной — сколько угодно.

Только если GPL библиотека системная.

Предположим, написал я программу под BSD, которая использует библиотеку под GPL. При распространении программы с точки зрения лицензии GPL вся программа распространяется по условиям лицензии GPL. в противном случае программа не может быть слинкована (являться производной работой) с GPL библиотекой.

В общем, вот пример: http://sg2.php.net/manual/en/faq.databases.php#faq.databases.mysql.php5

monk ★★★★★
()
Ответ на: комментарий от monk

Предположим, написал я программу под BSD, которая использует библиотеку под GPL. При распространении программы с точки зрения лицензии GPL вся программа распространяется по условиям лицензии GPL

Что не противоречит условиям BSD 3-clause license, а значит не нарушает никаких лицензий. То есть: При распространении бинарника тебе всего лишь надо будет выполнять условия соответствующей GPL. По факту это значит что ты должен по запросу предоставлять людям исходники программы лицензированной под BSD лицензией, которые ты и так предоставляешь.

https://www.gnu.org/licenses/gpl-faq.ru.html#WhatIsCompatible

kim-roader ★★
()

Какую-то GPL-заразу это может наложить на остальной код проекта?

Нельзя использовать на устройстве, на которое пользователь не сможет залить пересобранные бинарники библиотеки, в остальном все тоже, что и с LGPLv2

annulen ★★★★★
()
Ответ на: комментарий от monk

В общем, вот пример

1. В примере недвусмысленно утверждается, что все это относится исключительно к распространению бинарников gpl-библиотеки в составе сборок PHP, а вовсе не к самому факту линковки

2. Педивикия утверждает, что лицензия пыха (которая отличается от BSD/Apache, о чем умалчивается в примере) несовместима с GPL

https://en.wikipedia.org/wiki/PHP_License

annulen ★★★★★
()
Ответ на: комментарий от kim-roader

При распространении бинарника тебе всего лишь надо будет выполнять условия соответствующей GPL.

Верно. Вопрос такой: с бинарником я предоставляю исходники своей программы (в файлах указана BSD 2-clause лицензия) и исходники GPL библиотеки. Имеет ли право пользователь программы из полученных таким образом исходников сделать новую версию программы, отвязанную от GPL, и распространять далее под BSDL?

Исходя из текста GPL, я предполагаю, что нет (пользователь получил программу под GPL с исходниками => исходники получены на правах лицензии GPL). И поэтому без веских аргументов (использование GPLed кода, например) стараюсь свои программы выпускать под BSDL.

monk ★★★★★
()
Ответ на: комментарий от monk

Под трех- и двухпунктной — сколько угодно.

Только если GPL библиотека системная.

Неверно. Пойдите еще что-нибудь почитайте. Только на русском боюсь качественной информации не очень много.

В общем, вот пример: http://sg2.php.net/manual/en/faq.databases.php#faq.databases.mysql.php5

Пример чего?

Zmicier ★★★★★
()
Ответ на: комментарий от annulen

Нельзя использовать на устройстве, на которое пользователь не сможет залить пересобранные бинарники библиотеки

Нельзя распространять Qt в составе устройства... На использование GNU Lesser GPL никаких ограничений не накладывает.

Zmicier ★★★★★
()
Ответ на: комментарий от kim-roader

При распространении бинарника тебе всего лишь надо будет выполнять условия соответствующей GPL.

И [23]-BSDL тоже. От их требований вас никто не освобождал.

Zmicier ★★★★★
()
Ответ на: комментарий от monk

Вопрос такой: с бинарником я предоставляю исходники своей программы (в файлах указана BSD 2-clause лицензия) и исходники GPL библиотеки. Имеет ли право пользователь программы из полученных таким образом исходников сделать новую версию программы, отвязанную от GPL, и распространять далее под BSDL?

Так кого вы спрашиваете? Это же вы передали. Что вы получателю разрешили, то он и может делать.

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

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Нельзя распространять Qt в составе устройства

Ясен пень, что использовать его в этом случае не получится, если его не распространить с устройством

annulen ★★★★★
()
Ответ на: комментарий от monk

Имеет ли право пользователь программы из полученных таким образом исходников сделать новую версию программы, отвязанную от GPL, и распространять далее под BSDL?

Конечно да. Ты передал исходники под BSDL. Хотя требование самого факта передачи было под GPL.

kim-roader ★★
()
Ответ на: комментарий от annulen

Нельзя распространять Qt в составе устройства

Ясен пень, что использовать его в этом случае не получится, если его не распространить с устройством

Почему не получится? Вы его поставили, используете себе на здоровье, но не распространяете. Что здесь не так?

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Вы его поставили, используете себе на здоровье, но не распространяете. Что здесь не так?

Нельзя использовать на устройстве, на которое пользователь не сможет залить пересобранные бинарники библиотеки

Пожалуй да, есть один вариант тивоизации, совместимый с LGPLv3: устройство не распространяется с Qt, но пользователь может скачать бинарники и установить их, а прошивка сверяет их хэши и разрешает залить только неодифицированную версию. Но практического значения этот случай не имеет

annulen ★★★★★
()
Ответ на: комментарий от kim-roader

Конечно да. Ты передал исходники под BSDL. Хотя требование самого факта передачи было под GPL.

Странно. Именно эта причина не дала разработчикам SBCL и Racket (https://docs.racket-lang.org/readline/index.html) использовать GNU Readline для текстового интерфейса по-умолчанию. При этом SBCL имеет BSDL и Public Domain (http://www.sbcl.org/history.html), а Racket — LGPL (https://docs.racket-lang.org/license/index.html).

monk ★★★★★
()
Ответ на: комментарий от monk

Вот

GNU's @|readline| library is covered by the GPL, and that applies to
code that links with it.  Racket is licensed with the LGPL, so the
@|readline| code is not used by default; you should explicitly enable
it if you want to.  Also, be aware that if you write code that uses
this library, it will make your code link to the @|readline| library
when invoked, with the usual GPL implications.

(c) https://searchcode.com/codesearch/raw/6938696/

monk ★★★★★
()
Ответ на: комментарий от monk

Странно.

Чего странного?

Именно эта причина не дала разработчикам SBCL и Racket использовать GNU Readline для текстового интерфейса по-умолчанию

Что значит «не дала»? Ну не захотели, и не захотели.

Вы еще просто мало вчитывались в политики самых разных проектов по разработке свободных программ, если думаете, что надо приводить конкретные примеры, когда ими отвергаются те или иные свободные лицензии; пуристов, что пытаются быть святее Папы Римского, на этом свете — чертова куча.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Что?

«GNU's @|readline| library is covered by the GPL, and that applies to code that links with it.»

А вот мнение товарища Столлмана:

If you don't change to using the GPL, then you'll have to stop using readline. Readline's terms say that the whole program has to be under the GPL, and just having the user do the link doesn't change this. If the program is designed to run with readline as a part, then readline is a part of it.

(c) http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/doc/Why-CLISP-is-under-GPL

monk ★★★★★
()

А может стоит слинковать динамически с qt и просто распростронять программу вместе с библиотеками qt (при этом библиотеки не обязательно кидать к системным, они могут быть в каталоге с программой)?

rumgot ★★★★★
()
Ответ на: комментарий от monk

Я вас не понимаю, чего вы хотите? Сперва вы излагали какие-то вызывающе ложные измышления про несовместимость [23]-BSDL с GNU GPL, теперь начали цитировать прописные истины.

Вы осваиваете основы свободных лицензий и хотите, чтобы ЛОРовцы покомментировали то, что вы поняли, в формате верно / неверно? Хорошо, пожалуйста, продолжайте, я не обещаю, но постараюсь.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

вызывающе ложные измышления про несовместимость [23]-BSDL с GNU GPL

Я не говорил, что они несовместимы. Я говорил, что использование в [23]-BSDL программе GPL библиотеки приводит к тому, что пользователи этой программы получают код программы на условиях GPL. То есть к фактическому ужесточению лицензии (GPL-заразе).

monk ★★★★★
()
Ответ на: комментарий от monk

вызывающе ложные измышления про несовместимость [23]-BSDL с GNU GPL

Я не говорил, что они несовместимы.

Товарищ, вы что, у нас все ходы записаны: «Динамически линковать BSD программу к библиотеке под GPL запрещено». Если бы это было так, это бы звалось именно «несовместимостью лицензий», в случае с 4-BSDL оно так и есть.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 2)
Ответ на: комментарий от Zmicier

Именно так. Если её слинковать, то она перестаёт быть BSD программой.

Переформулирую подробнее: распространять на условиях BSDL программу, динамически слинкованную с библиотекой под GPL, запрещено.

monk ★★★★★
()
Ответ на: комментарий от Zmicier

это бы звалось именно «несовместимостью лицензий»

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

monk ★★★★★
()
Ответ на: комментарий от monk

Именно так. Если её слинковать, то она перестаёт быть BSD программой.

Не «именно так», а это совершенно разные вещи. Но хорошо, я понял, вы оговорились. (Хотя если надо, то у вас там еще вызывающе ложные утверждения есть.)

распространять на условиях BSDL программу, динамически слинкованную с библиотекой под GPL, запрещено

Ежу понятно. Распространять на условиях любой лицензии А программу, любым образом скомпонованную с библиотекой под любой лицензий Б, запрещено. Исключения: ① если А ⊃ Б (пример: А = 3-BSDL, Б = 2-BSDL); ② если Б дает на это прямое разрешения (пример: А = GNU GPLv3+, Б = GNU GPLv2+).

Zmicier ★★★★★
()
Ответ на: комментарий от monk

Именно эта причина

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

То есть клиентам интересно, чтобы бинарник сразу, без усилий с их стороны, мог быть использован на условиях пермиссивных лицензий.

kim-roader ★★
()
Ответ на: комментарий от Zmicier

то у вас там еще вызывающе ложные утверждения есть.

Про LGPL2? Согласен, на самом деле аналогично LGPL3. Ошибся.

Распространять на условиях любой лицензии А программу, любым образом скомпонованную с библиотекой под любой лицензий Б, запрещено. Исключения: ① если А ⊃ Б (пример: А = 3-BSDL, Б = 2-BSDL); ② если Б дает на это прямое разрешения (пример: А = GNU GPLv3+, Б = GNU GPLv2+).

Вот! А теперь вернёмся к вопросу в топике. Можно ли распространять на условиях BSDL программу, если эта программа статически скомпилирована с библиотекой под LGPL3?

monk ★★★★★
()
Ответ на: комментарий от monk

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

kim-roader ★★
()
Ответ на: комментарий от monk

Можно ли распространять на условиях BSDL программу, если эта программа статически скомпилирована с библиотекой под LGPL3?

Исходники не слинкованы. Исходники можно. Бинарники — только при выполнении условий LGPL — предоставив доступ к объектникам, либо к исходникам. При этом LGPL не налагает ограничений на лицензию исходников. А GPL требует только отсутствия дополнительных ограничений относительно GPL, но не запрещает выдавать дополнительные разрешения (то есть можно под любой совместимой лицензией)

kim-roader ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.