LINUX.ORG.RU

А нарушает ли GPL-лиценизию схема запуска GPL-программы, в теле которой нет проприетарной части, но она вынесена в нашу LD_PRELOAD-либу?

 , , , ,


0

1

Буги-вуги, ЛОР!

Допустим, мы разрабатываем ПО на основе GPL-based СПО, но хотим его сделать проприетарным, при этом не нарушая лицензию.
Можно ли сделать так: вносим изменения в GPL-программу для работы с пустыми (или нерабочими/некорректными) функциями заглушками, а потом настоящие функции пишем отдельной библиотекой, которая должна через LD_PRELOAD подгружаться и замещать некорректные функции.

В результате мы смогли и рыбку съесть и на скорой помощи покататься, т.к. GPL ПО собирается, запускается, а про корректность работы никто ничего не говорил в лицензии. А наша LD_PRELOAD-либа продаётся за милльён шеккелей и не линкуется с GPL ПО.

Или я что-то упустил?

☆☆☆

Последнее исправление: ktulhu666 (всего исправлений: 3)

ТВОЯ бинарная программа не включает в себя ГПЛ код - ну и не парься. Можешь забить на Штольмана.

Или я что-то упустил?

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

anonymous
()

Так это прямо нарушает GPL, но не LGPL, потому что ты говоришь о компоновке (linking).
https://www.gnu.org/licenses/gpl-faq.html#LinkingWithGPL

У вас есть программа под GPL, которую мне хотелось бы скомпоновать с моими программами, чтобы получить несвободную программу. Означает ли факт компоновки с вашей программой, что от меня требуется выпускать свою программу под GPL? (#LinkingWithGPL)
Не совсем. Это значит, что вы должны выпускать свою программу на условиях лицензии, совместимой с GPL (точнее, совместимой с одной из версий GPL, принятой для всех остальных исходных текстов в комбинации, которую вы компонуете). Тогда сама комбинация доступна под этими версиями GPL.

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

Так это прямо нарушает GPL, но не LGPL, потому что ты говоришь о компоновке (linking).

Обосуйте. На этапе компиляции компоновки не происходит вообще никаким боком. LD_PRELOAD-либо тоже формально никак не связывается в программой до момента загрузки в память. Линуксовое ядро же запрещает загружать закрытые модули в память, равно как и браузеры.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от yurikoles

Линуксовое ядро же запрещает загружать закрытые модули в память, равно как и браузеры.

Линуксовое ядро же НЕ запрещает загружать закрытые модули в память, равно как и браузеры.

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

то есть так можно Qt, например, закрыть для коммерческого использования, не платя троллям?

Кстати, весьма интересная идея, анон. Можно, как минимум, гуй сделать свободным, а реальные алгоритмы вынести в демон, с которым через UNIX-сокет будешь общаться. Тогда точно можно. А вот про вариант с LD_PRELOAD - хз, поэтому на ЛОР и написал.

ktulhu666 ☆☆☆
() автор топика

Если обе программы написаны одним и тем же индивидом, компанией, группой лиц, то это прокатит.

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

Так или иначе, ты нашел способ подмены адресов функций, когда объектный код исходной программы также «находится под юрисдикцией» GPL.

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

Я выше приводил пример с закрытыми модулями, которые можно в ядро подгружать. Я не совсем понимаю, как образом подгрузка либы нарушает GPL. То, что я использую адреса функций - это просто API. Мало того, адреса и названия функций не являются объектами права, иначе все хедеры бы аналили ПО (кстати, не факт: вот в США Oracle смогли доказать, что API Java в виде набора команд/функций виртуальной машины являются их собственностью).

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Я уже задавал это вопрос.
Откуда пошел миф про linking exception в лицензии на ядро?
tl;dr Линус прописал исключение перед лицензией. Ещё до того как появился термин «GPL linking exception»

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

tl;dr Линус прописал исключение перед лицензией. Ещё до того как появился термин «GPL linking exception»

Я не понял, это относится к моему вопросу. Суть его приписки в том, что если сисколлы не модифировать, то всем пофиг, не?

Так что в плане моего вопроса то?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от yurikoles

Кстати, это нормально, что аноны разбушевались? Или это на мои треды слетаются? :D

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

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

Ядро особый случай. Равно как и libc. А вот все что выходит за рамки уже накладывается под GPL во все места. Неважно, что ты пытаешься изменить: исходный код или объектный.

Вот скажи, чем твой preload отличается от patchelf? По сути делается одно и тоже, но откуда ты узнал какие функции и какие действия они совершают? Ты узнал это потому что почитал код. Все что ты оттуда вынес это названия функций и их действий. На основе этого ты сделал производную работу, при этом забил болт на лицензию, где черным по белому сказано, что любая производная работа будь она в объектном виде или в виде исходников также должна быть выпущена под лицензией GPL.

Выше я сказал несколько неточно. Если код программы выпущен под GPL, то все участники должны быть согласны на то, что ты решил извращаться. В случае, если код использует третье-стороннюю либу, такую как Qt, то до тех пор пока ты не договоришься с Qt Inc., ты не вправе играться с ld preload. Даже, если ты меняешь адреса только своих функций. Т.к. либо весь код производной работы покрывается GPL, либо ты не согласился изначально с лицензией GPL, а значит де-факто ее нарушаешь. Нельзя сказать, что вот эти функции будут под GPL, а эти я делают под своей лицензией.

Мало того, адреса и названия функций не являются объектами права, иначе все хедеры бы аналили ПО

С хедарами в самом gcc/glibc свистопляска. Ребята писали код в 70-80х, тогда в шапку комменты никто не вставлял и даже имена свои не вписывали. Потом, спустя 40 лет, очухались и давай вспоминать кто, что и когда писал, особенно это касается BSD-шников, когда они решили отказаться от gcc.

Хидеры тоже покрываются GPL. Даже если их невозможно написать так, чтобы не было совпадений. Либо сам пишешь с нуля, либо копируешь из проекта под GPL и вся софтина становится GPL.

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

gh0stwizard ★★★★★
()

копай в сторону Bolgenos

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

Ты путаешь gpl и lgpl, но в РФ на это всем пофиг.

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

А нарушает ли GPL-лиценизию схема запуска GPL-программы, в теле которой нет проприетарной части, но она вынесена в нашу LD_PRELOAD-либу? (комментарий) а на вариант с сокетом ты согласен? кстати, если я буду юзать не сокет, а сообщения и общую память? тогда, по Вашим словам, получается, что я специально модифировал приложение и узнать, что оно и как делает, чтобы юзать общую память.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

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

Столлман это не одобряет. Однако, тебе сделать именно так никто не запрещает (в лицензии это никак не оговаривается). Но опять же, если серверная часть зависит от третьих либ, а ты не получил их согласия, то получится, что ты нарушил GPL. Просто следи всегда за исключительными правами (т.е. получай согласия всех авторов), тогда все будет ОК.

Еще желательно, чтобы твои закрытие поделия были скомпилены не gcc/glibc, иначе можно всетаки придраться, что ты нарушаешь GPL. Особенно это касается libpthread.

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

Т.е. в идеале на бзде сразу делать демона? Или на яве, например? Или с явой тоже проблемы?

Компиль с llvm/musl. Можно на яве, но почитай это на всякий:

http://www.computerworld.com/article/2469593/open-source-tools/it-s-not-apach...

http://www.techrepublic.com/blog/linux-and-open-source/apache-vs-oracle-a-new...

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

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

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

Не совсем ясно о чем вопрос. Есть исключительные права, они принадлежат автору. Эти права защищает гос-во, каждое по-своему. Законы гос-ва выше любых лицензий. Автор в праве делать со своим детищем все что угодно. И Столлман это неявно везде подтверждает, что лицензия находится ниже авторских прав.

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

В приложении, которое работает по принципу client <-> server, со слов Столлмана (ищите в FAQ) единственное требование (с его стороны, а не лицензии), чтобы приложение было функционально. Иначе получится, что ты насильно заставляешь людей покупать серверную часть, потому что клиентcкое ПО не работоспособно. Т.е. предоставь серверную часть под GPL или даже двойной лицензией. Пусть люди имеют возможность сделать форк лучше твоего закрытого аналога.

Опять же это только слова Столлмана. Иначе можно засудить кого-угодно, например, создателей закрытых ftp-серверов. Да, протокол открыт, а клиентское ПО выпущено под GPL. Значит и сервер должен быть под GPL. Бред же.

--

Если вопрос про бинари, которые сделаны из под выхлопа gcc/glibc, то лицензия неявно это тоже покрывает. Выхлоп GPL-ной программы создает функционал, который часть GPL-кода.

В частности, если бы Perl был выпущен под лицензией GPL-only, то все исходники программ, а также любой их вид в виде объектников тоже был бы GPL-кодом.

Есть много споров на этот счет, и когда эта тема поднялась, то те же BSD-шники поняли, что это пробел, который через какое-то время доставит неприятностей. Как это будет расценивать суд никому не известно.

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

Тогда предлагаю скорее писать клиент-серверное ПО, нагибать СПО и продавать жопу гуглу за миллиар. Ты со мной?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от gh0stwizard

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

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

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

Есть несколько вариантов: модель чистой комнаты, есть реверс-инжиниринг. В зависимости от того каким путем ты пошел, результат твой работы будет отличаться. Чем сильнее «запачкаешься», тем больше шансов, что ты просто взял и скопировал, нарушил EULA и т.п. Плюс играют роль патенты. Так что, всякое может быть.

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

Кстати, есть ещё один прекрасный метод (если не AGPL): облачные технологии SaaS'а.

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

Есть еще важный момент, который вообще все решает :) Засудить тебя может только автор. Если автору по барабану на твое поделие (скажем ты не достиг того же уровня качества как у оригинально программы), то тебе ничего не грозит. Может даже случиться так, что за счет твоей программы возрос интерес к другим продуктам той же компании.

Это также касается GPL-софта, собственно, почему я и делал акцент на «договорись с авторами». В случае кипиша, та же Qt Inc. может сказать, вау круто, но мы не станет с тобой бодаться, потому что ты просто крутой парень (маловероятно, но все же). Да, народ будет бухтеть про GPL-violations и т.п., но суд их иск не станет рассматривать, т.к. никто из них авторским правом не обладает.

gh0stwizard ★★★★★
()

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

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

вспоминается легенда про то как яблочники создали clang. получилось что они переписали gcc? может просто договорились или задавили авторитетом?

anonymous
()

Все изменения, вносимые в GNU GPL софт, включая изменение архитектуры, должны быть доступны под GNU GPL. Именно для этого эта лицензия и создана. Чтобы прокатила сабжевая схема лицензия должна быть более несвободной, например, BSD.

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

Слушай: а давай мы возьмём freebsd с её pf-ом и сделаем на её основе маршрутизаторы и коммутаторы. Напишем к ним cli, которое будет просто рулить конфигами обычных демонов и маршрутизацией. И будем продавать это дерьмище по цене как полциски. Как идея?
Конечно же разработки зааналим и отдавать не будем.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

У тебя derivative work в чистом виде получается. Так что вместо скорой помощи - чёрный воронок со Столманом

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

Juniper

Ну охренеть просто. Они спёрли мою идею!

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

то есть так можно Qt, например, закрыть для коммерческого использования, не платя троллям?

Но зачем если Qt уже давно LGPL и можно просто с ним слинокваться и тебе за это ничего не будет?

KblCb ★★★★★
()

наша LD_PRELOAD-либа продаётся за милльён шеккелей и не линкуется с GPL ПО
не линкуется

wrong. ты не понимаешь, что такое динамическое связывание. ядро линкует программу с библиотекой в рантайме.
https://en.wikipedia.org/wiki/Dynamic_linker

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

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

GPL FAQ про сокеты: https://www.gnu.org/licenses/gpl-faq.ru.html#MereAggregation

GPL FAQ про общую память: https://www.gnu.org/licenses/gpl-faq.ru.html#NFUseGPLPlugins

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

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

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

Что это за бред? Так можно сказать про любое клиент-серверное приложение. А про приложения с RPC я вообще молчу: тогда MS должна код NFS клиента и сервера своего опубликовать.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Что это за бред? Так можно сказать про любое клиент-серверное приложение.

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

proud_anon ★★★★★
()

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

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

А если шлёшь картинку с голенькой женщиной, то распространиться ли GPL на женщину или (производное от) картинку?

GPL - «вирусная» лицензия, но не на уровне зомби-апокалипсиса же.

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