LINUX.ORG.RU

Поставьте мне мозг на место: GPLv3 + shared memory

 , ,


2

1

Было:
- есть код под GPLv3 (например вычисления);
- есть еще код под GPLv3 (различный транспорт);
- к этому добавлен main-модуль под GPLv3;
= тут все ясно и понятно, имеем проект под GPLv3.

Стало:
- к указанному GPLv3 проекту добавили код, реализующий транспорт через разделяемую память;
- координаты и формат данных в разделяемой памяти задаются в настройках/опциях, можно считать что работает интерпретатор или компилятор;
- все изменения исходников доступны;
= ну тоже понятно, имеем проект под GPLv3, в который внесены изменения, нарушений нет.

Туплю:
- есть проприетарная прога, которая создает именованный регион разделяемой памяти и производит с ним обмен;
- настройками двух проектов их можно «подружить», таким образом GPLv3 и не-GPL в каком-то смысле объединяются;
- обмен производится массивами (длина плюс линейно данные);
= вопрос, это нарушение GPLv3 или нет?


Ответ на: комментарий от dr_jumba

А когда туда сокеты пропишут линуксом нельзя будет пользоваться даже в качестве SaaS ? Столлман слишком многого хочет. Реализация API даже через shm это тяжкий труд, который достоин быть отвязанным от GPL.

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

Ну короче, я пока предложил два варианта:

1) «сделать пользу» = реализовать shared-memory транспорт посредством модуля ядра, в идеале как backend для MPI, благо есть futex-ы;

2) «спасибо кэп» = отказаться от использования GPL-компонентов;

Всё, пришел пятницо и swarm arrives...

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

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

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

Хм, ну это лазейка работает до тех пор пока собственная LGPL не касается GPL. А после сумма автоматически переходит в GPL.

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

Там же дальше:

Where's the line between two separate programs, and one program with two parts? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged).

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

Да, но как автор lgpl библиотеки ты наделен правом разрешить писать закрытый код к этой либе. Почитай внимательно. Может я конечно ошибаюсь, но если бы было иначе, то смысла в lgpl не было.

gh0stwizard ★★★★★
()

- вопрос, это нарушение GPLv3 или нет?

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

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

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

Хм, ну это лазейка работает до тех пор пока собственная LGPL не касается GPL. А после сумма автоматически переходит в GPL.

В общем случае LGPL линкуется с GPL, не теряя LGPL. Условие: LGPL - это не просто обёртка, а что-то обобщающее и имеющее пользу для других.

Т.е. если удастся обобщить этот код

к указанному GPLv3 проекту добавили код, реализующий транспорт через разделяемую память;

так что будет очевидность необходимости LGPL-библиотечки, то проблема решена, а вот если нет...

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

IMHO логичны такие требования:

  • должно быть два разных взаимодействующих процесса (разные pid-ы), которые запускаются независимо через два exec-вызова;
  • интерфейс взаимодействия и структура сообщений/данных должны быть открыты и воспроизводимы на основе прилагаемых исходников;
ly
() автор топика
Ответ на: комментарий от ly

но конечно предполагается все это дело распространять.

Тогда следи за руками.

Как уже говорилось GPL-ный код может использовать несвободный, если тот удовлетворяет критерию системности. Что бы распространять сумму из свободного и несвободного можно сделать их сборник под совокупной лицензией не ущемляющей свободню часть, т. е. нужно объяснить что вот эта часть свободная и с ней можно все что согласно свободам имени FSF. А вот та часть несвободная и с ней нужно аккуратно, в перчатках, и согласно букве EULA. А также написать что несвободная часть поставляется отдельно от свободной и желательно еще один метод получения отличный от этого сборника, что бы удовлетворять критерию системности. Затем что бы полностью отвязать свободную часть потребуется третий компонет заботящийся о правильном размещении на диске, бибилиотеках, установке канала связи между открытой и закрытой частями. Для примера, в дистрах линукса эту роль выполняют инсталятор и система управления пакетами. Сам по себе код канала связи лучше оформить под LGPL, но это для удобства взаимодействия. Сама по себе LGPL, не является обязательной и не гарнтирует легальность распространения без соблюденя условий перечисленых выше. Вот по такой схеме в линксуовом дистре появляется опакеченый плагин флэша и может быть использован в GPL-ном браузере.

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

Не о том думаешь. GPL-ную библиотеку нельзя включать в несвободный проект не потому что pid будет один на всё, а потому что при распространении такая смесь не будет обспечивать свобод заявляныз для GPL. И в этом смысле абсолютно безсмыслено считать количество процессов или выяснять как и через что они были запущены.

интерфейс взаимодействия и структура сообщений/данных должны быть открыты и воспроизводимы на основе прилагаемых исходников

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

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

Что-то мы про разные вещи говорим :)

Не о том думаешь. GPL-ную библиотеку нельзя включать в несвободный проект не потому что pid будет один на всё, а потому что при распространении такая смесь не будет обспечивать свобод заявляныз для GPL. И в этом смысле абсолютно безсмыслено считать количество процессов или выяснять как и через

pid-ы были помянуты как пояснения для способа отличать две разные программы взаимодействующие через некий системный интерфейс (shared memory), от одной программы взаимодействующей со своими плагинами.

Конечно спорный вопрос считать ли shared memory системным интерфейсом. Вот в этом контексте было упомянуто о выпуске кода описывающего структуру данных под LGPL.

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

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

Вот в этом направлении и предполагается идти. :)

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

Конечно спорный вопрос считать ли shared memory системным интерфейсом.

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

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

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

Все рано есть неоднозначности, ну или я туплю.

Вот например:

  1. есть GPL-либа, могу ли я сделать на её основе GPL-прогу? = да.
  2. могу ли я из этой проги сделать сервер с соблюдением GPL, принимающий TCP-соединения по сети? = да.
  3. могу ли я обращаться к этому серверу из «несвободной проги»? = да?
  4. могу ли я отдельно сделать LGPL-либу и модуль ядра, который будет эмулировать интерфейс сокетов через shared momory = да.
  5. ВОПРОС: могу ли я обращаться из «несвободной проги» к GPL-серверу через LGPL-эмулятор сокетов в shared memory? = ???
ly
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.