Код
#статьи

Гайд по свободным лицензиям от GNU: что это такое и какими они бывают

Если вы собираетесь или уже использовали код из открытых репозиториев в своих проектах, то этот юридический ликбез убережёт вас от многих проблем.

Иллюстрация: Wikimedia Commons / Moon Bhuyan / Anete Lusina / Pexels / Polina Vari для Skillbox Media

Когда вы используете код из GitHub или GitLab в своих программах, то автоматически принимаете условия лицензии и вступаете в юридические отношения с авторами софта. Иногда разработчики забывают об этом, заливают код в коммерческий проект, а потом их компании прилетает судебный иск. Чтобы спать спокойно и избежать споров, надо раз и навсегда разобраться в свободных лицензиях.

Какими бывают свободные лицензии

Юрист в области цифрового права и преподаватель Высшей школы экономики Александр Савельев классифицирует свободные лицензии по условиям и совместимости между собой.

По условиям выделяют две группы:

  • Взаимные лицензии — они обязуют пользователя распространять модифицированную программу на тех же условиях, что и исходную. Такие лицензии ещё называют вирусными, потому что они «заражают» производный софт своими условиями. К таким лицензиям относятся все виды GPL (General Public License), LGPL (Lesser General Public License) и AGPL (Affero General Public License).
  • Разрешительные лицензии — содержат минимум пользовательских требований и разрешают создавать проприетарный софт на основе исходной программы. С другой стороны, разрешительные лицензии не позволяют автору исходного кода контролировать судьбу модифицированной версии ПО. К разрешительным относятся лицензии BSD (Berkeley Software Distribution License), MIT и Apache.

Совместимость лицензий означает, что программы, распространяемые под этими лицензиями, могут быть объединены или код одной программы может быть использован в другой. Разрешительные (или, как их называет Ричард Столлман, «безрассудно либеральные») лицензии в основном совместимы между собой, а вот версии GPL — нет.

Здесь нет никакой ошибки. Несовместимость копилефтных лицензий вытекает из их природы. В GPLv2 написано, что производная программа должна распространяться под GPLv2, а в GPLv3 — под GPLv3. Производная двух программ, защищаемых разными версиями, просто не сможет удовлетворять этому условию.

А вот разрешительные лицензии BSD и Apache 2.0 совместимы, потому что не содержат жёстких требований по лицензированию. В производимом продукте нужно лишь указать лицензии исходных программ.

Чтобы определить совместимость более сложных лицензий, нужно внимательно проанализировать их тексты. Если лицензии несовместимы, но пользователь хочет объединить программы, он может договориться с разработчиком исходного кода о перелицензировании.

А теперь перейдём к конкретным лицензиям, а именно к GPL и её «потомкам».

GNU General Public License — основная копилефтная лицензия

GNU GPL (General Public License) — первая в истории свободная лицензия. Её создал Ричард Столлман, автор проекта GNU и основатель Free Software Foundation (далее FSF). Изначально Столлман написал отдельные лицензии для GNU Emacs, отладчика GDB и компиляторов GCC, а потом обобщил их и создал первую версию GPL.

Напомним, что свободное программное обеспечение и Open Source — это не одно и то же. Свободные программы распространяются исключительно по взаимным лицензиям, а опенсорсные — по взаимным и разрешительным. Если активистов FSF беспокоят этические проблемы свободного софта, то представителей Open Source Initiative — бизнес-модели, которые можно построить на его основе.

Тем не менее оба направления часто объединяют под общим названием FOSS (Free and Open Source Software). Ранее мы рассказывали, как бизнес научился зарабатывать на модели FOSS.

Новая лицензия предоставляла пользователю софта, который она защищает, четыре свободы:

  1. запускать программы в любых целях;
  2. изучать код программ и адаптировать под свои нужды;
  3. распространять код программ;
  4. улучшать программы и распространять улучшенные версии.

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

Тем самым достигаются цели движения за свободное ПО: свобода сотрудничества при создании программ. Также важно, что это сотрудничество продолжается и тогда, когда автор первоначальной программы прекратил работу над ней, а пользователи по-прежнему заинтересованы в её разработке и улучшении.

Модифицированная программа — это программа, в которой использован исходный код первоначальной программы или его часть.

GPL предупреждает, что свободное программное обеспечение предоставляется «как есть». То есть автор не даёт гарантий качества и не несёт ответственности, если программа причинит вред пользователю. Кроме того, один из пунктов лицензии сильно ограничивает применение свободного софта в коммерческих целях:

«Вы обязаны предоставить всем третьим лицам лицензию на бесплатное использование каждого произведения, которое вы распространяете или публикуете, целиком, и которое полностью или частично содержит Программу или какую-либо её часть, на условиях, оговорённых в данной Лицензии».

Пункт 2b лицензии GNU GPL

Сегодня первая версия GNU GPL относится к архивным версиям, FSF не называет её в списке действующих лицензий.

GPLv2

Уже в 1991 году Столлман понял, что погорячился: желающих защищать программы и, в частности, библиотеки настолько «заразной» и радикальной лицензией нашлось немного. Поэтому он выпустил GPLv2, из которой выкинул пункт об обязательном предоставлении бесплатного доступа.

Ричард Столлман. Фото: Wikimedia Commons

GPLv2 стала популярной среди дистрибьюторов библиотек. Вместе с ней выпустили GNU Library General Public License, в которой слово Library позже заменили на Lesser.

Во второй версии появился принцип «свобода или смерть»: если пользователь программы не может реализовывать четыре свободы, то она не должна распространяться.

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

Вот что разрешает GPLv2:

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

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

Наибольшую популярность GPLv2 получила благодаря тому, что Линус Торвальдс выбрал её для ядра Linux. Оно и сейчас остаётся под этой лицензией.

Примеры других проектов, которые распространяются под GPLv2:

  • Adium — мессенджер для macOS, который может взаимодействовать с протоколами XMPP, IRC и другими;
  • Git — распределённая система контроля версий;
  • Miranda IM — мессенджер для Windows;
  • Okular — приложение для просмотра документов графической среды KDE;
  • «Пульс Валют» — приложение для Android, которое предоставляет актуальную информацию по курсам валют в банках Беларуси и России.

GPLv3

В 2005 году Ричард Столлман и Эбен Моглен, юрист FSF, начали работать над третьей версией GPL. Она должна была решить несколько важных задач, возникших к тому моменту, а именно:

  • защитить пользователей от патентных исков;
  • противостоять «тивоизации»;
  • стать совместимой с другими популярными свободными лицензиями, такими как Apache 2.0. и GNU Affero.

В 2006 году начались консультации и согласования изменений, в которых участвовали FSF, Правовой центр свободы программного обеспечения и Европейский фонд свободного программного обеспечения. При этом Линус Торвальдс заявил, что ядро Linux, скорее всего, продолжит распространяться под GPLv2. Его категорически не устраивало условие, касающееся запрета тивоизации: это существенно ограничивало использование ядра Linux.

«Я думаю, что это сумасшествие — требовать от людей сделать свои приватные ключи общедоступными. Поэтому сомневаюсь, что ядро (Linux. — Прим. ред.) будет преобразовано под GPLv3, поскольку лично я не хочу преобразовывать что-то, касающееся моего кода».

Линус Торвальдс,
создатель ядра Linux

Эбен Моглен. Фото: Eben Moglen / Flickr

Тем не менее, когда возник вопрос о том, под какой лицензией выйдет ОС Solaris, Торвальдс всё же допустил, что Linux переедет под GPLv3 «во избежание путаницы с лицензиями». Однако Sun, разработчик ОС, остановила свой выбор на собственной Common Development and Distribution License (CDDL). Она позволяет совмещать открытый и закрытый код и несовместима ни с одной из версий GPL.

GPLv3 вышла в 2007 году — на момент публикации статьи это последняя версия GPL. FSF рекомендует использовать её для большинства программных пакетов.

Лицензия позволяет третьим лицам вносить изменения в программу под нужды конкретного пользователя. При этом они не обязаны открывать исходный код частных модификаций. Вот вам один из способов извлечения прибыли из свободного ПО: поскольку эти «третьи лица» действуют от имени пользователя, они могут получать вознаграждение за свою работу. Кроме того, пользователь имеет право исключать из текста лицензии дополнительные условия, добавленные авторами программ, и добавлять свои.

В GPLv3 есть и новые условия реализации прав:

  • Автор обязан предоставить пользователю права на патенты, если какие-либо части программы ими защищены.
  • Распространитель не должен прибегать к техническим средствам защиты ПО, которые ограничивают права пользователя. Например, если программа использует криптографические ключи доступа, пользователь должен получить их по первому требованию (запрет тивоизации).
  • Производители компьютерных устройств должны содействовать пользователям, модифицирующим программу, чтобы модифицированная версия запускалась и работала на их устройствах.

Появились и новые термины: propagation (использование) и convey (передача). Любое использование программы без лицензии считается нарушением авторских прав. А передача возможна, только если приняты все условия лицензии.

Важный нюанс: взаимодействие пользователя с программой через интернет без создания копии в GPLv3 не считается «передачей». Это означает, что ограничения не действуют, когда программа распространяется по модели SaaS — ведь в этом случае не создаётся её копия.

Примеры продуктов, где используется GPLv3:

  • GNU Compiler Collection — набор компиляторов для разных языков программирования;
  • GNU GRUB — загрузчик операционной системы;
  • Booktype — приложение для создания, редактирования и опубликования книг в форматах PDF, ePub, ODT и HTML;
  • Blender — профессиональное ПО для создания 3D-графики;
  • Newscoop — CMS, написанная на PHP и использующая MySQL в качестве хранилища данных.

GNU Lesser General Public License — лицензия для библиотек

GNU LGPL, или Уменьшенная стандартная общественная лицензия, — это «облегчённая» версия GPL. Она позволяет в некоторых случаях соединять лицензируемый ею код с кодом проприетарного ПО. При этом полученную программу не всегда нужно распространять под LGPL — такое исключение лицензия допускает в отношении библиотек.

Изначально акроним LGPL расшифровывался как Library General Public License, потому что лицензия была написана специально для библиотек. GPL не позволяла использовать код библиотек в коммерческих продуктах, и разработчикам пришлось бы каждый раз изобретать велосипеды. Существует две рабочих версии LGPL: GNU LGPLv2.1 1999 года и GNU LGPLv3 2007 года.

Особенности версии GNU LGPLv2.1

LGPL различает два режима использования программы:

  • Режим библиотеки — исходный код и его модифицированные версии распространяются на условиях, которые во многом совпадают с GPL.
  • Произведение, которое использует библиотеку, — это программа, которая работает с библиотекой, но не содержит её код. Она не считается производной от библиотеки, поэтому на неё не распространяется действие GPL.

«Лицензиат вправе объединить или связать Произведение, использующее Библиотеку, с Библиотекой, в результате чего будет создано произведение, содержащее части Библиотеки.

Лицензиат вправе распространять такое произведение на любых условиях, при этом за пользователем должно сохраняться право вносить изменения в произведение в целях его адаптации для собственных нужд, а также право осуществлять восстановление структурной схемы алгоритма работы по исходным текстам произведения для отладки внесённых изменений».

Статья 6 LGPLv2

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

Автор производной программы, который принял условия LGPL (лицензиат), обязан «создать условия, при которых заинтересованный пользователь мог бы внести изменения в библиотеку». В то же время автор библиотеки может изменить лицензию с LGPL на GPL, но откатить её к LGPL уже не сможет.

Особенности версии GNU LGPLv3

В 2007 году вышла третья версия LGPL, в которой появились понятия «приложение» и «составное произведение»:

Приложение — это любая программа, которая взаимодействует с библиотекой.

Составное произведение — это произведение, образованное при включении библиотеки в приложение.

Лицензиат может распространять модифицированные версии библиотеки:

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

Лицензиат сам выбирает условия, на которых будут распространяться производные и составные произведения. Однако в статьях 3 и 4 лицензии указаны требования, которые лицензиат обязан выполнить. В частности, уведомлять пользователей о том, что в произведении используется библиотека, и оставлять код библиотеки открытым.

Примеры продуктов, где используется LGPL:

  • GNOME Files — официальный файловый менеджер для среды GNOME;
  • GNU Aspell — программа для проверки орфографии в системе GNU;
  • TinyButStrong — лёгкий интерпретирующий обработчик шаблонов для PHP;
  • ZCAD — программа для 2D-черчения и 3D-моделирования.

GNU Affero General Public License — лицензия для облачных сервисов

Стандартную общественную лицензию Affero обычно называют усиленной версией GPL — в противоположность LGPL. AGPL создавали специально для веб-приложений, чтобы пользователи модифицированной программы в сети имели доступ к её исходному коду. AGPL совместима с GPL.

Первая версия лицензии на основе GPLv2 вышла в 2002 году, а вторая — на основе GPLv3 в 2007-м. Согласно Affero, если пользователи имеют доступ к модифицированной программе, которая исполняется на сервере, то сервер должен предоставлять доступ к исходному коду этой программы.

Основная цель AGPL — предотвратить скрытое использование свободного софта в Сети. Как мы уже сказали ранее, GPL плохо работает с моделью SaaS, ведь пользователь не может посмотреть исходный код облачного сервиса. Усиленная версия GPL позволяет избежать этого. Если разработчик выполнил требования лицензии и предоставил пользователям доступ к исходному коду, то пользователи также могут включить его изменения в свою версию.

Примеры продуктов, где используется AGPLv3:

  • GNUnet — программный пакет для безопасного P2P-соединения;
  • Grafana — приложение для аналитики и интерактивной визуализации данных;
  • Onlyoffice — пакет офисных приложений, включающий онлайн-редактор документов, систему документооборота, CRM, корпоративную социальную сеть и почтовый сервер;
  • Nextcloud — набор клиент-серверных программ для создания и использования хранилищ данных.

GNU Free Documentation License — лицензия для документации

GNU FDL, или Лицензия свободной документации, — строгая копилефт-лицензия. Она даёт право на воспроизведение, распространение и изменение технической и иной документации.

Лицензию создавали для учебных и вспомогательных материалов, прилагаемых к компьютерным программам, но она получила более широкое использование. В частности тексты «Википедии» ранее публиковались только под GNU FDL. Лицензия допускает коммерческое использование произведений — её как раз придумали, чтобы привлечь издателей к финансированию программной документации.

Первая версия GNU FDL вышла в 1999 году, а последняя, GNU FDL v1.3, — в 2008-м. Версию 1.3 создавали специально, чтобы статьи в «Википедии» можно было распространять под GNU FDL.

Основные требования GNU FDL:

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

У GNU FDL много противников. Особенно много критики получило положение, которое допускает наличие неизменяемых фрагментов в лицензируемых документах. По их мнению, это положение противоречит принципам GPL, а значит, FDL с ней несовместима. Также часто критикуют запрет на применение технических средств защиты авторских прав к копиям, сделанным в личных целях.

Примеры проектов, где используется GNU FDL:

  • «Википедия» — крупнейшая многоязычная интернет-энциклопедия;
  • PlanetMath — математическая энциклопедия на английском языке;
  • Citizendium — «более достоверная» версия «Википедии», статьи на которой проверяют эксперты;
  • Free On-Line Dictionary of Computing — энциклопедический словарь по информатике, разработанный в 1985 году.

Чтобы не запутаться в различиях лицензий из семейства GNU, мы подготовили для вас сводную таблицу.

НазваниеЗачем нужнаВажные положенияПримеры проектов
GNU GPLv2Защита прав пользователей и разработчиков свободного программного обеспечения (в широком смысле).Разрешает запускать программы в любых целях; изучать, адаптировать под свои нужды, улучшать и распространять код программ. В том числе улучшенные версии.

Запрещает распространять программу, если она не реализует четыре свободы (принцип «Свобода или смерть»).
- Git;
- Adium;
- Miranda IM;
- Okular.
GNU GPLv3Для того же, что и GPLv2, а также для защиты пользователей свободного ПО от патентных исков и тивоизации.Запрещено использовать DRM, а если они есть, то необходимо предоставлять ключи вместе с исходным кодом.

Запрещено использовать патенты для программ под GPLv3, так как GPL и патенты несовместимы.
- GNU Compiler Collection;
- GNU GRUB;
- Booktype;
- Blender.
GNU LGPLЧтобы совмещать открытый и проприетарный код.Если проприетарная программа работает с библиотекой, лицензированной по LGPL, распространитель обязан предоставить исходный код лишь этой библиотеки.- GNOME Files;
- GNU Aspell;
- TinyButStrong;
- ZCAD.
GNU AGPLДля веб-приложений.Разработчик облачного сервиса должен предоставить пользователям его исходный код.- GNUnet;
- Grafana;
- Onlyoffice;
- Nextcloud.
GNU FDLДля технических и иных документов.На производных документах должно быть указано имя автора исходного документа.

Документ под FDL нельзя перелицензировать.
- «Википедия»;
- PlanetMath;
- Citizendium.

Учись бесплатно:
вебинары по программированию, маркетингу и дизайну.

Участвовать

Курс

Профессия Python-разработчик

На Python пишут веб-приложения и нейросети, проводят научные вычисления и автоматизируют процессы. Язык просто выучить, даже если вы никогда не программировали. На курсе вы создадите Telegram-бота, полноценный магазин и задачник для портфолио, а Центр карьеры поможет найти работу Python-разработчиком.

Узнать про курс
Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована