Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

gcc как toolchain в коммерческом продукте

Автор Алексей Гринь, июля 14, 2010, 22:44

0 Пользователи и 1 гость просматривают эту тему.

Алексей Гринь

— Здравствуйте, это канал об аниме?
— Да.
— Как мне пропатчить KDE2 под FreeBSD?


Здравствуйте, это Лингвофорум?
Есть лицензионный вопрос такого рода: допустим, есть хитрый коммерческий транслятор из языка N в язык "Си с примочками gcc" с последующей компиляцией в машинные коды (всё автоматизированно, про gcc знать не нужно). Является ли нарушением лицензии требовать gcc как промежуточный слой компиляции в коммерческом продукте? Т.е. prerequisites при установке если чётко прописано: "скачайте с такого-то сайта и установите gcc (или сразу в комплекте если идёт (.msi или .deb))" Затем жмёшь в IDE, грубо говоря, Run, и с помощью gcc проходит часть компиляции.
Нормально ли это?
Вот так вот задумался я.
Вроде нормально, но Столлман будет, наверное, негодовать.
В лицензиях вообще не шарю, т.к. россиянин.
Any мысли?
肏! Τίς πέπορδε;

злой

Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

Алексей Гринь

Цитата: злой от июля 14, 2010, 22:48
Вам куда-нибудь на РСДН.
Не люблю колхозных технарей.
Тут вопрос больше правовой, чем технический. В лом регаться на юридическом форуме. Хотя...
肏! Τίς πέπορδε;

Juif Eternel

Гринь, я не очень понял ваш вопрос. Но напишу, что я знаю из моей практике. Например я программирую на на Qt4 программы, которые передаются заказчикам вместе с hardware, которая мы разрабатываем. Пакет Qt4 взят из Интернета как open source. В пакет входит MinGW, а в MinGW входит компайлер gcc. Мы передаём с нашими изделиями готовые программы, но, как я понимаю, я могу передать и source, чтобы они с ним работали и сказать: скачайте Qt4, в том числе MinGW/gcc, и компилируйте сами. Если это не о том, простите.
Mir lebn ejbik

Алексей Гринь

Нет, о другом.

У вас Qt4 используется как инструмент, чтобы создать некий коммерческий продукт. В моём же случае коммерческим продуктом является сам инструмент (который схож QT4+moc+qmake), т.е. продуктом является компилятор, который транслирует с языка N в язык Си. Идея такова, что незачем велосипедить с нуля, заниматься низкоуровневым сексом с разными архитектурами, лучше просто транслировать код в промежуточный Си. Идея такова, что клиент-программист просто нажимает в IDE "сконпелировать", и компилятор транслирует LanguageX > C,  а потом автоматически вызывает gcc на скомпилированный с-код. Требуется именно gcc, т.к. в оттранслированном коде используются некоторые годные расширения gcc (в ближайшем будущем). В общем, техника схожа (wiki/ru) Vala

Т.е. мой транслятор это фронт-энд, а gcc — встроенный back-end
Вот интересно, такая seamless-интеграция легитимна или нет... Или достаточно  где-то в лицензиях просто указать, что юзается gcc... Или программист-пользователь обязан вручную вызывать gcc...

В опенсорсе-то запросто, а вот что если деньги хочется делать? В gnu foundation письмо, что ли, напейсать.

Ой-вей.
肏! Τίς πέπορδε;

Juif Eternel

Сегодня на работе подкинул ваш вопрос. Там люди имеют некоторый опыт с лицензиями. Мнения разделились.
Mir lebn ejbik

amdf

А почему бы просто вдумчиво не почитать лицензию?

Кстати, если gcc положить в дистрибутив и так распространять, то, возможно, вылезут какие-то нюансы.
А если просто в документации фраза "скачайте и установите gcc", и пользователь будет делать это вручную, то здесь всё чисто, кажется.
Ведовьство, потвори, чяродеание, волхъвование, зеленничьство, церковнаа татба, мертвеци сволочать, крест посекут, или на стенах трескы емлють из креста.

myst

Цитата: Алексей Гринь от июля 14, 2010, 22:44
Есть лицензионный вопрос такого рода: допустим, есть хитрый коммерческий транслятор из языка N в язык "Си с примочками gcc" с последующей компиляцией в машинные коды (всё автоматизированно, про gcc знать не нужно). Является ли нарушением лицензии требовать gcc как промежуточный слой компиляции в коммерческом продукте?
Какой лицензии? Коммерческого продукта? GPL?

Алексей Гринь

Цитата: myst от июля 16, 2010, 10:58
Какой лицензии? Коммерческого продукта? GPL?
ЦитироватьС версии 4.2.2 GCC перешёл на лицензию GPLv3.
Получается, моя теоретическая гадкая коммерческая лицензия (Evil Restrictive Grinj License, ERGL) + GPL-нутый gcc.

Цитата: amdf от июля 16, 2010, 06:26
А почему бы просто вдумчиво не почитать лицензию?
Да фиг её поймёшь. Там тексту много и всяких юридических подковык. А я не подкован. И вообще бесит читать правовые документы, кривой язык, глазам больно. Тем более там английскей.

Что я знаю, так это то, что GPL требует всё линкуемое быть GPL-совместимым, так? А вот если у меня идёт технически не "линковка", а допустим просто вызов (через шелл) — то не понятно, это тот же случай, или другой? Просто как бы ладно бы так — подумаешь, вызывает шелл, но тут случай такой, что коммерческое поделие именно что требует и эксплуатирует gcc и делает на этом грязные рестриктивные мани — и, возможно, распространяет с собой в дистре, т.к. на виндовсах, например, gcc не сразу установлен, и есть некоторая морока с настройкой окружения, всё-таки.

Цитата: amdf от июля 16, 2010, 06:26
А если просто в документации фраза "скачайте и установите gcc", и пользователь будет делать это вручную, то здесь всё чисто, кажется.
Чисто-то чисто, но именно что хочется, чтобы всё уже было out-of-box, на блюдечке.
肏! Τίς πέπορδε;

myst

Цитата: Алексей Гринь от июля 16, 2010, 21:29
Получается, моя теоретическая гадкая коммерческая лицензия (Evil Restrictive Grinj License, ERGL) + GPL-нутый gcc.
Как я понял, у тебя gcc используется как сторонняя программа, запускаемая коммерческой программой. Знает об этом пользователь или нет, неважно. GPL'ные программы можно запускать кому угодно без ограничений. Я не вижу никаких проблем.

myst

Цитата: Алексей Гринь от июля 16, 2010, 21:29
Что я знаю, так это то, что GPL требует всё линкуемое быть GPL-совместимым, так? А вот если у меня идёт технически не "линковка", а допустим просто вызов (через шелл) — то не понятно, это тот же случай, или другой? Просто как бы ладно бы так — подумаешь, вызывает шелл, но тут случай такой, что коммерческое поделие именно что требует и эксплуатирует gcc и делает на этом грязные рестриктивные мани — и, возможно, распространяет с собой в дистре, т.к. на виндовсах, например, gcc не сразу установлен, и есть некоторая морока с настройкой окружения, всё-таки.
Цитата: http://www.gnu.org/licenses/gpl-3.0.txt
This License explicitly affirms your unlimited permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.

Алексей Гринь

Тут подразумевается запуск человеком, нет? Типа, запускайте, сколь влезет (в отличие от случаев, когда истекает лицензия, и всё такое). Как-то не убедил :)

Неужели GPL'у главное, чтобы была линковка? А если изделие нещадно эксплуатируется как "впаянный" компонент чего-то коммерческого каким-то другим образом, не линковкой - то уже пофигу? Ну я раньше предполагал, что Столлман дурак, но не настолько же :(
肏! Τίς πέπορδε;

myst

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

myst

Цитата: Алексей Гринь от июля 16, 2010, 21:45
Тут подразумевается запуск человеком, нет?
Что значит запуск человеком? Процесс создаётся системным вызовом, вызов этот в любом случае делает программа, а не человек.

myst

Цитата: Алексей Гринь от июля 16, 2010, 21:45
А если изделие нещадно эксплуатируется как "впаянный" компонент чего-то коммерческого каким-то другим образом, не линковкой - то уже пофигу?
Каким другим способом? Если коммерческая программа запускает GPL'ную через exec(), например, какой же это впаянный компонент? Другое дело, когда объектый код, полученный из GPL'ных исходников, компонуется вместе с коммерческим в единое целое. Вот это действительно впаянный.

myst

Ты представь, что будет, если запретить запуск GPL'ных программ программами с другими лицензиями. Это как минимум потребует GPL'ную операционную систему.

Алексей Гринь

Цитата: myst от июля 16, 2010, 21:50
Что значит запуск человеком? Процесс создаётся системным вызовом, вызов этот в любом случае делает программа, а не человек.
Ну, как осознанный целенаправленный акт — «я запускаю gcc» :)

В моём же случае было бы здорово не афишировать, каким образом внутри всё реализуется, т.е. «я запускаю GrinjSoftware InternetCracker». Т.е., кому интересно — тот, конечно, по составу папок всё поймёт.
肏! Τίς πέπορδε;

Алексей Гринь

Цитата: myst от июля 16, 2010, 21:54
Каким другим способом? Если коммерческая программа запускает GPL'ную через exec(), например, какой же это впаянный компонент? Другое дело, когда объектый код, полученный из GPL'ных исходников, компонуется вместе с коммерческим в единое целое. Вот это действительно впаянный.
Под впаянным я имел в виду неотделимый от архитектуры/реализации.

Т.е., теоретически, что получается? Я могу написать утилиту-обёртку в две строки, которая транслирует вызовы от себя к GCC, обозвать её «Принципиально новый компилятор Алексея Гриня» и рубить с неё бабки, так получается? И всё юридически будет верно? По-моему, ограничения GPL по линковке как раз связаны с тем, что чужие наработки могут дельцы начать представлять за свои и рубить на них бабки начать. Получается, бессмысленно всё это, если есть такая огромная дыра (посредством exec). Т.е., получается, можно любую GPL-программу превратить в коммерческуюпроприетарную таким образом? Со всеми ограничениями типа истечения лицензии, невозможности использовать неграми, вписыванию себя единоличным автором и т. д.

Мне что-то не верится.
肏! Τίς πέπορδε;

myst

Цитата: Алексей Гринь от июля 16, 2010, 22:06
Я могу написать утилиту-обёртку в две строки, которая транслирует вызовы от себя к GCC, обозвать её «Принципиально новый компилятор Алексея Гриня» и рубить с неё бабки, так получается?
Ты можешь рубить бабки вообще ничего не приделывая, но просто продавая GPL'ный софт. :)

Цитата: Алексей Гринь от июля 16, 2010, 22:06
Т.е., получается, можно любую GPL-программу превратить в коммерческуюпроприетарную таким образом?
Нет. Проприетарная лицензия и связанные с ней ограничения не могут распространяться на GPL'ную программу ни при каких обстоятельствах.

myst


Алексей Гринь

Цитата: Алексей Гринь от июля 16, 2010, 21:29
А вот если у меня идёт технически не "линковка", а допустим просто вызов (через шелл) — то не понятно, это тот же случай, или другой?


Нашёл:
Цитата: GPL 2If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.

Т.е. можно бандлить в дистрибутив гцц и не иметь проблем, ок.
肏! Τίς πέπορδε;


Алексей Гринь

Ой, это Frequently Asked Questions about the GNU Licenses.

Полная цитата:
Цитировать
Can I apply the GPL when writing a plug-in for a non-free program?

    If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them. So you can use the GPL for a plug-in, and there are no special requirements.

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means the plug-ins must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when those plug-ins are distributed.

If the program dynamically links plug-ins, but the communication between them is limited to invoking the 'main' function of the plug-in with some options and waiting for it to return, that is a borderline case.

Версия не указана, стало быть для всех версий подходит это.

Всё равно я не понимаю, для меня нет разницы, с точки зрения чёрного ящика (чем является моя программа для пользователя) что вызывать программу/библиотеку через шелл, что через таблицу экспорта - разницы нету, просто разные подходы... Но нет, тут они делают мегаважное отличие. Если линкуешься - то это целая программа, а если просто вызываешь - то уже не целая.
肏! Τίς πέπορδε;

myst

Цитата: Алексей Гринь от сентября 25, 2010, 17:14
Если линкуешься - то это целая программа, а если просто вызываешь - то уже не целая.
Логично. Я тебе про это тогда вроде и говорил.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр