Чтобы вновь не навлечь на себя чей-нибудь гнев, я решил выбрать более безопасный предмет обсуждения.

Терминологическая неразбериха дает Дэйву Вайнеру повод утверждать, что программы, контролируемые GPL, не являются программами с открытым кодом

На эту идею меня навела статья Дэйва Вайнера, носящая в точности такое же название — «Что такое открытый код?». Мне показалось, что Вайнер очень далек от истины как в ответе на вопрос, поставленный в заглавии его собственной статьи, так и в некоторых своих выводах.

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

В чем ошибка?

Однако в процессе работы над статьей я пришел к иным выводам. Я по-прежнему считаю, что Вайнер не прав в некоторых вопросах, в том числе в своем определении открытого кода, но теперь я убежден, что его личное отношение к теме тут ни при чем. На мой взгляд, он пал жертвой словесной перепалки сторон, участвующих в спорах о том, что лучше — «свободная» программа или программа с открытым кодом, BSD-лицензии или GPL-лицензии и т. д.

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

С определением, данным открытому коду Вайнером, не согласны и представители инициативы Open Source Initiative (OSI). На ее Web-сайте перечислены целых девять требований, которым должна соответствовать лицензия на ПО, чтобы быть лицензией открытого кода. И ни одно из этих требований не запрещает налагать ограничения на методы использования ПО. На сайте также перечислены лицензии, соответствующие всем девяти требованиям. На первом месте в списке стоит GNU General Public License, GPL.

На основании своего определения Вайнер приходит к выводу, что GNU не является проектом открытого кода, так как GPL налагает ограничение на использование ПО. В число программ проекта GNU входят Emacs, GIMP, GNOME, GCC и еще около 150 других. Однако существует еще множество программ, не входящих в GNU, но распространяемых по лицензии GPL. К их числу, в частности, относится ядро Linux. Представьте себе разочарование тысяч программистов со всего света, внесших вклад в создание ПО, распространяемого на условиях GPL, когда они узнают, что Вайнер объявил недействительность жить и работать в стиле «базара». (Последний термин взят из книги «Собор и базар» Эрика Рэймонда, в которой речь идет о различиях между так называемым «церковным» — cathedral — и «базарным» — bazaar — стилями разработки. К первому автор относит Emacs и другие проекты, работа над которыми неторопливо ведется небольшой замкнутой группой элитных программистов; ко второму — Linux и ему подобные проекты, допускающие участие любого желающего и выпуск очередных бета-версий с максимально возможной быстротой. В своей книге Рэймонд также указывает на затруднительность применения «базарного» стиля для разработки программ в соответствии с лицензией GPL, связанную с тем, что лицензионная политика фонда Free Software Foundation (FSF) во избежание конфликтов с законами об авторском праве требует указания авторства для любого добавленного кем-либо участка кода, превышающего по объему 20 строк. — Прим. перев.).

Сложность в том, что общепринятого определения открытого кода не существует, и потому не удивительно, что в своем определении Вайнер расходится с таким авторитетом, как OSI. Отсутствием общепринятого определения однажды воспользовался даже президент Microsoft Стив Балмер. Он обмолвился как-то, что Microsoft может выйти на арену открытого кода, но позже от этого заявления открестился, сказав, что его неправильно поняли, так как у Microsoft свое особое понимание термина «открытый код».

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

Определение Вайнера перекликается с дебатами между лагерями приверженцев лицензий BSD и GPL. Первые утверждают, что лицензия BSD делает программное обеспечение истинно свободным, так как она не налагает ограничений на его использование. FSF во главе с Ричардом Столлменом настаивает на превосходстве своей лицензии, так как она гарантирует бесплатное распространение программных продуктов, базирующихся на открытых исходных текстах, требуя от них подчинения условиям GPL. Лицензия BSD же, дескать, предоставляет пользователям сомнительную возможность превратить бесплатный программный продукт в коммерческий.

Споры о том, что гарантирует большую свободу, BSD или GPL, мне напоминают размолвку между Сальвадором Дали и сюрреалистами. В 1934 году Дали был исключен из группы сюрреалистов за несоответствие идеям течения. Во взятом впоследствии у Дали интервью ему задали вопрос о разнице между ним и сюрреалистами. В ответ он сказал: «Разница в том, что я — сюрреалист».

Одинаковое одинаковому рознь

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

Выпустив в 1998 году «Собор и базар», Рэймонд вынес «заразную» идею открытого кода на суд общественности, некоторые единодушно осудила концепцию бесплатного, не собственнического ПО. Назрела потребность в емком термине, отражающем принцип открытости разработки всех видов ПО — свободного, несвободного и создаваемого «базарным» методом. Затем Netscape решила открыть код своего браузера на условиях, предусматривающих весьма жесткие ограничения. И оказалось, что термин «открытый код» является достаточно всеохватывающим, чтобы допустить даже такие ограничения. Терминологическая неразбериха дает Вайнеру повод утверждать, что программы, контролируемые GPL, не являются программами с открытым кодом. Более того, на первый взгляд, того же мнения придерживается и Столлмен. К сожалению, не только аргументация Вайнера, но и его выводы базируются на ложных предпосылках, различных по степени значимости.

Посмотрим на разницу между свободным ПО и ПО с открытым кодом. Свободное ПО, согласно определению FSF, это ПО, лицензируемое на следующих условиях:

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

Составители GPL, однако, пошли еще дальше, предусмотрев так называемый принцип Copyleft (термин FSF, означающий полную противоположность авторскому праву, то есть гарантию его отсутствия), или требование распространения модифицированного кода на условиях GPL. Это «ограничение» Вайнер использует как аргумент в пользу того, что ПО, контролируемое GPL, не является ПО с открытым кодом. Copyleft также является яблоком раздора между сторонниками лицензирования ПО по схемам BSD и GPL.

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

Так в чем же разница?

Вы запутались? Потерпите, я еще не закончил. Вероятно, вы задумались, почему представители собственнического лагеря не понимают смысл терминов «открытый код» и «свободное ПО» на интуитивном уровне. Как я уже говорил, OSI относит GPL к числу лицензий открытого кода. Добавлю теперь, что FSF считает исходный вариант BSD лицензией свободного ПО, а модифицированную версию, из которой исключен пункт об ограничении на рекламу, — не только лицензией свободного ПО, но и лицензией, в некотором отношении идентичной GPL.

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

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


О лицензиях GPL и FreeBSD и успехе Linux

Для понимания основ движения за открытые исходные тексты, механизмов его развития и причин успехов и неудач очень важно разобраться в определениях и лицензиях, отражающих философию различных его направлений. Общее определение «открытые исходные тексты» (The Open Source Definition — http://www.opensource.org/osd.html) содержит требования свободного распространения, доступности исходного кода, возможности модификации и ряд других. Список лицензий, удовлетворяющих этому определению, включает в себя, в частности, универсальную общественную лицензию GNU General Public License (GNU GPL — http://www.opensource.org/licenses/gpl-license.html), «библиотечную» лицензию Library (Lesser) GPL (LGPL — http://www.opensource.org/licenses/lgpl-license.html), лицензию Berkeley Software Distribution (http://www.opensource.org/licenses/bsd-license.html), лицензию Массачусетсского технологического института, известную также как лицензия X-консорциума (http://www.opensource.org/licenses/mit-license.html). Из всех лицензий, подпадающих под условия открытых исходных текстов, надо особо отметить GPL и LGPL, сформулированные фондом FSF и его основателем Ричардом Столлманом.

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

Строгость GPL, критикуемая многими разработчиками, является, однако, надежной охраной движения свободного программного обеспечения и основой его развития. Например, все разговоры о коммерциализации ОС Linux практически лишены смысла, так как его основу составляют программы, на которых распространяется действие лицензии GPL или LGPL. Невозможно, например, закрыть тексты ядра или его части (это не относится к модулям), нельзя создать коммерческий клон компилятора gcc, библиотеки glibc, GNOME.

С другой стороны, все программы, написанные на основе текстов под GPL, сами автоматически под нее подпадают. Этим, в частности, объясняется увеличивающееся в геометрической прогрессии количество свободных разработок для Linux.

В противоположность GPL, лицензия BSD позволяет использовать тексты для коммерческих разработок. Несомненно, подобный альтруизм вызывает уважение, но не способствует развитию самих BSD-клонов. Небольшое на первый взгляд различие в лицензиях во многом объясняет значительно большее число приложений для Linux в сравнении, например, с FreeBSD. (Заметим, однако, что более закрытая модель разработки BSD зачастую обеспечивает лучшую реализацию защиты и некоторых служб.)

Алексей Новодворский, сотрудник компании IP Labs Linux Team, являющейся создателем популярных русскоязычных дистрибутивов Linux