Author Topic: gcc как toolchain в коммерческом продукте  (Read 4567 times)

0 Members and 1 Guest are viewing this topic.

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

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


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

Offline злой

  • Posts: 10436
  • Gender: Male
Вам куда-нибудь на РСДН.
Телевизор сильнее холодильника

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

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

Offline Juif Eternel

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

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

  • Posts: 24128
  • Gender: Male
Нет, о другом.

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

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

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

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

Offline Juif Eternel

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

Offline amdf

  • Posts: 3421
  • Gender: Male
  • амдф
    • hex.pp.ua
А почему бы просто вдумчиво не почитать лицензию?

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

Offline myst

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

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

  • Posts: 24128
  • Gender: Male
Какой лицензии? Коммерческого продукта? GPL?
Quote
С версии 4.2.2 GCC перешёл на лицензию GPLv3.
Получается, моя теоретическая гадкая коммерческая лицензия (Evil Restrictive Grinj License, ERGL) + GPL-нутый gcc.

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

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

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

Offline myst

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

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

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

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

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

Offline myst

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

Тут подразумевается запуск человеком, нет?
Что значит запуск человеком? Процесс создаётся системным вызовом, вызов этот в любом случае делает программа, а не человек.

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

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

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

  • Posts: 24128
  • Gender: Male
Что значит запуск человеком? Процесс создаётся системным вызовом, вызов этот в любом случае делает программа, а не человек.
Ну, как осознанный целенаправленный акт — «я запускаю gcc» :)

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

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

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

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

Offline myst

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

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

вписыванию себя единоличным автором
Авторство — это вообще отдельная вещь.

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

  • Posts: 24128
  • Gender: Male
А вот если у меня идёт технически не "линковка", а допустим просто вызов (через шелл) — то не понятно, это тот же случай, или другой?


Нашёл:
Quote from: GPL 2
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.

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

Offline myst

  • Posts: 35589
GCC под GPL 3 же.

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

  • Posts: 24128
  • Gender: Male
Ой, это Frequently Asked Questions about the GNU Licenses.

Полная цитата:
Quote
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.

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

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

Offline myst

  • Posts: 35589
Если линкуешься - то это целая программа, а если просто вызываешь - то уже не целая.
Логично. Я тебе про это тогда вроде и говорил.

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: