LINUX.ORG.RU

GNU GPL, только исходники, несовместимость лицензий


0

1

Рассмотим ситуацию:

1. я распространаю свой проект под GPLv2 или под GPLv3, только в виде исходников, не компилируя его и не линкуя ни с чем, в проекте находится лишь конфиг для build-tool (apache maven) со списком необходимых зависимостей библиотек

2. юзер качает мои сорцы, запускает build-tool с моим конфигом и тот качает все необходимые зависимости из общедоступного репозитория(maven repo)

3. тот-же build-tool линкует либы для запуска тестов и собственно для самого приложения

4. при этом либы открытые, но несовместимые с GPLv2 и GPLv3 (JUnit например с CPLv1.0 несовместим с GPL)

Вопрос: имеет ли значение в данном случае несовместимость лицензий? С одной стороны мой код использует несовместимые либы, с другой я ничего не поставляю кроме моих сорцов и конфига, и выкачивание либов и их линковка происходит на стороне юзера, который только использует все это, а не распространяет дальше. Т.е. правильно ли утверждение что GPL в данном случае распространяется только на сорцы которые я поставляю, а что происходит по запуску сторонних build-tools уже проекта никак не касается. Тем более в самой лицензии черным по белому написано, что никаких гарантий не даю, используете на свой страх и риск. При этом лицензия вроде никак не нарушается еще и потому что юзер может менять, распространять дальше мои сорцы, т.е. свободное ПО остается свободным, он лишь не может скомпиленный проект дальше распространять из-за несовместимости лицензий библиотек.


GPL2 разрешает линковку.

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

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

Так в чем нарушение-то, я не распространаю ни байта кода из несовместимых библиотек, их скачаиванием и сборкой занимается сборщик на стороне юзера, причем в момент сборки у того же юзера. Я распространаю лишь свой GPLv3 код в исходном виде. Также никто мне не помешает его распространать в виде объектников, если они не содержат код из библиотек. То что моя программа не работает без каких-либо несовместимых библиотек ничего не значит. Где в GPLv3 говорится что я обязан предоставить рабочую программу? Наоборот есть немало текста о том что никакой ответственности за работоспособность я не несу.

Наглядный пример: дистр Debian GNU/Linux, содержит ядро под GPLv2, факт. Взяли дистр, захотели проприетарщины: ATI/Nvidia. Установили, получили НЕ GPLv2 дистр, содержащий проприетарные дрова. Какие претензии к Линусу, ядру, Debian GNU/Linux? Никаких, сами установили, сами получили НЕ GPLv2 дистр. Единственное что мы не можем, так это распространять далее под GPLv2 данное ядро вместе с проприетарщиной, т.к. нарушается GPLv2 лицензия. Использовать данную сборку с НЕ GPLv2 ядром нам никто не запрещает.

Если кто надумает оспорить, просьба сразу приводить текст из GPL, где что нарушается.

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

Болтовню в сторону, по делу пожалуйста.

Ты из предыдущего треда никаких выводов не сделал? Будешь создавать по новому, пока тебе все не разжуют?

P.S. Может тебя в сторону, с такими воросами из FAQ?

power ()

По-моему, всё нормально. Действия твоего клиента на его собственной машине во-первых, имеют гораздо меньше ограничений (большинство открытых лицензий дают полную свободу, и даже проприетарщина многое позволяет), и во-вторых тебя не касаются никак.

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

>Ты из предыдущего треда никаких выводов не сделал? Будешь создавать по новому, пока тебе все не разжуют?

Вопрос был другой, поэтому тред новый.

P.S. Может тебя в сторону, с такими воросами из FAQ?

Что-то не наблюдаю в FAQ ответа на вопрос.

savgur ()
Ответ на: комментарий от legolegs

>во-вторых тебя не касаются никак

Вот и я про тоже, в GPL ни слова о том что я что-либо обязан после получения моего GPL софта, в плане запуска в том числе. Софт от меня до юзера дошел без нарущений GPL, дальнейшие действия юзера меня никак не касаются.

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

GPLv3

The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work.

or generally available free programs which are used unmodified in performing those activities but which are not part of the work.

Если для запуска приложения используется общедоступная свободная либа в неизмененном виде, она не входит в «Corresponding Source». Т.о. дистр не обязан содержать данные либы в каком-либо виде.

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

>but which are not part of the work.

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

savgur ()

Так получается, что твое ПО не может работать без либы с несовместимой лицензией? Почему же оно не является производной работой?

Взяли дистр, захотели проприетарщины: ATI/Nvidia. Установили, получили НЕ GPLv2 дистр, содержащий проприетарные дрова.

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

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

>Так получается, что твое ПО не может работать без либы с несовместимой лицензией? Почему же оно не является производной работой?

Цели разные, либа имеет один сервис, моя прога совсем другой, это не производная.

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

Повторюсь: GPL не требует от тебя работоспособности, рабочее или нет GPL не колышит, наоборот снимает всю ответсвенность.

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

>Повторюсь: GPL не требует от тебя работоспособности, рабочее или нет GPL не колышит

Но ее колышет, что является производной работой от чего. Если твоя прога использует библиотеку под GPL, почему это не производная работа? Вне зависимости от того, что эта библиотека делает, если только она не подпадает под определение system library?

По-моему, был какой-то похожий на этот случай скандал с использованием библиотеки readline.

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

наоборот, програ GPL, либа CPL, но это не производная.

savgur ()
Ответ на: комментарий от proud_anon

>был какой-то похожий на этот случай скандал с использованием библиотеки readline.

С какой-нибудь ерундой в бинарном виде? Или там были _только_ исходники?

Мне кто-то/что-то может помешать «опубликовать» _любой_ мною написанный _код_ под GPLvX?

ДАТЫЧО?

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

Я тут все обмозговал по поводу GPL как следует, и пришел к следующему выводу: до тех пор пока я НЕ РАСПРОСТРАНЯЮ вместе со своим дистрибутивом какие либо сторонние либы или их части в объектном или исходном виде, никакие претензии и нарушения GPL быть не могут, т.к. я лишь распространяю СВОЙ код, то что он требует те или иные либы для работы приложения не имеет значения, т.к. я не обязан предоставлять рабочий вариант. Кроме того, ЛЮБАЯ ЛИБА которая не входит в мой дистр в любом виде является СИСТЕМНОЙ ЛИБОЙ, данный термин отдельно описан в GPLv3, т.е. пользователь сам заботится об установке данных либ, GPL опять таки это не касается. Явный тому пример - стандартная либа Java, ни коим образом моего приложения не касается, юзер сам должен это обеспечить, а не мое приложение. Любую либу можно сослать туда-же: не включать в проект, и все - это системная либа, никакой ответсвенности и совместимости с лицензиями. Кроме того, если я могу спокойно распространять помимо моего исходного кода и объектники, если они не содержат какого-либо стороннего кода. То что для его работоспособности необходима связка с какими-либо библиотеками не имеет значения. Я не обязан предоставлять эти либы.

Все вышенаписаное основанно на неоднократном прочтении GPLv3, если есть возражения - ссылки на GPLv3 текст в студию.

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

То что все либы будут выкаченны с помошью build-tool и слинкованы на стороне юзера, тем более не имеет никакого отношения. GPL не ограничивает ИСПОЛЬЗОВАНИЕ, только распространение.

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

http://www.gnu.org/licenses/lgpl-java.html

When you distribute the library with your application (or on its own), you need to include source code for the library. But if your application instead requires users to obtain the library on their own, you don't need to provide source code for the library.

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

savgur ()
Ответ на: комментарий от proud_anon

>Если твоя прога использует библиотеку под GPL, почему это не производная работа?

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

savgur ()

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

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

anonymous ()

> Вопрос: имеет ли значение в данном случае несовместимость лицензий?

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

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

>GPL не ограничивает ИСПОЛЬЗОВАНИЕ, только распространение

аминь :)

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

>Почему же оно не является производной работой?

в таком случае ВЕСЬ GPL софт под вендой не законен. да.

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

Ну, определения даются такие:

A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

Так что если логика приложения основана на определенной библиотеке, такая библиотека вряд ли сюда попадет.

С другой стороны, если автор сам написал весь GPL-код, он может дать просто exception, если только лицензия библиотеки не против.

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

>Т.е. ты создаешь продукт, единственная возможность использования которого возможно после нарушения лицензии.

Где вы в GPL вычитали про использование? GPL контроллирует только распространение (см. п. 4-6 GPLv3), использовать можно как душе угодно.

Таким образом нарушение GPLv3 из-за неправильного использования невозможно в принципе, как не крути. Пока программа чиста при распространении, GPL не нарушается, а для дальнейшего распространения никто не мешает сделать clean. Тем более в случае Java ничего делать ненадо, там все в отдельных jar архивах. Пока в дистр не входят несовместимые джары, он GPL корректен. А вклюсать их не имеет смысла, ибо места лишнего займут неслабо, да и Maven прекрасно качнет все с репов юзеру на тачку.

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

Прочитал пост несколько раз и так и не врубился. Ваша программа может работать без проприетарной библиотеки? Если нет, то, даже если это не нарушает условий лицензии (в чем я не уверен), делать так, имхо, не стоит.

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