GPL вчера, сегодня и завтра

8 сентябрь, 2006 - 15:58Андрій Кухар

Лицензиям в сообществе FOSS (Free and Open Source Software) уделяют самое пристальное внимание. И это вполне закономерно, ведь здесь, в отличие от мира закрытого ПО, лицензионные условия, санкционирующие различные способы использования кода, крайне важны. Во многом от них зависит успех программного проекта.

GPL вчера, сегодня и завтра
Эмблема проекта GNU – стилизованное изображение антилопы-гну. Все аллюзии на внешность отца-основателя считать беспочвенными!

Что говорить, FOSS – явление более чем исключительное, и не столько по причине своей массовости (хотя, надо отметить, что до подлинного размаха ему еще далеко), сколько из-за самобытного характера объединения разработчиков на добровольных началах. Немалую роль в этом сыграла обладающая определенной жесткостью и даже спорностью требований, но при этом самая популярная лицензия на свободное и открытое ПО – GNU General Public License (GPL, для краткости). Так, по некоторым оценкам, сегодня на ее условиях поставляется около 75% всего FOSS-ПО, а это – десятки тысяч программ, среди них – ядро ОС Linux, GNU Compiler Collection (GCC), Samba, MySQL и др. Также многие известные приложения распространяются сразу под несколькими лицензиями, одной из них почти всегда выступает GPL. Кроме десктопов и серверных систем, GPL-ПО исполняется на мобильных телефонах, КПК, мэйнфреймах и кластерах. Приблизительное количество его пользователей оценивается сотнями миллионов. Приведенные данные дают основания предположить, что очень многие применяют в своей работе один или несколько GPL-пакетов. Поэтому отнюдь не лишним будет рассказ (без погружения в пучину юриспруденции) об истории данной лицензии, ее характеристиках и процессе подготовки новой, третьей, версии.

GPL 1 и 2

В далеком 1984 г. у Ричарда Столлмена (Richard Stallman), талантливого программиста лаборатории искусственного интеллекта Массачусетского технологического института (MIT), возникла идея формирования комплекса ПО, которое пользователи могли бы распространять и модифицировать свободно. Проект получил название GNU (напомним, что оно выбрано согласно неким хакерским традициям, как рекурсивная аббревиатура «GNU is Not UNIX»). Одним из главных мотивов Столлмена было то, что рожденная UNIX культура товарищеского сотрудничества при использовании, создании и изменении ПО, доминировавшая в 70-х годах, в начале 80-х постепенно начала вырождаться – программное обеспечение стало восприниматься как товар и при этом распространяться под лицензиями, запрещающими копирование и изменение. Большинство тогдашних программистов такая ситуация вполне устраивала, поскольку они были убеждены, что это закономерный результат индустриализации программной разработки.

Столлмен же считал иначе и выступил инициатором создания ОС и сопутствующих инструментальных средств, которые были бы доступны на условиях лицензии, разрешающей свободное использование, воспроизведение и модификацию кода. В 1985 г. он основывает неприбыльную организацию Free Software Foundation (FSF), в чьи обязанности входят поддержка проектов свободного ПО и формирование лицензий, отвечающих требованиям данного движения.

До 1989 г. для каждого пакета проекта GNU имелась специальная (ad hoc) лицензия, не предполагающая повторного использования. На самом деле текст был практически один и тот же, но в нем явно указывалось название программы. Естественно, возникла крайняя необходимость в универсальном документе, и таковым стал GNU GPL 1.

GPL, подобно любой лицензии, гарантирует определенные права при соблюдении некоторых условий. Так, согласно ей, лицо, получившее некое ПО, вправе:

  • копировать и передавать исходный код;
  • модифицировать и распространять его;
  • распространять скомпилированные версии ПО как с модификациями так и без них.

Но только при условии, что:

  • все распространяемые копии (с модификациями или без) содержат уведомление об авторских правах и отказ от гарантий;
  • все модифицированные копии распространяются также на условиях GPL;
  • все скомпилированные версии программы сопровождаются соответствующим исходным кодом или предложением о предоставлении исходного кода по требованию.

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

В 1991 г. увидела свет GPL 2. Изменения никоим образом не коснулись юридических основ, а затронули лишь некоторые формулировки, ведущие к неверному толкованию. Тогда же появилась и Library GPL (LGPL) – лицензия, несколько менее жесткая по сравнению с GPL и предназначенная для использования в тех особых случаях, когда необходимо совмещение свободных библиотек с частным ПО. LGPL вышла сразу в версии 2, показывая тем самым, что они дополняют друг друга с текущим релизом GPL. Однако параллельная нумерация прервалась в 1999 г. с выходом LGPL 2.1, где L образована уже не от Library, а от Lesser (меньший, малый). Таким образом новое название призвано отразить местоположение данной лицензии в общей философии GNU.

GPL 3

В сентябре 2005 г. FSF объявила о начале работ над новой версией GPL. Дело в том, что прослужившая без малого 15 лет GPL 2 уже не отвечает требованиям современности. За это время программная индустрия претерпела существенные изменения, появились новые технологии и типы ПО, такие как Web-программы, многофункциональные клиенты, хостинговые приложения и сервис-ориентированные архитектуры, не охваченные GPL. Кроме того, колоссальный рост числа решений с открытым кодом и масштаб их применения выявили ряд недочетов в лицензионных условиях, которые делают авторов уязвимыми для различных исков. Также текущая версия GPL не всегда совместима с другими FOSS-лицензиями. Она написана с учетом законов об авторских правах США, в связи с чем в прочих странах возникают некоторые трудности с корректным толкованием используемых понятий. GPL 3 (gplv3.fsf.org) призвана решить и эти, и другие проблемы.

GPL вчера, сегодня и завтра
Седоватая грива, хитрая улыбка, практически ленинский прищур – это Ричард Столлмен, последовательный и пламенный борец за свободное ПО

Разработка новой лицензии происходит следующим образом. С интервалом в четыре-пять месяцев выпускаются три дискутируемых черновика (discussion draft), после обнародования последнего (так называемого last call) в течение не более 45 дней будет представлен окончательный вариант. Особо интересно, что с момента публикации первого черновика в обсуждении может принять участие любой желающий, зарегистрировавшийся на сайте FSF. Сначала предложения об изменениях поступают в так называемые дискуссионные комитеты, в которые входят представители Google, Intel, AMD, Apple, IBM, Sun, Nokia, MySQL, Mozilla Foundation, Apache Foundation и пр. Здесь комментарии обсуждаются, взвешиваются возможные «за» и «против». Цель такого процесса – создание новых формулировок с учетом пожеланий и опыта всех заинтересованных сторон, но с безусловным сохранением приверженности принципам свободного ПО. Результатами работы комитетов далее занимается сам FSF, он же и принимает решение: внести коррективы в очередной черновик или отклонить с объяснением причины. Каждый вариант выпускается с сопутствующим пояснительным документом (rationale document), содержащим подробные описания любого изменения, вызвавшей его причины и потенциального эффекта.

16 января 2006 г. на первой международной конференции по GPL 3, которая состоялась в MIT, был представлен первый черновой вариант лицензии. В общем и целом, вопреки ожиданиям, редакция оказалась довольно умеренной. Естественно, многие хотели бы, чтобы GPL стала короче и проще, но получилось наоборот – GPL 3 длиннее и сложнее GPL 2. Это действительно больше лицензия, чем манифест.

Второй черновик появился спустя 7 месяцев (27 июля) – за это время были проведены международные конференции в США, Бразилии и Испании, а в систему комментариев FSF поступило более тысячи предложений. В результате первый вариант значительно изменился, но, хотя исправлений внесено довольно много, они, в основном, касаются нюансов и второстепенных вопросов.

В целом, наибольшей переработке подверглась часть, затрагивающая вопросы совместимости с другими лицензиями. Это очень важный момент, поскольку необходимо обеспечить бесконфликтное комбинирование кода, распространяемого с разными условиями. Теперь GPL 3 можно расширять некоторыми дополнительными требованиями (например, указанием авторских прав на исходный продукт во всех модифицированных вариантах). Пока достигнута ее совместимость с Apache Software License и Eclipse Public License.

В лицензию внесли специальный раздел, касающийся технологий защиты авторских прав на цифровой контент (Digital Restrictions Management, DRM). Однако, если в первом варианте использование GPL-ПО для обеспечения поддержки DRM было попросту запрещено, то во втором формулировки стали более нейтральными, а сам термин DRM в тексте даже не упоминается. Впрочем, на суть это существенно не повлияло. Сам Столлмен ситуацию вокруг «цифровых прав» охарактеризовал как tivoization – термин происходит от названия цифрового видеозаписывающего устройства TiVo одноименной компании. В нем применяется решение на базе Linux, следовательно, оно лицензируется в соответствии с GPL. Исходный код доступен, в принципе, его можно получить и усовершенствовать, однако после обратной загрузки новая версия просто не сможет работать, поскольку будет заблокирована встроенными DRM-механизмами (проверяющими контрольные суммы). Поэтому нынешний текст документа, не запрещая в принципе задействовать DRM в GPL-ПО, тем не менее требует вместе с исходным кодом предоставлять все используемые ключи и цифровые сертификаты, что, естественно, делает применение DRM практически бессмысленным, так как позволяет обойти защиту.

Чтобы придать лицензии глобальный характер для беспроблемного применения в странах, подписавших Бернскую конвенцию, сделаны первые шаги по денационализации терминологии. Понятия, в свое время заимствованные из закона об авторских правах США, постепенно заменяются адекватными нейтральными аналогами – этот процесс хорошо заметен и в первом, и во втором черновиках.

Был ужесточен пункт о лицензировании патентованного кода, дабы воспрепятствовать наложению ограничений на FOSS-ПО, используемое в коммерческих продуктах. Новая лицензия призвана исключить возможность патентования модифицированной версии ПО, защищенного GPL, и последующее судебное преследование тех, кто «незаконно» ею воспользуется. Чтобы еще больше подчеркнуть характер изменений, соответствующий раздел теперь называется «Патенты» вместо «Лицензирование патентов», поскольку в нем больше не рассматриваются аспекты патентных условий, а основным требованием является отсутствие каких бы то ни было претензий.

Интересным добавлением является положение, разрешающее распространение GPL-ПО по сетям peer-to-peer, таким как BitTorrent, без принятия лицензии и, соответственно, без предоставления исходного кода ПО.

Стоит также отметить, что вместе со вторым черновиком GPL 3 свет увидел и первый вариант LGPL 3, разработанный как частный случай GPL 3 посредством применения раздела о дополнительных условиях.

Будущее

Увы, оба черновика GPL 3 оказались объектом серьезной критики со стороны создателя ядра Linux, Линуса Торвальдса, решительно выступающего против распространения ядра на условиях новой лицензии. Ему прежде всего не по душе позиция FSF в отношении DRM, которая, по его мнению, может воспрепятствовать проникновению Linux в сектор потребительских устройств (цифровых видеорекордеров и пр.). Такую точку зрения Торвальдс выразил еще после ознакомления с первым черновиком лицензии, но и второй не изменил его мнения.

Перевод Linux на новую лицензию затруднен и тем, что для ядра ОС применяется GPL 2. В отличие от GPL, в которой имеется формулировка, автоматически переводящая ПО под юрисдикцию будущих версий лицензии, GPL 2 для этого требует получение согласия всех лиц, причастных к разработке. Здравый смысл подсказывает, что найти всех тех, кто за полтора десятилетия вносил какие-либо изменения в код ядра, практически невозможно.

Тем не менее процесс подготовки GPL 3 продолжается. В конце августа в Индии должна состояться четвертая международная конференция по GPL 3, а в октябре на Дальнем Востоке – пятая, после которой (или, возможно, во время ее проведения) будет обнародован третий черновик. Окончательный вариант документа, предположительно, появится в I квартале (иногда называется и более точная дата – 15 января) 2007 г.