Product SiteDocumentation Site

Глава 15. Лицензирование и множественная сборка пакетов

15.1. Лицензирование
15.2. Множественная сборка пакетов

15.1. Лицензирование

Лицензирование продукта  — ещё один важный этап разработки. Каждый проект имеет некоторые цели в его использовании, распространении, доступности и т. д. И для реализации этих целей необходим некоторый инструмент, ограничивающий (или не ограничивающий) пользователей ПО. Лицензии глобально можно разделить на проприетарные и свободные.
Проприетарные лицензии эксплуатируют свойство безущербного копирования информации: для того, чтобы из одного экземпляра программного продукта сделать два, никаких дополнительных затрат не требуется, в отличие от материальных объектов, на копирование которых требуются расходные материалы и созидательный труд рабочего (особенно в отсутствие автоматизации). Как следствие, бизнес на основе проприетарных лицензий на ПО стремится максимально монетизировать именно факт копирования экземпляра, так так он в идеале приносит бесконечный процент прибыли. При этом, как правило:
  • распространение ПО без санкций правообладателя запрещается полностью;
  • количество одновременно работающих копий продукта фиксировано. Грубо говоря, каждая работающая копия продукта требует покупки ещё одной лицензии, и в эту новую покупку не входит вообще никакого ПО и другой информации, кроме увеличения числа лицензий у потребителя.
Бизнес на основе торговли копиями также влечёт за собой особенности разработки ПО — она становится закрытой. Дабы пресечь непрямое несанкционированное распространение, полностью запрещается доступ к исходным текстам программ, это, в свою очередь, накладывает ограничения на состав и мобильность команды разработчиков и т. д. Основные принципы такого бизнеса, а также некоторые (отчасти сомнительные) моральные его аспекты изложены Биллом Гейтсом в его знаменитом «Открытом письме любителям».
Свободные лицензии, напротив, используют факт безущербного копирования информации, чтобы как можно шире распространять программные продукты и привлекать к их разработке как можно больший круг участников. Это подразумевает открытую модель разработки ПО, в которой (в идеале) исходные тексты программ не только не закрываются, но и лежат на самом видном месте, да ещё и сопровождаются толковой внутренней документацией, дисциплиной оформления, принятой в сообществе, открытым диалогом в соответствующих информационных каналах и т. п.
Бизнес на основе свободного ПО технически отличается от проприетарного только отсутствием монетизации копирования. Однако это влечёт за собой изменение целей: такой бизнес в первую очередь старается спровоцировать пользователей принять участие в разработке ПО — протестировать, исправить недочёт, дописать недостающую функциональность, задокументировать, сделать перевод и т. п. Для этого пользователю нужно дать чёткие права по отношению к самому продукту и его исходным текстам, таким образом любой пользователь свободного ПО автоматически становится партнёром основного разработчика.
Одним из главных идеологов свободного ПО является Ричард Столлман. Ему принадлежит авторство одной из самых известных свободных лицензий —  GPL, а также самое, пожалуй, прозрачное и непротиворечивое определение свободного ПО (в том или ином виде вошедшее в различные законодательные практики).
По Столлману свободная лицензия предоставляет пользователю всего четыре права:
  1. Право запускать программу для любых целей  — пользователи могут запускать программу на любом оборудовании и для любых задач;
  2. Право изучать и изменять исходный код —  пользователи имеют доступ к исходному коду программы и могут изменять его, чтобы адаптировать ПО под свои нужды;
  3. Право распространять копии программы —  пользователи могут свободно распространять копии программы как в исходном виде, так и в измененном; как бесплатно, так и за плату;
  4. Право распространять измененные версии программы  — пользователи могут публиковать измененные версии программы без каких-либо санкций от разработчика.
Данные свободы гарантируют полный контроль над ПО при его использовании и преобразовании. Различные аспекты местного законодательства (например, неотторжимое авторство или «право на имя») имеют более высокий приоритет, но не конфликтуют с этим определением.
Большой класс свободных лицензий — т. н. «разрешительные» (или пермиссивные) лицензии воспроизводят эти четыре права с различными модификациями. Наиболее популярные разрешительные лицензии —  BSD, MIT и Creative Commons в варианте «Attribution» (CC-BY).
Бизнес-применение разрешительных лицензий имеет важную особенность: пользователь имеет право изменять политику лицензирования. Практически все производители проприетарного ПО используют свободные компоненты — у них есть право распространять производный продукт под закрытой лицензией. К сожалению, культура закрытой разработки по многим причинам не позволяет оставлять получившиеся компоненты (и, что более важно, их эффективные модификации) открытыми.
Стоит заметить, что в современном мире постоянно увеличивается количество ПО и его компонентов под разрешительными лицензиями, причём изрядную долю этого роста обеспечивают именно крупные корпорации с проприетарной моделью разработки — Google, Microsoft, Facebook и т. п. Разрешительные лицензии играют здесь роль катализатора для законного обмена технологиями. Скажем, в Facebook разработана высокоэффективная библиотека кеширования ссылок (чем бы она ни являлась☺). Корпорация заинтересована в распространении этой библиотеки (выгода очевидна: стороннее тестирование, в том числе в принципиально других условиях, доработка, кроссплатформенная совместимость и т. д.), а бизнеса на её продаже не планирует. Если наложить на такой продукт проприетарную лицензию, часть предполагаемых пользователей от неё откажутся из-за высокой стоимости владения, другая часть — из-за лавинообразного роста обязательств в стиле «кто кому сколько за что должен». Выход — минималистичная свободная лицензия.
Запрет на изменение политики лицензирования никак не влияет на свойство самого исходного текста ПО, но ограничивает пользователя в плане выбора лицензии, под которой он будет распространять производный продукт. Такое добавление к свободной лицензии носит название «копилефт», и его автор — тот же Ричард Столлман.
«Копилефтные» лицензии содержат пятое правило: «В лицензии производного ПО в обязательном порядке требуется наличие, как минимум, описанных пяти пунктов текущей лицензии». При таких условиях пользователь встаёт перед выбором: либо не распространять обновлённое ПО, либо как минимум по запросу предоставлять исходники.
Наиболее популярно семейство копилефтных лицензий GPL с вариациями, а также Creative Commons в варианте «Sharing Requirements» (CC-BY-SA).
Стоит заметить, что «некоммерческие лицензии», как, например, Creative Commons с суффиксом NC, не являются свободными, так как противоречат двум последним пунктам.
Выбор лицензии зависит от задач и целей проекта. Прочитать о том, как правильно выбрать лицензию для своего продукта, можно по рекомендациям GitHub; можно ещё здесь и здесь. Изучать лицензии и их формальные свойства подробнее стоит на сайте «System Package Data Exchange». Также для выбора лицензии существуют специальные сервисы (choosealicense, Creative Commons).