LINUX.ORG.RU

посоветуйте встраиваемый скриптовый язык

 , ,


2

5

Есть относительно большая аппа на C++ с большим количеством всего захардкоженного. Эволюция дошла до того, что народ поверил в нужность конфигов и расширения функций пользователями, дабы не компилировать на каждый чих и не лезть грязными лапами в код, ломая всё на своём пути. Народ попробовал разные язычки типа python и AngelScript встраивать, но оно не подошло в силу тормознутости и больших размеров а также по ряду других параметров, в итоге сформировался список требований:

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

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

3. Нужна скорость, особенно важно, чтобы код, состоящиё только из вызова определённых в C/C++ конструкций выполнялся максимально быстро. Также декларативный код должен выполняться максимально быстро.

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

Пока я смотрю больше на Lua, но народу нравится больше S-выражения, поэтому рассматриваю ещё https://github.com/ashinn/chibi-scheme

Есть какие ещё варианты?

★★★★★

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

64х битная версия написана на псевдоассемблере.

Микропиколисп, к слову, можно заембеддить в проект, при желании.

А если не быть совсем ленивой жопой - то за день можно самому реализовать Scheme из одной из глав The Litter Schemer или еще какой toy-lisp.

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

А можно поподробнее про собственные реализации? А то мне надо чтобы основной usecase (вызов набора C-шных функций с параметрами) выполнялся максимально быстро, дабы оверхед от скрипта в этом случае был минимален и потеря не превышала 5-10%?

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

64х битная версия написана на псевдоассемблере.

То есть, имеется в виду, что сложно собрать один бинарник и лучше не внедрять лисп в с-код, а дергать с-библиотеки из лиспа?

за день можно самому реализовать Scheme

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

PicoLisp гораздо приятней.

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

А можно поподробнее про собственные реализации?

Можешь качнуть Структуру и Интерпретацию Компьютерных Программ - там расписано как написать свой лисп, можешь посмотреть в сторону статей типа: https://nakkaya.com/2010/08/24/a-micro-manual-for-lisp-implemented-in-c/ - из этого встраиваемый недолисп нафигачить - вообще не проблема.

Как вариант посмотри на(BSD-лицензия, если GPL/LGPL у Guile смущает): http://tinyscheme.sourceforge.net/home.html

Ну если хочется быстрее ответ, то реализация скима из Little Schemer на JS: http://crockford.com/javascript/little.js

Адаптировать под себя, думаю, не будет проблемой.

Про picoLisp упоминали(забавно, что в этом диалоге его защищают предомной, а не наоборот), но можешь скачать тут miniPicoLisp http://www.software-lab.de/down.html - он эмбеддится, вроде, нормально и написан на сях. Лицензия очень свободная - по факту AS IS.

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

PicoLisp гораздо приятней.

К слову, я его очень люблю - отличный диалект Лиспа, но я бы его как отдельные приложения/сервисы рассматривал бы.

То есть, имеется в виду, что сложно собрать один бинарник и лучше не внедрять лисп в с-код, а дергать с-библиотеки из лиспа?

Имеется ввиду, что полноценный из основной ветки прицепить к чему-то кроме себя - будет проблема. с miniPicoLisp будет сильно проще.

Вот только на голой схеме писать тоскливо

Насколько я понял, человеку просто нужно сделать доступ к внутренним функциям его ПО из скриптов. Сама библиотека языка ему не особо нужна. Чисто по минимуму.

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

А толку? LGPL также запрещает встраивать Guile в бинарник. Только SO/DLL.

Вызывающе ложная информация.

Вот из LGPL

You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:
...

d) Do one of the following:
  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.
  1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

Пункт 0 требует исходников «under the terms of this License», пункт 1 требует SO/DLL. И как раздавать бинарник с Guile внутри?

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

И как...?

По пункту 0.

И как...?

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

Однако есть одна загвоздка. Вы *не можете* этого не знать — хотя бы потому, что именно об этом и именно мы с вами здесь, на ЛОРе, уже разговаривали — я прекрасно это помню. Вы тогда, вроде как, все поняли.

Так что что-то с вами не так. -_-

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

Так, хорошо, с вами мы это заблуждение, кажется, не разбирали. :-)

По пункту 0 - это *.o. Никакой существенной разницы с .so.

Не-не-не.

По пункту 0 — это когда вы свободную библиотеку распространяете в составе вашей несвободной программы. Как она там сопряжена с ней: используется ли какая-то компоновка, и используется ли вообще — никакого значения *не имеет*. А по пункту 1, соответственно, — это когда вы ее не распространяете.

И вообще, для того, чтобы понять, что он вас требуют лицензии авторского лева ГНУ, их читать совершенно не обязательно. Достаточно лишь знать, для чего они вообще существуют.

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

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

А уж как там это будет выглядеть с технической стороны: есть какие-то .o, .so, .go и т. д. или нет — то уж вам в вашем частном случае виднее.

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

По пункту 0 — это когда вы свободную библиотеку распространяете в составе вашей несвободной программы. Как она там сопряжена с ней: используется ли какая-то компоновка, и используется ли вообще — никакого значения *не имеет*

Для того, чтобы перелинковать программу («to recombine or relink the Application with a modified version of the Linked Version») она должна состоять из *.o. И это само по себе гарантирует, что библиотека, поставляемая с программой, тоже будет в *.o

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

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

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

За пределами ГНУ и Юникса мир не заканчивается. За пределами программ в машинных кодах — тем более. А статическая компоновка — вообще раритет.

библиотека тоже будет в .o

Не, ну конечно не возбраняется еще и это предоставить, но нахрена?!! В исходниках она.

но это можно воображать только спора ради.

???

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

А статическая компоновка — вообще раритет.

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

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

Я отвечал на комментарий, содержащий клевету в адрес GNU Lesser GPL. Делал я это в первую очередь потому, что это был комментарий на мое письмо.

С затруднениями со статической компоновкой кто-нибудь, вероятно и сталкивается, но со стороны GNU Lesser GPL ни одного из них не исходит. Она вообще ее никак не выделяет.

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

Ты принимал участие в выпуске и поддержке проприетарного продукта, содержащего статически скомпонованные LGPL библиотеки?

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

Извините, мифы о свободных лицензиях — это серьезно, и потому я не буду уходить в сторону от темы. И в частности, не буду уходить на личности.

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

Серьёзность определяется количеством ресурсов, которое лично ты готов вложить. Можешь что угодно тут обещать. Риски же не на тебе.

И для популяризации стоило всё же писать нормально, а не в трололо-стиле. Мол, лицензия такая, линковаться можно так-то при таких-то условиях. Нужно осознавать, что условия эти для кого-то могут оказаться неприемлемыми.

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

Серьёзность определяется количеством ресурсов, которое лично ты готов вложить.

Пардон, что-то вообще не в тему.

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

Мифы о свободных лицензиях дичайше распространены и они очень устойчивы. Выше прекрасный тому пример. Товарищ monk год назад, как я сейчас уточнил, самостоятельно [0] прояснил для себя вопрос о требованиях GNU Lesser GPL. И вот сейчас он вновь безапелляционно ретранслирует [1], что-де «LGPL также запрещает встраивать [библиотеку] в бинарник». У меня нет никаких оснований подозревать его в злонамеренности, то есть остается думать, что за прошедшее время он успел начитаться где-то мифотворчества в количестве достаточном для того, чтобы его собственное умозаключение заместилось внушенным.

Ну и они, очевидно, вредны.

[0] Лицензия LGPLv3 для Qt5. Что на практике означает LGPLv3 при линковке с таким кодом? (комментарий)
[1] посоветуйте встраиваемый скриптовый язык (комментарий)

Можешь что угодно тут обещать.

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

И для популяризации стоило всё же писать нормально, а не в трололо-стиле.

Стиль диктует окружение: аудитория и собеседники, если это беседа. Одно дело — статья в журнале, а другое — нить на ЛОРе.

Мол, лицензия такая, линковаться можно так-то при таких-то
условиях.

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

Так что есть мнение, что на категоричную ложь надо в первую очередь отвечать не менее категоричным «ложь!». А потом уже можно пускаться в раз’яснения.

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

Ну эти кто-то, я думаю, не маленькие, и решать за них не надо. Когда они сложат полную картину, сами разберутся, что им приемлемо, а что нет.

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

библиотека тоже будет в .o

Не, ну конечно не возбраняется еще и это предоставить, но нахрена?!!

Чтобы пользователю не нужно было ее компилировать.

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

Чтобы пользователю не нужно было ее компилировать.

Благородно, но бессмысленно.

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

А статическая компоновка — вообще раритет.

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

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

По пункту 0.

Это уже не один бинарник. А ещё «Minimal Corresponding Source» и «Corresponding Application Code». То есть если даже я пишу freeware, то меня потенциально могут засудить за нарушение лицензии в тот момент, как я его перестану предоставлять. Или вместо бинарника придётся предоставлять архив с бинарником и кучей мусора.

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

По пункту 0 - это *.o. Никакой существенной разницы с .so.

Если компилятор умный и делает inline, то .o не поможет.

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

По пункту 0 - это *.o. Никакой существенной разницы с .so.

Если компилятор умный и делает inline, то .o не поможет.

Не поможет в чем?

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

Не поможет в чем?

that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work

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

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

Если компилятор умный и делает inline, то .o не поможет.

Не поможет в чем?

that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work

Это не ответ на мой вопрос.

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

Это не ответ на мой вопрос.

В смысле? Это ответ на вопрос «в чём?». Если код LGPL библиотеки заинлайнился, то условие 0 выполнить невозможно. И .o не поможет, так как он не будет содержать ссылок на .o от библиотеки, а будет содержать скомпилированные функции из неё.

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

Это не ответ на мой вопрос.

В смысле?

В прямом. Я спросил - «в чем *.o не помогут?».

Если код LGPL библиотеки заинлайнился, то условие 0 выполнить невозможно.

В общем, это не так (если бы это было так, то закрытые приложения не могли бы использовать glibc), но просто ради спора - допустим, что это так. И? Ты утверждаешь, что инлайнинг помешает мне поставлять закрытую программу в виде набора *.o-файлов, при этом соблюдая LGPL?

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

В общем, это не так (если бы это было так, то закрытые приложения не могли бы использовать glibc)

В общем случае так и есть. Смотри пример про Maple. Сначала всё, что лежало в /opt тащило за собой собственную версию glibc или требовало фиксированной версии. В современных версиях придумали версионирование символов, что ломают саму идею динамических библиотек.

Ты утверждаешь, что инлайнинг помешает мне поставлять закрытую программу в виде набора *.o-файлов, при этом соблюдая LGPL?

Конечно. Тебе придётся придумывать какой-то инструмент, который из новой версии библиотеки и твоего .o получит «modified version of the Linked Version to produce a modified Combined Work».

Со стандартным .o такое вообще невозможно, так как на коде не написано, откуда он взят. И, например, кусок

if (lib_f1()) lib_f2();
может быть вообще выкинут, если компилятор может убедиться, что функция lib_f1 чистая и всегда возвращает 0. А в следующей версии lib_f1 может читать конфигурационный файл, но в .o даже места нет, куда её вставить.

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

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

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

В общем, это не так (если бы это было так, то закрытые приложения не могли бы использовать glibc)

В общем случае так и есть.

Твое утверждение опровергается практикой.

Смотри пример про Maple. Сначала всё, что лежало в /opt тащило за собой собственную версию glibc или требовало фиксированной версии.

Это не имеет ровно никакого отношения к лицензионным проблемам.

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

фейспалм.жпг

Ты утверждаешь, что инлайнинг помешает мне поставлять закрытую программу в виде набора *.o-файлов, при этом соблюдая LGPL?

Конечно

Совершенно очевидно, что это не так: просто сделай *.o-прокладки, которые содержат инлайненные функции, и опубликуй их исходники на случай, что кого-то не устроит просто линковка *.o

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

Совершенно очевидно, что это не так: просто сделай *.o-прокладки, которые содержат инлайненные функции, и опубликуй их исходники на случай, что кого-то не устроит просто линковка *.o

Вот-вот. В два раза больше кода, потеря производительности и куча проблем. С учётом того, что вынести придётся также всё, что использует хоть какие-то макросы (для Guile это все SCM*), то код будет напоминать мелко нарезанные спагетти.

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

Твое утверждение опровергается практикой.

Я же тебе только что дал ссылку из практики про Maple. Если бы Maple линковался статически и glibc был под LGPL и не был системным, то у Maple были бы проблемы.

Это не имеет ровно никакого отношения к лицензионным проблемам.

С Glibc разумеется. Она же системная. И в данном случае использовалась динамическая линковка.

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

Совершенно очевидно, что это не так: просто сделай *.o-прокладки, которые содержат инлайненные функции, и опубликуй их исходники на случай, что кого-то не устроит просто линковка *.o

Вот-вот. В два раза больше кода

Это, конечно, чушь. По сранению с линковкой к *.so, это в бесконечность раз больше кода.

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

Сформулируй тезисы, которые ты пытаешься доказать.

LGPL запрещает влинковывать библиотеку в распространяемый не (L)GPL бинарник.

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

LGPL запрещает влинковывать библиотеку в распространяемый не (L)GPL бинарник.

LGPL требует, чтобы библиотеку можно было заменять. Если ты найдешь способ заменять влинкованную в не-LGPL бинарь библиотеку (сборка из *.o), ты соблюдешь LGPL

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

Если ты найдешь способ заменять влинкованную в не-LGPL бинарь библиотеку (сборка из *.o), ты соблюдешь LGPL

Именно про это я и пишу. Что вместо простого выкладывания бинарника я должен идти на много-много дополнительных телодвижений. Причём если я не озаботился тем, чтобы пользователь не мог скачать бинарник без всего этого мусора (исходников библиотеки + .o файлов), то я ещё и попадаю на обязательство пожизненно держать архив исходников всех скачанных у меня программ. А если сервер полетел, то привет нарушение LGPL: я не предоставил кому-то из получателей бинарника соответствующие исходники и .o файлы.

P.S. Поэтому под (L)GPL я распространяю свои программы только в исходниках. Кому сильно надо — скомпилирует. А попадать на ситуацию «вот я скачал программу 5 лет назад, а теперь ты должен мне исходники» мне не улыбается.

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

Для коммерческого софта в принципе терпимо. В конце-концов там будет договор о покупке. А вот если программа бесплатно раздаётся, то ожидаются проблемы.

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

Если ты найдешь способ заменять влинкованную в не-LGPL бинарь библиотеку (сборка из *.o), ты соблюдешь LGPL

Именно про это я и пишу.

А, то есть

monk> Если компилятор умный и делает inline, то .o не поможет

было именно об этом. Окей.

Поэтому под (L)GPL я распространяю свои программы только в исходниках

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

Твои страхи - они твои личные.

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

Разве GPL не трактует распространение ПО как активное действие? Т.е. ты заключил с кем-то договор и «распространил» ему gpl программу вместе с исходниками. А ежели у тебя есть публичный архив из которого кто-то там чего-то где-то скачал, то это исключительно его трудности?

P.S. I Am Not A Lawer.

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

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

Юридически это называется «оферта». То есть, если ты сделал публичный архив, в котором софт под GPL, то либо выполняешь условия GPL (в частности обязан предоставить скачавшим софт исходники, можно по запросу), либо нарушаешь лицензию со всеми вытекающими последствиями вплоть до ст. 146 УК РФ.

В реальности, конечно, на большую часть текста лицензии всем плевать. Суды и полиция смотрят на платно/бесплатно и оплачено ли если платно. В то время как, например, в лицензиях MS есть запрет допускать к лицензированному ПО третьих лиц. Например, соседа к домашнему компьютеру, или специалиста по настройке кассы к рабочему.

Так и с GPL. Если автор программы (кстати, кто именно, если ПО не передано FSF?) не подаст в суд РФ за нарушение его прав с указанием материального ущерба, то всем плевать, как именно GPL код на самом деле используется.

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

Поэтому под (L)GPL я распространяю свои программы только в исходниках
попадать на ситуацию «вот я скачал программу 5 лет назад, а теперь ты должен мне исходники» мне не улыбается.

Твои страхи - они твои личные.

В том-то и дело, что г-н monk усердно пытается личные свои страхи превратить в общественные. FUD как он есть. (Хотя я выше и оговорился, что не имею пока оснований подозревать его в злонамеренности.)

Так что оставлять это так не стоило бы.

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

По пункту 0.

Это уже не один бинарник.

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

Если же вы хотите заявить, что GNU Lesser GPL ограничивает вас в возможности облечь сборку в *любую* достижимую форму, то это *неверно*.

А ещё «Minimal Corresponding Source» и «Corresponding Application Code».

Да, без них пользователь будет ущемлен в праве свободно изменять библиотеку.

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

«Его» — это вашу проприетарщину, да?

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

(Тем более, что современные лицензии ГНУ и не разрешают давать такие обязательства, кроме случаев распространения об’ектников на материальном носителе.)

Или вместо бинарника придётся предоставлять архив с бинарником и кучей мусора.

Просто чушь.

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

Если бы Maple линковался статически и glibc был под LGPL и не был системным, то у Maple были бы проблемы.
Glibc разумеется. Она же системная.

Вы опять все перепутали. И даже перевернули вверх ногами.

«Системные бибилиотеки» — это то, что позволяет программам под GNU (Lesser) GPL вопреки всему остальному зависеть от компонентов под *несовместимыми* условиями (в том числе несвободными), а равно и от вообще не распространяемых.

Maple же — не программа под GNU (Lesser) GPL.

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

вместо простого выкладывания бинарника я должен идти на много-много дополнительных телодвижений.

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

Авторам свободных программ *никаких* дополнительных телодвижений делать не требуется.

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

Вызывающая ложь.

Будьте добры, озаботьтесь уже ознакомиться с предметом, о котором имеете бесстыжесть так уверенно судить уже не первый год. Хотя бы на уровне прочтения ЧаВО [0], если на прочтение оригинала чего-то не хватает.

[0] https://www.gnu.org/licenses/gpl-faq.ru.html

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

IANAL, TINLA.

Разве GPL не трактует распространение ПО как активное действие?

«Распространение» лицензии ГНУ раньше не определяли, а в актуальных версиях оно переименовано в «передачу» (conveying), и переименовано именно затем, чтобы невозбранно дать ему определение:

To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

Нужен перевод или комментарии?

Т. е. ты заключил с кем-то договор и «распространил» ему программу [под GPL] вместе с исходниками.

Обнародовав произведение под свободной лицензией (а на самом деле шире — под открытой, то есть вплоть до shareware), вы в некотором смысле заключили договор со всем миром.

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

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

То есть вам, конечно же, никто не запрещает дать какие-нибудь дополнительные гарантии. Более того — старые версии лицензий ГНУ еще и дозволяли дать обязательство предоставлять исходники и прочее по запросу *вместо* них самих. Но поскольку люди в массе своей не monk’и, то есть сами себе не враги, такие обязательства едва ли кто не давал.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.