Ключевые слова:linux, gpl, license, (найти похожие документы)
From: Сергей Супрунов
Date: Mon, 26 Jul 2006 14:31:37 +0000 (UTC)
Subject: Обзор открытых лицензий
Впервые опубликовано в журнале "Системный администратор".
Как часто мы слышим, что открытых лицензий на программное обеспечение
развелось слишком много. BSD, Apache, CDDL, GPL2/3, LGPL... Даже для
юристов это настоящий кошмар. А что же тогда говорить о нас, простых
(хотя и системных) администраторах?
Беглый взгляд со стороны
Для начала - что такое лицензия на программное обеспечение? Дело
в том, что программу трудно отнести к материальному объекту, поскольку
она слишком легко и дёшево может быть растиражирована. Как следствие,
её распространение сильно отличается от прочих товаров. Купив, скажем,
утюг, вы становитесь его собственником и, в частности, можете
отдать/продать кому-то ещё. Тогда у вас утюга уже не будет (т.е. спрос
сохраняется на прежнем уровне, и производитель может оставаться
спокойным).
Программа же - она как идея. Если у вас есть одна и вы поделитесь ею
с кем-то ещё, то их станет две... Естественно, такое положение дел не
могло устроить разработчиков, которые заинтересованы в том, чтобы
программы покупались именно у них. Поэтому и появились лицензии -
особый вид соглашения, ограничивающего права пользователя на
получаемый им программный продукт.
Традиционно в лицензиях на коммерческие продукты содержатся
ограничения на использование программы (число
инсталляций/процессоров/пользователей и т. д.), на распространение и
на доступ к "внутренностям" программы (её декомпиляцию). То есть
первоначальное назначение лицензии заключается в защите коммерческих
прав и интеллектуальной собственности разработчика программы.
Разработчики свободного ПО, желающие распространять свои программы, не
создавая для пользователя никаких ограничений, решили бороться за
свободу своих детищ тем же оружием, которое использовалось для
ограничения этой свободы - лицензиями. Но, в противоположность
коммерческим лицензиям, здесь явно указывалось право пользователя
распространять программы любым способом, использовать в любых целях,
модифицировать код и т. д.
Наиболее известной свободной лицензией является разработанная в FSF
(Free Software Foundation) лицензия GNU GPL (General Public License).
Однако помимо неё существует масса других лицензий, в которых и
попытаемся разобраться хотя бы в общих чертах.
Представляем главных игроков
Сначала коротко познакомимся с основными положениями наиболее
распространённых открытых лицензий.
GNU GPL2 (GNU General Public License)
Это детище Ричарда Столлмана (Richard Stallman), пришедшее в 1991 году
на смену 1-й версии, имеет чётко поставленную задачу - не допустить
"закрытия" программ, которые первоначально были выпущены как
свободные. GPL предоставляет право свободно использовать,
модифицировать и распространять программу, при обязательном условии,
что вместе с ней будут распространяться и её исходные коды, включая
все сделанные изменения, и по той же самой лицензии. Допускается не
включать исходные коды в дистрибутив при условии, что их можно будет
свободно получить в дальнейшем (например, скачав с ftp-сервера).
Формально лицензия не требует от разработчика или дистрибьютора
распространять программу бесплатно, но в свете обязательности
предоставления исходных кодов взимание платы за "сборку" в какой-то
степени теряет смысл.
Здесь нужно сказать, что с GPL прочно связано ещё одно понятие -
Copyleft. Это положение (в противоположность Copyright), согласно
которому распространитель (т.е. правообладатель) программного продукта
не вправе ограничивать свободу дальнейшего распространения,
модификации, использования.
GNU LGPL (Lesser GPL)
"Ограниченная" GPL, регламентирующая права на программные
библиотеки. Содержит ряд пунктов, допускающих компоновку данной
библиотеки с программами, распространяемыми по другим лицензиям.
Разработчик библиотеки (или её модификации) вправе перевести её на
лицензию GPL, однако обратная процедура уже будет невозможна.
BSD
Пожалуй, самая простая и демократичная открытая лицензия, занимающая
всего несколько строк. Её смысл сводится к тому, что "делайте с
программой всё, что хотите, только не говорите, будто это вы её
написали". То есть единственное предъявляемое ею требование -
сохранение уведомлений об авторских правах. Таким образом, лицензия
BSD не подпадает под понятие Copyleft, поскольку не запрещает
ограничивать свободу этого или производных продуктов. Сторонники GPL
часто критикуют BSD за то, что она позволяет любому "украсть"
разработку. Действительно, если хорошая программа распространяется под
BSD-лицензией, то существует ненулевая вероятность, что какая-нибудь
крупная корпорация возьмёт этот код и будет распространять программу
как закрытую под коммерческой лицензией. Очевидно, что у такой
компании будет гораздо больше маркетинговых возможностей по
продвижению и продаже программы - большинство пользователей могут даже
и не догадываться, что существует такая же программа, но абсолютно
бесплатная. К тому же лицензия BSD не обязывает делиться с сообществом
модифицированным кодом.
Формально всё это никоим образом не ущемляет прав разработчика
открытой версии - он остаётся автором и владельцем кода и может его
по-прежнему развивать и распространять, как ему вздумается. То есть
все возражения против BSD сводятся, по сути, к апелляции к морали.
Впрочем, это личное право разработчика - поступать со своим детищем
так, как ему вздумается.
Apache
Достаточно либеральная, и в то же время хорошо проработанная лицензия
(чувствуется "рука мастера" - первоначально к ней приложили руку
юристы корпорации IBM). Позволяет модифицировать и распространять ПО
как в открытых кодах, так и в двоичном виде. Помимо прав на сам
программный продукт (на его использование, модификацию,
распространение), лицензия регламентирует и вопросы, связанные с
сопутствующими патентами - они также должны передаваться вместе с
программой. Предусмотрена контрмера на случай судебных претензий
к разработчику ПО, распространяемого под лицензией Apache, - в этом
случае лицо, предъявившее такие претензии, автоматически теряет
переданные ему права в отношении программы или сопутствующих патентов.
Artistic
Под этой лицензией распространяются такие программы, как Razor, Perl
(этот проект использует слегка модифицированную версию) и ряд других.
Изменённый продукт может распространяться только в случае публикации в
доступном виде модифицированных исходных кодов либо при условии, что
все изменённые файлы будут переименованы. В принципе позволяет
использовать программный продукт в коммерческих программах. FSF
не очень жалует эту лицензию за туманность её формулировок и относит
её к несовместимым с GPL (за исключением модифицированной лицензии,
под которой распространяется Perl).
CDDL (Common Development and Distribution License)
Лицензия, разработанная в Sun Microsystems. Требует распространения
программы вместе с правами на все сопутствующие патенты и только в
исходных кодах, с обязательным уведомлением обо всех сделанных
изменениях. В двоичном виде допускается распространение по другой
лицензии, при условии, что это не ограничивает свободу доступа к
исходному коду. Как и в лицензии Apache, предусмотрен отзыв всех
переданных прав на ПО и патенты в случае судебных претензий к
разработчику или распространителю. В настоящее время под этой
лицензией распространяется, в частности, OpenSolaris. Впрочем, как
пишет в своём блоге Джонатан Шварц, президент компании Sun,
рассматривается перевод OpenSolaris на двойную лицензию CDDL/GPL3
(когда последняя будет опубликована), чтобы обеспечить совместимость с
GPL и тем самым получить преимущества от взаимного обмена кодом с
Linux.
Характерной особенностью практически всех свободных лицензий
(да и коммерческие зачастую "грешат" этим) является обязательное
указание раздела, касающегося отказа от ответственности. То есть
разработчик лицензируемой программы явно указывает, что не несёт
никакой ответственности за ошибки в работе программы, за ущерб
вследствие неправильной работы ПО, и т. д. Для открытых программ,
которые легко могут модифицироваться без ведома разработчика, такое
положение является вполне естественным и понятным. Ну и, с другой
стороны, зачем брать на себя какую-то ответственность, если это
зачастую не приносит никакой прибыли?
Помимо представленных, есть масса других лицензий (организацией OSI
одобрено более 60), порой охватывающих разработки одной компании, или
даже одну-единственную программу. К таким можно отнести лицензии IBM,
Apple, Eclipse Public License, Qt Public License, открытые лицензии
Intel, Jabber, Zope, и т. д.
Нужно заметить, что есть ещё и лицензии на документацию (наиболее
распространённой является опять-таки лицензия GNU - FDL (Free
Documentation License)). Так что выбирать есть из чего.
Там, за горизонтом...
Естественно, нельзя обойти вниманием и GNU GPL3. Что там ещё придумал
Столлман на благо всего человечества?
Вторая версия GPL, честно прослужившая 15 лет, морально устарела.
В ней не предусмотрена возможность распространять программный продукт
посредством Интернета (имеется в виду не скачивание дистрибутивов, а
использование ПО как интернет-сервиса). В ней ничего не говорится
о патентах, так что уже нельзя сказать, что она надёжно защищает право
программы оставаться свободной.
И вот, в конце 2005 года FSF объявил о намерении обновить свою
основную лицензию. В настоящее время черновой вариант GPL3 вынесен
на всеобщее обсуждение, а его принятие предполагается в конце этого -
начале следующего года.
При беглом прочтении бросаются в глаза следующие нововведения:
- Вводится явное разделение понятий "распространение" и "личное
использование". На последнее не налагается практически никаких
ограничений. Если учесть, что "лично использовать" программу можно и
на уровне такой корпорации, как Novell, это достаточно сильное
послабление, позволяющее вносить нужные вам модификации и ни с кем ими
не делиться.
- Вводится понятие "Полностью соответствующего исходного кода",
включающее помимо самих исходников также код, необходимый для успешной
компиляции и запуска программы (make-файлы, конфигурационные файлы,
необходимые ключи и т. д.).
- Регламентируется использование патентов. Все права на сопутствующие
патенты на программу должны передаваться вместе с программой для
свободного использования.
- Добавлен пункт, запрещающий использовать управление цифровыми
правами (Digital Restriction Management, DRM). DRM - это
законодательно защищаемые ограничения на доступ к информации
(например, требование специального ключа). В FSF считают, что подобные
ограничения противоречат духу Open Source, где любой пользователь
вправе отключить любую функцию (в том числе и ту, которая отвечает за
ограничение доступа). Кстати, есть мнение, что отсутствие поддержки
DRM в Linux может подорвать позиции этой ОС на рынке домашних
развлекательных систем, поскольку лишит возможности пользователей
работать с защищёнными мультимедиа-файлами. Впрочем, в FSF настроены
на этот счёт более оптимистично.
- Появилась возможность расширять лицензию некоторыми дополнительными
требованиями (например, требованием указывать авторские права
исходного продукта во всех модифицированных). Подобные дополнения
должны помочь в вопросах совместимости GPL с другими свободными
лицензиями.
Для тех, кто использовал GPL с формулировкой "вы вправе
распространять её и/или модифицировать в соответствии с условиями
версии 2 либо, по вашему выбору, с условиями более поздней версии GNU
GPL, опубликованной FSF" никаких проблем с переходом на версию 3
возникнуть не должно. Однако если продукт распространялся строго по
GPL2 (как это имеет место быть в случае с ядром Linux), для смены
лицензии требуется согласие всех, кто так или иначе участвовал в
разработке данного программного продукта. Перспектива отыскивать
каждого, кто десять лет назад внёс в ядро три строчки кода,
и испрашивать у него согласие на смену лицензии, естественно, не могла
обрадовать разработчиков ядра Linux, что и стало причиной довольно
резких заявлений Торвальдса о том, что Linux останется на GPL2.
Впрочем, жизнь не стоит на месте, и когда-нибудь меняться придётся.
Поживём - увидим.
Кому и зачем всё это надо
Казалось бы, ну есть какая-то программа, ну не берут денег за то, что
я пользуюсь ею... Ну вот и славненько! Какая мне разница, что именно
там за лицензия?
С точки зрения обычного пользователя, так оно и есть. По большому
счёту рассмотренные лицензии не являются так называемыми EUL (End User
License), т.е. они не столько регламентируют права конечного
пользователя, сколько права разработчиков и распространителей, которые
будут использовать данную программу в своих продуктах или
предоставлять услуги на основе данного продукта.
Системный администратор в какой-то мере тоже является конечным
пользователем. То есть его деятельность направлена не на модификацию и
распространение той или иной программы, а на соответствующую её
настройку и дальнейшее сопровождение. Конечно, зачастую настройка
связана с модификацией продукта, но поскольку результат этой
модификации редко выходит за пределы "личного" использования, то
вопросы лицензирования здесь тоже особого значения не имеют.
А вот для разработчиков (даже если разработка заключается в сборке
готовых программ и библиотек в один дистрибутив) вопросы
лицензирования приобретают большое значение. Как вы видите,
большинство открытых лицензий достаточно либеральны, и особых проблем
с использованием "покрываемых" ими продуктов возникнуть не должно.
Единственное, нужно не забывать о вопросах совместимости разных
лицензий. Например, вы не можете распространять свою программу под
лицензией, не требующей открывать исходный код, если она основана или
включает в себя программный продукт, распространение которого требует
соблюдения открытости. Парадоксально, но лицензию QPL (Qt Public
License), под которой распространяется библиотека Qt, Free Software
Foundation относит к несовместимым с GPL. Впрочем, разработчикам KDE,
похоже, удалось обойти эту формальность.
Кстати говоря, проблемы совместимости послужили причиной возникновения
ещё одной особенности - двойного лицензирования. Некоторые
производители, желая обеспечить более широкие возможности
использования своей программы, выпускают её под несколькими
лицензиями. В качестве примера можно привести PC-BSD,
распространяющуюся под лицензиями GPL и BSD. Или, например, MySQL,
которая выпускается под GPL и под коммерческой лицензией.
Однако помимо прямой роли лицензий на те или иные программы нельзя
забывать и о косвенных последствиях. Ведь это непосредственным образом
влияет на желание программистов заниматься разработкой открытых
программ и их распространением.
С этой точки зрения лицензии, соответствующие "Copyleft", такие как
GPL, должны быть более привлекательны для разработчиков, поскольку
гарантируют, что никто не сможет воспользоваться результатами их труда
в своих целях. Кроме того, "обратная связь" в виде обязательного
предоставления сообществу модифицированных исходных кодов способствует
более быстрому развитию программы, поскольку подобный обмен кодом
позволяет использовать наилучшие варианты.
С другой стороны, лицензии в стиле BSD более удобны для
дистрибьюторов, поскольку позволяют использовать такие программы и в
коммерческих разработках.
Ждём с нетерпением...
Что ж, на сегодняшний день лицензий действительно немало. Во многом
они дублируют друг друга, отличаясь лишь незначительными
особенностями, но преследуя одинаковые (по крайней мере, схожие) цели.
Несовместимость некоторых положений несколько осложняет жизнь
дистрибьюторам и разработчикам, желающим объединить в своём продукте
несколько сторонних программ. Но в целом существующие лицензии неплохо
уживаются друг с другом.
Тем не менее сокращение их числа было бы на руку как разработчикам,
так и конечным пользователям, поскольку сделало бы работу с различным
ПО более прозрачной и понятной. Так что будем надеяться, что GPL
третьей версии удастся сделать привлекательной для большинства
разработчиков, что будет стимулировать отказ от различных
"доморощенных" лицензий.
Приложение
Отказ от ответственности
Настоящая статья публикуется в соответствии с принципом "как есть"
(а не "как пить дать"), что означает возможность наличия в ней
ошибок и заблуждений, хотя автор и стремился этого избежать. Сам факт
публикации, а также указание на последней странице журнала, что "За
содержание статьи ответственность несёт автор", не подразумевают
никаких гарантий. Автор не отвечает за последствия применения,
неправильного применения или неприменения материала данной статьи,
включая разбитые вследствие неосторожного цитирования в присутствии
идейных оппонентов носы (но не ограничиваясь этим). Шутливый тон
настоящего раздела не подразумевает шутливость всего изложения.
Free as a beer?
У нас таких проблем не возникает - понятия "бесплатное" и
"свободное" ПО достаточно чётко разделяются на лингвистическом
уровне. В английском же языке ситуация несколько иная, и говоря
"free software", приходится уточнять, имеется в виду "free as a
beer" (бесплатное, как пиво; нам бы такую аналогию в ближайший ларёк)
или "free as Kipelov" (помните: "Я свободен, словно птица в
небесах..."). "Free" в первом контексте подразумевает бесплатность
программы, но при этом её использование может быть сильно ограничено
(только для личного пользования, для ознакомительных целей, без права
декомпиляции и т. д.).
Во втором же случае понимается свобода программы в терминах лицензии
GPL.
Последнее время наметилась тенденция к использованию вместо термина
"free software как Кипелов" формулировки "open source software"
(открытое программное обеспечение, ПО с открытым кодом), что выглядит
несколько лучше, но тоже допускает неоднозначность (можно открыть
коды, но сопроводить это такой лицензией, что эти коды будет страшно
трогать).
Возможно, со временем гибкий и изворотливый человеческий ум
придумает-таки однозначные формулировки, пока же будем уточнять:
"Free as a beer?", "Open as Linux?".
Ссылки:
1. Лицензия GNU GPL2 - http://www.gnu.org/licenses/gpl.html
2. Лицензия GNU LGPL - http://www.gnu.org/copyleft/lesser.html
3. Черновик GNU GPL3 - http://gplv3.fsf.org/draft
4. Лицензия Apache - http://apache.org/licenses/LICENSE-2.0
5. Лицензия Artistic - http://www.perl.com/pub/a/language/misc/Artistic.html
6. Лицензия Sun CDDL - http://www.sun.com/cddl/cddl.html
7. Страница Open Source Initiative (OSI) со ссылками на большинство
открытых лицензий - http://www.opensource.org/licenses/artistic-license.php