LINUX.ORG.RU

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

 


1

3

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

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

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

Исходники не слинкованы. Исходники можно.

Интересно. А если программа под BSDL при компиляции использует библиотеку GPL (тот же readline), то всё равно её можно распространять в исходниках под BSDL?

Или, как вариант, программа использует реализацию списков klist из ядра Linux (лицензия GPL2) и Qt5 (лицензия LGPL3), а сама под 2-BSDL. Я могу распространять исходники такой программы и это законно?

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

Или, как вариант, программа использует реализацию списков klist из ядра Linux (лицензия GPL2) и Qt5 (лицензия LGPL3), а сама под 2-BSDL. Я могу распространять исходники такой программы и это законно?

А вот это кажется уже нарушение. Код у тебя получается смешанным из GPLv2 и 2-BSDL. То есть результирующая программа (а не отдельные куски) лицензированны под GPLv2. При добавлении Qt5 у тебя получается комбинированная работа под GPLv2+LGPLv3. GPLv2-only не совместим с LGPLv3, а в лицензии klist её автор прямо не прописывал такое разрешение.

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

А если программа под BSDL при компиляции использует библиотеку GPL (тот же readline), то всё равно её можно распространять в исходниках под BSDL?

Конечно. Ты же автор. Распространяй текст как хочешь. Вот например от юристов https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/ смотри в Is The Analysis Different With Source-Only Distribution?

When distributing source code and no binaries, requirements in those sections of GPLv2 and CDDLv1 that cover modification and/or binary (or “Executable”, as CDDLv1 calls it) distribution do not activate.

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

При добавлении Qt5 у тебя получается комбинированная работа под GPLv2+LGPLv3. GPLv2-only не совместим с LGPLv3

Ты же сам пишешь: LGPL не налагает ограничений на лицензию исходников.

Код у тебя получается смешанным из GPLv2 и 2-BSDL.

Распространяю я, например, вот такой файл:

/*
Copyright (c) 2016 Monk All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#include <linux/klist.h>
#include <iostream>
#include <QApplication>

int main
{
   cout << "Hello";
}

Это уже код под GPLv2 и 2-BSDL? То есть, фактически, под GPLv2?

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

Конечно. Ты же автор. Распространяй текст как хочешь.

Ещё раз процитирую Столлмана:

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.

То есть, программа (исходник), написанная для работы с GPL-библиотекой, по его мнению обязана быть GPL. И GPL накладывает ограничения на распространение.

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

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

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

Нет, конечно. Равно как нельзя распространять под BSDL программу, скомпонованную с библиотекой под какой-нибудь из лицензий MIT (Expat или X11), да или вообще под чем угодно, кроме BSDL же, ну или WTFPL или форм передачи в общественное достояние.

Авторское лево здесь совершенно ни при чем.

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

Интересно. А если программа под BSDL при компиляции использует библиотеку [под GNU] GPL (тот же readline), то всё равно её можно распространять в исходниках под BSDL?

Напоминаю, что какой-то единой BSDL не существует, 2- и 3-BSDL с GNU GPL совместимы, а 4-BSDL — нет. Под совместимыми лицензиями без малейших сомнений можно. Что вас заставляет усомниться?

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

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

комбинированная работа под GPLv2+LGPLv3. GPLv2-only не совместим с LGPLv3

Да, все верно. И 2-BSDL здесь совершенно ни при чем.

При добавлении Qt5 у тебя получается...

Да нет, Qt5 все еще доступна под GNU GPLv2+, если мне не изменяет память.

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

При добавлении Qt5 у тебя получается комбинированная работа под GPLv2+LGPLv3. GPLv2-only не совместим с LGPLv3

Ты же сам пишешь: LGPL не налагает ограничений на лицензию исходников.

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

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

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

В каком смысле «открывать в программе»? Вы хотели сказать «не освобождать свою программу»? Условиями GNU Lesser GPL не запрещено, конечно, но головоломки-то будет очень существенно больше.

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

То есть, программа (исходник), написанная для работы с GPL-библиотекой, по его мнению обязана быть GPL.

Или под совместимой с GNU GPL лицензией.

по его мнению

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

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

Ну да, я имел ввиду, что не нужно открывать исходный код. Также не нужно объектные файлы распространять. А в чем именно будет больше головоломки?

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

Ибо писать программу, которая нераспространяема в сборе, — это очень и очень странный поступок.

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

Причём, можно случайно получить такой результат. Например, беру https://github.com/eduardok/libsmbclient-php , смотрю лицензию — https://github.com/eduardok/libsmbclient-php#license — BSD 2-clause. Начинаю использовать совместно с klist или videolan и распространяю, как следствие, под GPL2. Упс, для компиляции libsmbclient-php требуется libsmbclient, который под GPL3.

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

Ибо писать программу, которая нераспространяема в сборе, — это очень и очень странный поступок.

Вот живой пример:

https://www.archlinux.org/packages/extra/i686/vlc/

Имеет зависимость от smbclient (GPL3) и libmpeg2 (GPL2). В сборе распространять определённо нельзя.

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

Ну да, я имел ввиду, что не нужно открывать исходный код. Также не нужно объектные файлы распространять.

Как это? Почему это?

Даже если вы не читали лицензий ГНУ, здравый-то смысл должен подсказать, что если их задача — способствовать развитию свободных программ, то никак такого быть не должно, чтоб проще было не освобождать программу, чем освободить, не?

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

Имеет зависимость от smbclient (GPL3) и libmpeg2 (GPL2).

libmpeg2 под GPL2+

Плюс что-то мне подсказывает (хотя я не проверял), что smbclient — это не библиотека.

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

LGPL не налагает ограничений на лицензию исходников.

А GPL накладывает. Что не так то? GPLv2-only наложила достаточно ограничений, чтобы запретить линковку с LGPLv3, если автор GPLv2 кода не даст явное разрешение на такую линковку.

Это уже код под GPLv2 и 2-BSDL? То есть, фактически, под GPLv2?

Тут момент немного спорный (смотри суд гугла с ораклом), но вообще да.

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

Исходник — это просто текст. Я тебе уже давал линку на анализ SF Conservancy, где они рассказывали, что правовые последствия относительно combined work наступают в момент линковки.

https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/

Pure distribution of source with no binaries is undeniably different. When distributing source code and no binaries, requirements in those sections of GPLv2 [...] that cover modification and/or binary [...] distribution do not activate.

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

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

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

Да нет, Qt5 все еще доступна под GNU GPLv2+, если мне не изменяет память.

Вот это не отслеживал. Спасибо.

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

заявлять, что у тебя дома есть своя библиотека с теми же интерфейсами, что libreadline, а значит все вопросы к пользователям, а не к тебе.

Да нет же. Автор пишет:

I built a libnoreadline.a that can be linked together with lisp.a, replacing libreadline.a .

I will reorganize the distribution into 2 independent parts:
* clisp.lzh containing lisp.a and libnoreadline.a,
* readline.tar.Z containing libreadline.a and its source.

The first one is enough to build a CLISP executable. It contains no GNU parts.

Столлман:

True. If that were the whole situation--if readline did not exist-- then I would have no grounds to object.

However, the sum total of what you are doing is still tantamount to distributing one program which contains readline but is not under the GPL.

и далее

The reason it is still one program is that the one part clearly shows the intention for incorporation of the other part.

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

Только вот тут речь именно про «сдизайнено специально под ридлайн». Впрочем ты сам можешь убедиться, что под ту же ракету есть модуль который включает работу с ридлайном https://docs.racket-lang.org/readline/index.html

Впрочем если ты не уверен, то лучше напиши вопрос в <licensing@fsf.org>

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

Только вот тут речь именно про «сдизайнено специально под ридлайн».

Я просто показываю, что понятие «производная работа» в GPL неоправданно расширяется.

В Debian (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=377109) сначала требовали лицензировать smake под GPL, так как собранный им cdrtools имеет лицензию GPL, а когда автор сменил лицензию на CDDL, то оставили версию с багами, зато GPL (http://cdrtools.sourceforge.net/private/linux-dist.html#problems)

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

Потому что lgpl.

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

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

Я просто показываю, что понятие «производная работа» в GPL неоправданно расширяется.

??? В первой и второй GNU GPL понятие «производной работы» не определяется, а в актуальной третьей — даже не упоминается.

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

а когда автор сменил лицензию на CDDL

[Речь об известной истории с cdrtools.]

Да, это хрестоматийный пример, как подложить всем свинью, сделав свою программу не просто несвободной, а вообще нераспространяемой. Йерг Шиллинг хотел, чтоб его «творение» прекратили распространять в поставках ГНУ/Линукса, и без проблем своего добился.

Я не понимаю, вы желаете ему подражать?

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

Lgpl позволяет использовать использовать библиотеки под этой лицензией в комерческих проектах без модификации этой библиотеки. Везде так пишут. В чем ошибка!

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

Йерг Шиллинг хотел, чтоб его «творение» прекратили распространять в поставках ГНУ/Линукса, и без проблем своего добился.

В SuSE, Gentoo, Ark, Slackware без проблем распространяют. Уперся рогом только Debian.

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

а в актуальной третьей — даже не упоминается.

Беру текст с https://www.gnu.org/licenses/gpl.txt

5. Conveying Modified Source Versions.

You may convey [b]a work based on the Program[/b], or the modifications to produce it from the Program

https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation

 If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program.
monk ★★★★★
()
Ответ на: комментарий от monk

run linked together in a shared address space, that almost surely means combining them into one program

Кстати, такая формулировка позволяет наложить ограничения MS EULA на весь софт, который можно запустить под Windows. Так как kernel.dll «linked together in a shared address space» с любой запускаемой программой. Cygwin, например. :-)

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

Lgpl позволяет использовать использовать библиотеки под этой лицензией в комерческих проектах

Любая свободная лицензия позволяет использовать библиотеки под нею в коммерческих программах по определению.

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

без модификации этой библиотеки.

Почему именно без модификаций?

Везде так пишут. В чем ошибка!

Не знаю, в чем именно у вас ошибка — я же не могу залезть к вам в голову, но причина ее, полагаю, в том, что вы читаете какую-то муру типа tldrlegal.com, вместо первоисточников.

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

Положим, что вы путаете коммерческие программы с несвободными.

Ну это возможно.

При чем здесь ваш противоречащий здравому смыслу тезис о том, что к несвободным программам она пред’являет меньше требований, чем ко свободным?


Что то приснил :-)

Не знаю, в чем именно у вас ошибка — я же не могу залезть к вам в голову, но причина ее, полагаю, в том, что вы читаете какую-то муру типа tldrlegal.com, вместо первоисточников.

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

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

Что то приснил :-)

Чавой?

Я тебе привел утверждение, отпиши, в чем ошибка.

Какое?

«[GNU] LGPL позволяет использовать использовать библиотеки под этой лицензией в комерческих проектах без модификации этой библиотеки» — утверждение абсолютно верное. Если взять не то, что вы написали, а то, что имели в виду: «GNU LGPL позволяет использовать использовать библиотеки под этой лицензией в несвободных проектах без модификации этой библиотеки», то это тоже абсолютно верно. Если отбросить про модификацию: «GNU LGPL позволяет использовать использовать библиотеки под этой лицензией в несвободных проектах» — тоже никакой ошибки не будет.

А не очень ясно высказанное вами утверждение о том, что GNU LGPL-де пред’являет меньше требований к несвободным программам, чем ко свободным, абсолютно ошибочно и абсурдно.

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

То, что я написал, то и имел ввиду. Не вооброжай себя имеющим читать мысли. И далее не выдумывай, последнего я не говорил. Я утверждал, что динамически связать свою прогу с qt проще чем статически, т.к. не нужно еще заботиться об объектных файлах и вопрос лицензирования в случае динамисеского связывания освещен в русскоязычных ресурсах шире. А не о то, где требованияя лицензии лояльнее.

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

То, что я написал, то и имел ввиду.

В таком случае вы написали банальность. Поскольку, повторяю, любая свободная лицензия «позволяет использоваться библиотеку под нею в коммерческих проектах».

И далее не выдумывай, последнего я не говорил.

Вы вероятно про: «не очень ясно высказанное вами утверждение о том, что GNU LGPL-де пред’являет меньше требований к несвободным программам, чем ко свободным»?

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

т.к. не нужно еще заботиться об объектных файлах

Какие еще, к черту, об’ектные файлы? У ОПа свободная программа!

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

Я про случай, когда не хочешь открывать исходники. А при статической линковке есть нюансы.

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