Про зловредную libreadline
Mar. 10th, 2011 01:31 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
У
beldmit в журнале обсуждают злобных дебиановцев, которые собрали psql без libreadline потому что readline-вская GPL несовместима с OpenSSL-евской лицензией.
Вообще это далеко не первый случай, когда из-за лицензионных ограничений в программу с собственным командным языком не удается впихнуть libreadline.
И почему-то ни до кого до сих пор не доперло, что вообще-то GPL запрещает что-то с чем-то линковать, но не запрещает запускать как субпроцесс программы с какой угодно лицензией и общаться с ними через пайп, псевдотерминал или что угодно.
Давно бы написали такую универсальную запускалку для программ с собственной командной строкой, с которой можно было бы запускать хоть ftp, хоть оракловый sql-плюс. Ну там пришлось бы правила completion-а для каждого такого приложения отдельно описывать. Но вообще-то много где их и так расширяемым делать приходится.
Нет, с упорством достойным лучшего применения, норовят все обязательно слинковать в один бинарник.
Upd оказывается, полезная программа rlwrap существует. А я и не знал. Надо постгресовским мейнтейнерам предложить вместо всяких глючных libedit просто заворачивать psql в скрипт, запускающий его через rlwrap.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Вообще это далеко не первый случай, когда из-за лицензионных ограничений в программу с собственным командным языком не удается впихнуть libreadline.
И почему-то ни до кого до сих пор не доперло, что вообще-то GPL запрещает что-то с чем-то линковать, но не запрещает запускать как субпроцесс программы с какой угодно лицензией и общаться с ними через пайп, псевдотерминал или что угодно.
Давно бы написали такую универсальную запускалку для программ с собственной командной строкой, с которой можно было бы запускать хоть ftp, хоть оракловый sql-плюс. Ну там пришлось бы правила completion-а для каждого такого приложения отдельно описывать. Но вообще-то много где их и так расширяемым делать приходится.
Нет, с упорством достойным лучшего применения, норовят все обязательно слинковать в один бинарник.
Upd оказывается, полезная программа rlwrap существует. А я и не знал. Надо постгресовским мейнтейнерам предложить вместо всяких глючных libedit просто заворачивать psql в скрипт, запускающий его через rlwrap.
no subject
Date: 2011-03-10 11:36 am (UTC)Кстати, при написании предыдущего коммента стало любопытно, считается ли линковка путём IPC с маршаллингом (т.е. когда линкуемый код находится в другом процессе-песочнице операционки или компартменте (например, в грин-треде/сопрограмме) в рамках того же самого процесса) линковкой в терминах GPL? Я просто тут для развлечения подумал, как виртуализовывать DHTML средствами DHTML, а о лицензионных вопросах только сейчас задумался.
no subject
Date: 2011-03-10 12:16 pm (UTC)Если бинарники друг без друга неработоспособны (и никакой бинарник не является частью операционной системы, рантайма компилятора и всякого прочего, что традиционно поставляется отдельно) - значит код является частью софтины и требует соблюдения лицензий.
Если же без бинарника программа вполне себе, с точки зрения системы, запускается - хотя бы и не делает ничего полезного, а только сыпет сообщениями об ошибках (но своими а не системными) - то это "mere aggregation"с общением по протоколу.
no subject
Date: 2011-03-10 12:36 pm (UTC)Т.е. если у меня DHTML приложением будет загружаться javascript приложение-транскодер под лицензией A (которое также имеет библиотеку функций для обеспечения кросплатформенной функциональности), которым уже будут обрабатываться исходники с лицензией B, в результате транслируемые во внутреннее представление в javascript-окружении (и имеющее ссылки на вышеупомянутую библиотеку функций), то лицензии A и B не должны быть совместимы, для того, что бы пользователь не считался нарушителем копирайта(?)...
Интересно, что считается javascript/DHTML программой (запускающейся отдельно)? Соглашения ведь для вызова из командной строки у разных ВМ разные - считается ли, например, eval() таким запуском?
no subject
Date: 2011-03-10 10:46 pm (UTC)Если это веб-приложение, запускаемое в браузере то здесь смотрим не на внутреннюю логику его работы, а на логику его распространения. Если оно загружается разом из одного и того же источника, у пользователя просто нет физической возможности (не прибегая к хаку) запускать элементы этого приложения по отдельности, а тем паче в сочетании с другими элементами по своему выбору - то разумеется это одна программа, как бы она ни была внутре устроена.
no subject
Date: 2011-03-11 08:13 pm (UTC)no subject
Date: 2011-03-17 01:24 pm (UTC)no subject
Date: 2011-03-10 12:45 pm (UTC)no subject
Date: 2011-03-11 05:05 pm (UTC)А так аналогичная система широко применяется в играх. GPL-код поставляется с небольшим демонстрационным набором уровней, но за полноценную игру надо платить денюжку издателю.
no subject
Date: 2011-03-11 05:11 pm (UTC)моя софтина слинкованна с моим плэйсхолдером.
который по символам совпадает с некоей gpl библиотекой.
но поставляю я софтину с плэйсхолдером.
а gpl библиотеку, нуормальную, можно качнуть у меня же с сайта.
или со второго сидюка взять, который всяким gpl-хламом забит, с сырцами и компилированным.
no subject
Date: 2011-03-17 01:25 pm (UTC)Ты все равно поставляешь ту же самую программу.
no subject
Date: 2011-03-17 01:29 pm (UTC)ну и обратное тоже верно, очень часто.