Как закалялась GPL

    С тех самых пор, как появились лицензии открытого кода, появился соблазн проверить их на прочность. GNU Public License самая бескомпромиссная среди них, она защищает свободу пользователя и программиста от присвоения результатов чужого труда, подмены открытого и общедоступного продукта, закрытым и платным. Не удивительно, что именно GPL чаще всего нарушают малые, средние и даже крупные компании.





    Принуждение к соблюдению условий GPL является вопросом стратегической важности для открытого сообщества и легко понять почему это так. GPL является краеугольным камнем, точкой сбора сообщества и его самых принципиальных сторонников. Из них самый известный — основатель GNU и автор GPL — Ричард Столлман. Давайте узнаем как сообщество борется с нарушителями лицензии, кто нарушал и продолжает нарушать GPL и как экспроприируют экспроприаторов открытого кода.


    GPL и Copyleft


    GPL, по словам одного из ястребов Software Freedom Conservancy Bradley M. Kuhn, является Конституцией Мира Свободного ПО. В ней определены четыре основных положения, четыре степени свободы хакера.


    • свобода исполнять программу как заблагорассудится, (степень свободы 0);
    • свобода изучать программу и ее исходный код для того, чтобы понимать как она работает (степень свободы 1);
    • свобода распространять программу, дабы помочь ближнему своему (степень свободы 2);
    • свобода распространять изменения и улучшения в программе (степень свободы 3), чтобы сообщество могло воспользоваться вашими наработками.

    Первая версия лицензии появилась в 1989 г. GPL v1 решал следующие проблемы.


    1. Производитель программного продукта отдает не код, а только бинарники. Чтобы не допустить этого, одно из требований к производителю программы — распространять годный для человеческого прочтения исходный код.
    2. Производитель программного продукта может накладывать дополнительные ограничения. Дабы этого не случилось в тексте лицензии сказано, что все изменения вносимые в код также должны стать всеобщим достоянием.

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


    TiVo





    Ричард Столлман опубликовал GPL v3 в 2007 г. Третья версия защищала свободу пользователя от новых угроз, таких как тивоизация и мутная сделка между Microsoft и Novell. В основном изменения были вызваны тем, что TiVo нашла лазейку в GPL v2, предоставив пользователю обманку вместо первой степени свободы.


    В фильме Солдаты Неудачи герой Мэттью МакКонахи весь фильм пытается его заполучить для своего друга цифровой видеоплеер TiVo. Скорее всего это была первая версия, так как от второй TiVo не все были в восторге. Дело в том, что первую можно было как угодно изменять и настраивать — это же Linux, а во второй версии вся халява закончилась.


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


    В результате изменений, пользователь более не мог изменять прошивку и делать все то, что можно было в прежней версии, несмотря на то, что GPL дает пользователю такое право. Однако, аппаратные ограничения устройства не были прописаны в GPL v2, чем и воспользовался производитель TiVo.


    Что же касается сделки между Microsoft и Novell, то это была та самая монополия Стива Баллмера, которая шла напролом и по костям, думая, что все рынки можно подмять так же, как получилось с десктопами. Вкратце, Microsoft стала распространять FUD, смысл которого в том, что патентному преследованию не будут подвергнуты лишь пользователи Novell SUSE Linux. Якобы ядро Linux, нарушает энное количество патентов, но монополия на это закроет глаза, если пользователь выбирает правильный SUSE Linux. Впрочем Ричерд Столлман свое дело знал и составил GPL v3 так, что опасность такого дискриминационного патентного преследования была нейтрализована.





    Компания Microsoft сделала несколько ошибок в договоре с Novell, и GPLv3 составлена так, чтобы обернуть их против Microsoft, расширяя эту ограниченную защиту от патентов на все сообщество. Чтобы воспользоваться этой защитой, программам нужно применять GPLv3.

    Как работает GPL в теории и на практике


    Теоретическим обоснованием GPL является следующее:


    • авторское право — институт гражданского права, который действует в международном масштабе и определяет права создателя на свое произведение;
    • используя лицензию на авторское право, предоставлять разрешение на пользование и распространение;
    • условием предыдущего является предоставления четырех степеней свободы пользователям;
    • так copyright превращается в copyleft.

    А теперь о том, как все происходит на самом деле.


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


    Сомнительная слава первого нарушителя GPL принадлежит, ни много ни мало, компании NeXT и ее основателю Стиву Джобсу. Компания вовсю использовала свои наработки gcc, но открывать исходники не торопилась. В NeXT намеревались оставить Objective C закрытым, предоставив только бинарные *.o файлы для линковки из gcc, но RMS и FSF сумели настоять на своем.





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


    FSF против Cisco


    Довольно долго Linksys, купленный Cisco Systems, вовсю использовала gcc, binutils, glibc распростроняемые под GPL, при этом жадничала и исходников не раскрывала. Что характерно, Cisco к тому времени вполне масштабно участвовала в разработке ядра Linux, являлась почетным золотым участником Linux Foundation.


    Впервые FSF указал на нарушение условий GPL аж в 2003 г. В Cisco покивали головой, пообещали все исправить, но ничего так и не сделали. Через 5 лет терпение FSF лопнуло и они подали судебный иск, который закончился полной победой поборников открытого кода. Cisco замирилась с FSF путем денежного взноса неизвестной суммы и открыв исходный код в соответствии с требованиями лицензии.


    Jacobsen против Katzer


    13 августа 2008 г. апелляционный суд США признал по делу Jacobsen vs. Katzer, что свободная лицензия Artistic License является значимой в рамках законодательства по авторскому праву. Суд определил Artistic License, Creative Commons, GPL как лицензии со значимыми условиями, что делает их субъектами закона об авторском праве, а не просто коммерческого договора. Согласно американскому законодательству нарушение значимых условий лицензии авторского права является нарушением самого авторского права. В то же время, если бы положения лицензии были бы признаны договорными, то их нарушение рассматривалось бы в рамках контрактного законодательства, что значительно усложняет выплату компенсаций и определение размера ущерба для лицензий открытого кода.





    Из-за чего возник судебный иск? Компания Jacobsen написала программное обеспечение для управления моделями поездов. В Katzer использовали код JMRI, нарушив требования достаточно либеральной Artistic License, при этом сами охотно судились с конкурентами, запугивая их своими патентами.


    Важность данного разбирательства состояла в том, что впервые в суде США рассматривалось дело о нарушение открытой лицензии. К тому же Artistic License опирается на ту же концепцию значимых условий в авторском праве, на которой держатся Creative Commons, GPL и остальные лицензии открытого кода. Тот факт, что суд ссылается на них в обосновании решения, позволяет разработчиком открытого ПО рассчитывать на благоприятные решения по другим делам о нарушении их авторских прав. Тому способствует прецедентное судопроизводство в США.


    Welte против Fantec


    В июне 2013 г. земельный суд Гамбурга признал компанию Fantec виновной в нарушении условий GPL. Мультимедийный проигрыватель FANTEC 3DFHDL в одной из прошивок содержал межсетевой экран netfilter/iptables лицензированный под GPLv2. Попытки договориться не увенчались успехом, после чего Harald Welte — один из разработчиков iptables — подал в суд на нарушителя конвенции лицензии. В деле Harald Welte[1] против Fantec GmbH суд обязал ответчика выплатить штраф в размере 7000 € и оплатить все судебные издержки.


    Компания FANTEC попыталась отбиться от обвинений, ссылаясь на то, что прошивку написал и установил китайский подрядчик, который заверил FANTEC в том, что лицензии в порядке. Суд однако счел подобные оправдания недостаточными.


    Artifex против Hancom


    Продолжается судебный процесс по делу Artifex[2] против Hancom[3] и последние новости дают повод для оптимизма. В федеральном окружном суде Северного Калифорнийского сектора рассматривается иск компании Artifex против против южнокорейской фирмы Hancom.


    Пакет GhostScript распространяется под двойной лицензией: Affero GPL и коммерческой. Открытая лицензия используется в привычном смысле, обеспечивая 4 степени свободы пользователям и разработчикам ПО, не использующим продукт в коммерческих целях. Для остальных предусмотрена коммерческая лицензия, когда есть необходимость использовать пакет в составе закрытых продуктов, не открывая исходный код. Южнокорейская компания посчитала, что можно хакнуть систему и выбрала третий путь — использовать в своих закрытых программах код Ghostscript за просто так, отказавшись от покупки коммерческой лицензии.


    Офисный пакет ThinkFree Office для ОС Андроид





    После обнаружения факта поставки Ghostscript в продуктах Hancom компания Artifex пыталась договориться с нарушителем, предлагая тому выкупить коммерческую лицензию задним числом для проданных уже экземпляров программы, однако получила отказ. Ответом Artifex стал судебный иск к южнокорейской компании. Аргументация Hancom состояла в том, что рассматривала условия поставки Ghostscript как договор, который не подписывала и свое согласие с его условиями нигде не фиксировала. Не удивительно, что этот довод не сработал.


    Суд отклонил ходатайство Hancom о прекращении разбирательства. Вся загвоздка в том, что GPL в связке с коммерческой лицензией рассматривается в суде как договор, попадая тем самым в область договорных отношений. Данная позиция резко отличается от точки зрения Фонда СПО, который не считает GPL договором ввиду того, что пользователь вообще не имеет права действовать в обход лицензии в то время, как договор подразумевает наличие сделки, выгоды и добровольного согласия.


    Для правообладателя есть определенные выгоды быть истцом в деле о нарушении авторских прав вместо того, чтобы искать правды в деле о нарушении контракта. Контрактное право тяготеет к денежным компенсациям и исчислимым определениям материального ущерба, как раз того, что нелегко посчитать и предъявить создателям открытого ПО. Непонятно каким способом добиться желаемого результата — открыть исходный код программы по решению суда. С нарушением авторского права гораздо проще получить желаемое. Еще есть установленные законом штрафы, 30,000$ за каждое нарушение, или 150,000$ в случае злостного нарушения.


    Пока что результат в пользу компании Artifex, но сам факт рассмотрения нарушения GPL в рамках контрактного права чреват новыми манипуляциями проприетарщиков. Надеемся, ждем, верим.


    В заключение


    Может сложится впечатление, что сторонники открытого ПО выигрывают все судебные процессы, но на самом деле это не так. В деле SFLC против VMWare пока все складывается не в пользу истца. SFLC и FSF не успевают за нарушителями их сотни и на этом уже пытаются нажиться морально неустойчивые хакеры. Однако об этом следует рассказать отдельно.


    Использованные материалы


    1. GPLv3: краткое руководство
    2. Samba, GPL enforcement and the GPLv3
    3. GNU GPL, LGPL, Apache licence Types and Differences
    4. Суд посчитал, что GPL попадает в область договорных отношений
    5. Jacobsen v. Katzer: The Federal Circuit Weighs in on the Enforceability of Free and Open Source Software Licenses



    1. Создатель веб ресурса GPL violations, один из разработчиков iptables.
    2. Разработчик пакетв Ghostscript для просмотра pdf и PostScript документов.
    3. Создатель офисного пакета ThinkFree Office.
    Support the author
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 31

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                          Так и указывайте GNU/Linux, Android и т.д.

                        –1

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

                  0

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

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

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

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

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


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

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

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

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

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

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

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


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


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

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

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

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

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

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

                            Only users with full accounts can post comments. Log in, please.