Комментарии 31
Это же не перевод?! — тогда где Российская практика?

Какие еще 30000$ в РФ с кардинально другим законодательством по отношению к софтверным патентам?

Совершенно неважно, что происходит «там», какие то склоки, сутяжничество — другие законы, другие нравы

Основными нарушителями GPL являются нонейм и мелкие производители embedded систем, которые используют busybox, ядро Linux и другой GPL софт. В РФ таких производителей ничтожно мало, а может и нет. Плюс «там» любят сутяжничать. Согласен, практика подобных судебных процессов в РФ вызвала бы живой отклик.

она защищает свободу пользователя и программиста
Автор, видимо, не понимает смысла GPL. GPL защищает свободу не пользователя, а программного обеспечения, кода.

Код лицензированный под GPL должен всегда оставаться свободным. Всё. Free as a person.

А как раз пользователя лицензия GPL лишает свободы, свободы использовать код так, как ему захочется. Нельзя, например, взять чужую GPL-программу, портировать её на айфон и опубликовать в App Store, выложив в открытый доступ её исходники — такого GPL не позволяет, увы. Потому что после вашего компилятора на программу будет наложен аппсторовский DRM, который привяжет скаченный бинарник к аккаунту пользователя и сделает программу несвободной, даже если она бесплатна и к ней прилагается архив со всеми исходниками.

Я тоже сперва этого не понимал, пока не прочитал цитату Столмана: код должен быть свободным, free as a person.
Потому что после вашего компилятора на программу будет наложен аппсторовский DRM, который привяжет скаченный бинарник к аккаунту пользователя и сделает программу несвободной

Значит эппловское хранилище привяжет бинарник к аккаунту, программа станет несвободной. А причем тут GPL и почему именно она виновата в описанной ситуации? Пусть эппл не привязывает программу к аккаунту пользователя

А можно поподробнее? GCC вот привязывает программу к машине пользователя при компиляции. Чем этот вариант отличается от apple drm?

Я не знаю всех тонкостей и считаю, что дух GPL соблюдается, если предлагать программу в App Store бесплатно и публиковать её исходники, но умные ребята от GPL считают (обоснованно, насколько я понял), что буква лицензии нарушена.

Т.к. вы не являетесь автором, то и ограничения накладывать не можете.

Софт из appstore нельзя «исполнять как заблагорассудится», только на устройствах с appstore; drm, прицепленный к вашей программе, не распространяется открыто; а ещё вспомним eula appstore и договоры, навязываемые разработчикам под него. Так что свободный софт в appstore быть не может принципиально.
Софт из appstore нельзя «исполнять как заблагорассудится», только на устройствах с appstore;
Бессмысленный аргумент. Возьмите какую-нибудь GPL-программу под Linux — её вы тоже не сможете «исполнять как заблагорассудится», только на устройствах с подходящей версией Linux.

а ещё вспомним eula appstore и договоры, навязываемые разработчикам под него.
А что там? Напомните, пожалуйста.

Так что свободный софт в appstore быть не может принципиально.
Это принципиальная позиция буквоедов от GPL. А свободный софт может быть где угодно.
Возьмите какую-нибудь GPL-программу под Linux — её вы тоже не сможете «исполнять как заблагорассудится», только на устройствах с подходящей версией Linux.

Если правильно статически собрать, то запускать можно на любом современном Linux.

У меня тут Android 7 на телефоне — это же подходит под любой современый Linux?
Как мне правильно статически собрать и запустить на нём KDevelop, например? Или всё же нельзя «исполнять как заблагорассудится»?

Мне кажется Вы пытаетесь перекладывать с больной головы на здоровую. Больная голова — это вся инфраструктура DRM, запрет использовать открытое ПО на указанных условиях — соблюдая 4 степени свободы вполне понятен. Пример с TiVo очень показателен, свободный софт «где угодно» легко превратить в свою прямую противоположность.

На примере TiVo достаточно хорошо показано, что GPL отлично защищает также свободу конечного пользователя. Не совсем понял Ваш пример с AppStore. Если пользователь портирует код на другую платформу, внося изменения и затем выкладывает измененный сходный код в открытый доступ с той же самой лицензией, это и есть GPL. Хотя в таком случае это уже не совсем обычный пользователь а еще и разработчик.
В чем же ограничение его свободы?

Ограничение свободы пользователя-разработчика в том, что он не может портировать GPL-программу и распространять её через App Store — GPL запрещает это.
Думаю, это касается любых магазинов приложений, которые используют DRM, но мне известен только прецедент с App Store, когда кто-то портировал VLC Player на iOS, а разработчики оригинальной программы вынудили Apple удалить программу из-за нарушения GPL.
Не подождите. GPL обязывает вас выложить только ваши изменения. То, что потом на ваше приложение, или вовремя сборки вашего приложения навешивается drm не нарушает лицензию. Если потом пользователь может получить из любого другого места исходный код этого приложения и собрать его сам.
Тоесть GPL обязывает вас делится исходными кодами того что используется внутри и что было извемено.
Тут лицензию нарушает Apple, не предоставляя среду сборки (со всеми необходимыми приватными ключами).
Код лицензированный под GPL должен всегда оставаться свободным. Всё. Free as a person.

автор кода (если он один — вопрос ноль, если несколько, то нужно согласие), вполне может поменять лицензию у своего софта. Понятно, что всегда можно форкнуться от старой версии под "правильной" лицензией и продолжить развивать в другом русле.

К сожалению, во всех этих случаях правообладатель исходного произведения использовал GPL против лицензиата, который что-то не то с этим произведением сделал. Для этого GPL совершенно не нужна, достаточно обычного ортодоксального авторского права.
А нужна GPL для защиты пользователя — чтобы лицензиар, дав честное слово о том, что произведение будет распространяться свободно, не вздумал это слово забрать назад. В таких ситуациях свободные лицензии еще не проверялись.
Пример: Creation Workshop.
Автор закрыл программу, убрал исходники с гитхаба, форки тоже пропали (или я не умею искать?), а у пользователей остались только бинарники старой версии. Новая продаётся по $500.

Он обязан раздавать исходники еще три года после последнего релиза.


Если у вас есть старый бинарник, можно требовать исходники, тыкать носом в GPL и обещать написать в FSF.

Только следов под какой это было лицензией не осталось. В бинарях не ищется «GPL».
В «About» — free for non-commercial use. Так что может это была пивная лицензия.
Просто привёл случай закрытия, да и то, узнал о нём только на форуме.
а сработает ли такой трюк:
Берем библиотеку/программу под GPLv*
модифицируем её, допустим вставляем drm защиту, аппаратное ускорение и т.д.
компилируем и получаем бинарник А
далее компилируем девственный код билиотеки/программы без наших правок и получаем бинарник В
Далее находим бинарную последовательность С, такую что
B patch C = A
кладем в прошику бинари В и С, и в рантайме их патчим, что бы получить А
таким образом вроде как лицензия GPLv* не нарушается
Интересная мысль, и её можно дальше развить.

Берём бинарник A GPL-программы с официального сайта.
Прикладываем к нему бинарник B.
Пользователь запускает A, затем запускает B.
B подключается к A как отладчик, ставит в некоторых местах breakpoints и меняет состояние отлаживаемой программы / выполняет свои алгоритмы в некоторых точках.

Вроде как, изучать и дебажить GPL-программы не запрещено.
Другой вариант:

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

Что на это лицензия скажет?

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


Лицензия говорит на это вот что. Она оперирует понятием "derived work", "производное произведение". И производное произведение должно быть всё под GPL, целиком. Но если два "произведения" просто распространяются вместе, то GPL одного, на другое не распространяется. Это сделано, чтоб во всяких дистрибутивах Линукса, один GPL-ный пакет не заразил все остальные.


Так что, вопрос должен стоять так: комбинация и B и C в прошивке — это производное произведение или они просто лежат рядом? Окончательный ответ, конечно, может дать только суд. Но, например, ps | grep это не производное от ps и grep, потому что можно и ps и grep использовать независимо. А вот патч C явно сделан только для того, чтобы патчить B в памяти, так что B + C — это производное произведение от B и GPL на него распространяется.

С последним примером расширения через веб-сервисы очень просто.
Заявляется, что модификация исходников выполнена, чтобы получать данные (алгоритмы) из внешних источников. И исходники тестового веб-сервиса с тривиальными заглушками можно выложить.

А вот наличие нетривиального веб-сервиса — расширения как понимать? Как производная работа? Каким образом, если она никак не использует исходные коды GPL-приложения.

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

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

Как вообще ловят нарушителей? По совпадению в бинарнике достаточно большой длины (какой?) машинного кода? Наличие dll под GPL просто и понятно, а кусок в монолитном файле?
Полагаю, по каким-то особенностям работы программ, багам и т.д.
В древности составители карт вносили в них ошибки чтобы обнаруживать копии и доказывать авторство. Можно провести аналогию.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.