При создании собственных проектов для экономии ресурсов разработчики часто используют код, который распространяется авторами на свободных лицензиях. Бытуют различные мнения о юридическом аспекте такого использования. Одни разработчики думают, что код, который распространяется под свободной лицензией можно просто включить в свой и распространять уже под своей лицензией. Другие разработчики считают, что если включить с свободный код в свой код, то придется обязательно выложить исходники своего в общее пользование и непременно под лицензией использованного чужого кода (эффект ВИЧ). Они же могут думать, что за передачу такого приложения не может взиматься плата. Тоесть если вы собрали дистрибутив чего бы то ни было из массы отдельных программ и библиотек, которые распространяются под свободной лицензией, то продать эту свою сборку вы не можете даже если там будет и ваш код. Кто же прав? Об этом пойдет речь в серии статей о свободных лицензиях. Попробуем разобрать несколько наиболее известных лицензий для свободного ПО и сделать выводы. Данная же статья открывает серию и рассказывает о лицензии GPL2. Это одна из самых известных лицензий. Правы ли те кто думает, что передать такую программу за вознаграждение незаконно? Уже в преамбуле лицензионного соглашения говорится:
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
Что означает следующее:
Говоря о свободном программном обеспечении, мы имеем в виду свободу, а не безвозмездность. Настоящая Стандартная Общественная Лицензия разработана с целью гарантировать вам право распространять экземпляры свободного программного обеспечения (и при желании получать за это вознаграждение), право получать исходный текст программного обеспечения или иметь возможность его получить, право вносить изменения в программное обеспечение или использовать его части в новом свободном программном обеспечении, а также право знать, что вы имеете все вышеперечисленные права.
Как мы видим брать плату за программу выпущенную под GPL2 можно, но обязательно надо дать доступ к исходным кодам этой программы. Получив программу лицензированную под GPL2 вы получаете все те права, которые имело лицо вам ее передавшее. О чем и рассказывается в преамбуле далее. Если вы внесли изменения в такую программу, то ваша программа должна распространяться только под лицензией GPL2 (Если только автор вам не продаст эксклюзивные права на нее). Файлы должны содержать хорошо заметную пометку об авторе и времени внесения изменений. Если вы планируете передавать вашу производную от полученной программу другим лицам в скомпилированном виде, то к каждому экземпляру необходимо приложить исходные коды или информацию о том как можно получить этот код. Но если за передачу такого кода взимается плата, то она не должна превышать стоимость передачи. Тоесть нельзя продать вашу программу, которая под GPL, а потом отдельно продать ее исходные коды. Если вы хотите включить ПО, находящееся под GPL в свое ПО, которое находится под другой лицензией, то вы можете так же попробовать получить такое разрешение от автора программы.
Существует так же GNU Lesser General Public License (LGPL). Это ограниченная лицензия GPL, которая разработана для библиотек. Ведь библиотека это не отдельная программа. А не всегда справедливо передавать весь исходный код приложения клиенту (покупателю) лишь потому что в какой-то его части использовал библиотеку с открытой лицензией. Поэтому LGPL позволяет линковаться открытой библиотеке даже с закрытым кодом. Если вы продаете программу использующую открытую библиотеку, то вы прилагаете исходники только к библиотеке. Однако если вы модифицируете библиотеку, то модифицированная версия должна распространяться под лицензией LGPL. Кстати произведение производное от библиотеки так же должно быть библиотекой. Если создатель библиотеки изменит лицензию с LGPL на GPL, то обратный переход будет уже невозможен.
Рассмотрим 2 примера, чтобы усвоить.
Первый
Ситуация: Вы нашли заказчика или он нашел вас. Вам требуется написать web-сервис, у которого имеется очень слабый, но открытый аналог под лицензией GPL. Клиенту нужен этот сервис для того, чтобы он работал на его сайте. Он не собирается его продавать как отдельный движок массово.
Решение: Вы вполне можете дописать (улучшить) открытый движок, взять за это вознаграждение от клиента. Передать ему обязательно исходный код, содержащий в том числе пометки о сделанных изменениях и под лицензией GPL. Выкладывать ваш исходный код, для того, чтобы им пользовались все подряд и скачивали за бесплатно не требуется.
Второй
Ситуация: Опять же у вас есть клиент, но на этот раз клиент желает сделанный вами продукт продавать в больших количествах. Дописывать существующий движок на GPL не представляется возможным в данном случае. Так как первый из клиентов клиента, кто решит раздавать данное ПО бесплатно, сделает исходный код общедоступным и покупать его потом вряд ли кто будет.
Решение: Однако вы можете использовать в своем проекте библиотеку, которая лицензируется под LGPL. При продаже вашего продукта, вы должны передать клиенту исходные коды данной библиотеки, но не всего вашего продукта. Сама по себе библиотека не даст получателю возможность развивать данное ПО серьезным образом. Поэтому данное ПО можно будет продавать сколь угодно много раз. Конечно же ваш клиент захочет получить и исходные коды всего приложения в целом, чтобы развивать его (наверняка вы договоритесь с ним именно так). Но все же он уже имеет право не предоставлять исходные коды своим клиентам, что должно прекрасно согласоваться с его потребностями.
Вот пожалуй и все. Теперь вы знаете чем “чревато” использование ПО находящегося под действием GPL.
Tags: GPL, opensource, лицензии
Сайт хороший. Много вопросов рассмотрено. Мне не понятен один момент.
Допустим, я программист-одиночка, ИП. Программирую на Си и С++. Компиляторов на эти языки превеликое множество. Могу ли я использовать те компиляторы под вышеперечисленной лицензией, чтобы продавать свои собственные приложения, написанные с нуля, используя лишь стандартную библиотеку ? Или стандартную в сочетании со своими же библиотеками, написанные и скомпилированные при помощи этих же компиляторов под GPL без опубликования исходников? Если нет - выходит в мире не существует вообще компиляторов, при помощи которых можно скомпилировать, продать и не опубликовывать исходников? Либо покупай компилятор и продавай - либо не покупай и продавай, но раскрывай все тайны….тупик..Есть правда компилятор от Watcom,но тоже непонятно с лицензией. Доступно для коммерческого использования..А коды при этом надо опубликовывать? - нигде не сказано! Я понимаю там , дополнительные библиотеки,чьи-то, но основные, базовые-то? Нигде об этом толком не сказано! Это как в мультфильме про матроскина: корову взяли напрокат, а телят, которых она рожает - это уже наше!
Спасибо за тему…многое рассмотрено, но ещё большее осталось в тени…Удачи!
На мой взгляд, компиляторы тут не причем. Дело в том какие библиотеки и какой исходный код вы используете в работе. Если вы взяли кусок GPL-программы и добавили в свой проект, то ваш проект автоматически становится GPL-проектом. Если вы линкуетесь к библиотеке под LGPL, то ваша программа идет под вашей лицензией и библиотека на нее не влияет.
Таким образом, лучше конкретизируйте ваши вопросы. Иначе я прямо не знаю как на них ответить.
У Watcom своя лицензия. Ее надо читать чтобы понять какие ограничения она накладывает.
Исходники публиковать не надо к GPL-прогам. Просто их надо передавать тому, кому вы продали бинарник.
И еще прошу не используйте форму обратной связи, а используйте форму комментариев внизу статьи. Комментарии, которые были отправлены не через надлежащую форму обрабатываются с большой задержкой.
Юрий прав. Любой компилятор, тот же GCC потребует включения библиотек, без этого программировать вообще не удастся. Для того чтобы написать Hello World мне нужно написать инструкцию #include в начале программы. iostream - заголовочный файл стандартной библиотеки C++. Которая в свою очередь входит в компилятор GCC, распространяемый под GPL. Соответственно, все программы на C++ скомпилированные в GCC будут включать код этой библиотеки и должны распространяться под GPL. Приплыли.
Тут одно из двух. Либо действительно в мире не существует вообще компиляторов, при помощи которых можно скомпилировать, продать и не опубликовывать исходников. Либо Вы неверно трактуете GPL. Я (в скобках) склоняюсь к последнему.
Дело в том, что я не занимаюсь разработкой на C++. В мире веба область применения С++ очень узка. А поэтому не могу на 100% полно ответить на вопрос Юрия. Но и совсем не помочь тоже не хотелось бы.
Так вот, GPL - юридический документ. А в юридических документах очень важен каждый термин. Поэтому я и стараюсь сказать, что компилятор - это компилятор, а библиотеки - это библиотеки. Это казалось бы вещь очевидная. Но вы не поверите как часто мы забываем об это и начинаем путать эти понятия, когда вопрос юридический.
Второй момент. Любой юридический документ надо читать полностью. И то что мелким шрифтом надо читать тщательнее. К чему я это? К тому, что погуглив немного я нашел, что для библиотек GCC имеются исключения в лицензии. https://www.gnu.org/licenses/gpl-faq.ru.html#LibGCCException
Подробнее о них можно прочитать тут https://www.gnu.org/licenses/gcc-exception-faq.html
Я сильно не вчитывался. Лишь быстро пробежался по абзацам. Из того я заключил, что специально для такого случая как у Юрия библиотеки GCC являются не совсем GPL. Их объектный код можно включать и в приложение с закрытыми исходниками. Надеюсь, Юрий и все, кого это интересует, с помощью этих ссылок ответят на свои вопросы.
Третий момент. Вы упорно пишите слово “опубликовать”. Но, даже для приложения полностью на GPL, публиковать исходников не надо. Надо лишь отдавать исходники тому, кто будет использовать ваше приложение. Если вы написали GPL-программу для клиента Петрова, то вам совершенно нет необходимости публиковать исходники, чтобы их качал кто угодно. Вы можете передать Петрову исходники и все на этом.
Правда если сам Петров решит опубликовать эти исходники, то это его право. Вот и ссылка подтверждающая это https://www.gnu.org/licenses/gpl-faq.ru.html#GPLRequireSourcePostedPublic . А еще я приводил ранее цитаты из GPL на эту тему.
Четвертый момент. Почему же вы обсуждаете только GCC и из этого обсуждения делаете выводы, что “в мире не существует вообще компиляторов, при помощи которых можно скомпилировать, продать и не опубликовывать исходников.”? Ведь даже мне, человеку знакомому с С++ лишь отдаленно понятно, что есть еще компиляторы и наборы библиотек кроме GCC. А так же инструменты не под GPL. Но конечно надо читать внимательно их лицензии и гуглить…
Пятый момент. Если вы все же решите читать лицензии других библиотек и компиляторов, напомню про LGPL, которая не обязывает открывать исходники приложения, если вы не меняли саму библиотеку. А так же подкину идею с динамическим линкованием библиотеки. На сколько я знаю сейчас до сих пор идут споры является ли приложение GPL-лицензируемым, если оно линкуется с GPL-библиотекой динамически и не поставляется с ней. В эту сторону тоже стоит погуглить.
Надеюсь, что я как-то помог Юрию. Жаль конечно, что у меня нет времени досканально изучить вопрос с С++ компиляторами и библиотеками.
А еще, если вы собираетесь массово продавать программу, которая принесет прибыль вам, то может стоит смотреть в сторону коммерческих библиотек и компиляторов? Все равно же окупится.
не пойму. если веб сервис под gpl то нужно ли передавать исходники всем пользователям или только заказчику сервиса?
На мой взгляд, только заказчику.