Спонсоры: IBM и Sun Microsystems
Место и время: Москва, ВШЭ (Мясницкая, 20), 28.11.01
Одним из наиболее успешных OpenSource продуктов является Web-сервер Apache (www.apache.org/httpd/).
Этот сервер появился в апреле 1995 года, уже через год он был наиболее популярным
ПО для поддержки WWW-серверов с ``рыночной долей'' около 35%. ``Половина
рынка'' была освоена к началу 1998 года, начиная с этого времени, доля Apache
более чем вдвое превышает долю ближайшего конкурента -- Microsoft IIS -- и
колеблется в пределах 55-65%. На сегодняшний день Apache поддерживает функциональность
приблизительно 19 млн. WWW-серверов (по данным Netcraft, http://netcraft.co.uk).
Такой несомненный успех провоцирует на внимательный анализ -- повторить успех Apache было бы приятно любой группе разработчиков OpenSource-проекта.
Причины успеха Apache можно разделить на две группы: технологические причины, связанные с техническими преимуществами над конкурентами, и нетехнологические.
Технологическое лидерство. В начальный период своей истории появления Apache был одним из технологических лидеров на рынке -- производительность была достаточно велика, потребности в ресурсах -- малы. При этом программа обладала возможностью легкого расширения путем добавления модулей, причем реализовано это было много лучше чем у конкурентов. Возможность легкого расширения обусловило появление большого количества производных от Apache серверов -- Stronghold, Apache/SSL, mod_perl -- удовлетворяющих большинство потребностей Web-разработчиков по сегодняшний день.
Технологический консерватизм. Авторы популярных программ быстро оказываются заваленными пожеланиями пользователей. Если им следовать, то программы перегружаются функциональностью, нужной только малому числу клиентов, сложность кода растет одновременно с числом проблем и т.д. Авторам Apache удалось сохранить необходимый баланс в этой области, разрабатываемое ими ПО имеет репутацию стабильного и предсказуемого.
Открытость процесса разработки. Процесс разработки Apache открыт для наблюдения и комментирования всем желающим и поэтому предсказуем. Это позволяет выпускать дополнительные модули к новым версиям практически одновременно с их выходом.
``Демократическая'' разработка. В проекте Apache реализована уникальная схема разработки -- по каждому изменению проводится голосование, причем ``существенные'' изменения могут быть остановлены правом вето любого члена группы разработчиков, а несущественные -- должны набрать больше голосов ``за'', чем ``против''. Такая схема позволяет блокировать сомнительные технологические решения, поддерживая технологический консерватизм. Очевидно, что такая схема не может быть применена в произвольном проекте так как требует разумности от всех разработчиков группы, что достижимо далеко не всегда.
Поддержка пользователей. Несмотря на огромную пользовательскую базу и некоммерческий статус, поддержка Apache была и остается очень хорошей по качеству -- сообщения о проблемах анализируются в течение 1-2 дней.
Лицензирование. Существенной причиной успеха Apache является действительно свободное лицензирование. Apache License, в отличие от наиболее распространенной в среде OpenSource GNU GPL, не навязывает свободное распространение производных работ, а требует лишь сохранения права на имя -- указания, что производный проект использует код, разработанный Apache Group. При такой схеме лицензирования коммерческие компании охотнее вкладывают свои ресурсы в развитие продукта, примером может служить участие IBM в разработке Apache 2.0 и переносе Apache на платформу Windows.
Все перечисленные причины успеха Apache являются существенными, отсутствие любой из них заметно ухудшило бы продукт в глазах части, либо всех пользователей.
История. Одновременно с появлением в Рунете WWW-серверов с информацией на русском языке, возникла проблема правильной поддержки кириллицы -- в России используется множество кодовых таблиц для русского языка. ``Единственно правильной'' методики поддержки кириллицы не существовало, выдвигались достаточно самобытные идеи, авторам которых приходилось создавать свои варианты серверного и даже клиентского ПО. По состоянию на начало 1996 года, достигнуть консенсуса разработчиков, администраторов и пользователей не удалось, при этом даже не существовало стандартов, описывающих правильную поддержку неевропейских алфавитов в http/WWW.
В том же 1996 году появился ``Русский Apache'' -- поддержка нескольких кодировок кириллицы для сервера Apache, автором которого был Дмитрий Крюков (автор первых версий поисковой машины Рамблера и Rambler's Top100). Решение Крюкова было самым качественным из имеющихся -- клиенты могли читать документы в удобной для них кодировке, не модифицируя свое ПО, большая часть (но не все) модулей Apache корректно работала с русским языком.
К началу 1997 года Крюков увлекся разработкой Rambler's Top100, времени на поддержку ``Русского Apache'' у него не осталось, в феврале 1997 года проект был передан автору данного сообщения.
В течение первой половины 1997 года проект сначала был полностью переписан (с чистого листа) -- с сохранением совместимости с ``крюковской'' версией, а затем произведена однократная ``революция'' с переходом на стандартизованную систему конфигурации, которая сохраняется до сегодняшнего дня. На этом первый этап развития -- достижение технологического лидерства был завершен. Второй этап -- технологический консерватизм -- продолжается и сегодня.
Существенной составляющей успеха Русского Apache, несомненно, является успех Apache (более того, по данным Netcraft популярность Apache в домене .ru составляла на май 2001 г. около 85% -- много больше, чем в среднем в мире). С другой стороны, доля Русского Apache ``на рынке'' -- около 60%, при этом поддержка множества кодировок последние полтора-два года не является необходимой -- подавляющая доля клиентского ПО поддерживает кодировку Windows.
Анализировать причины успеха собственного проекта всегда трудно, однако попытаемся это сделать по той же схеме, по которой анализировали успех исходного Apache
Технологическое лидерство. Обладая всеми преимуществами исходного Apache, русская версия добавляет прозрачную поддержку любого количества кодовых страниц для одного языка. В отличие от конкурентных решений, динамические документы могут собираться из источников в разных кодовых таблицах, что позволяет строить сложные WWW-сайты в гетерогенном окружении. Эти свойства покрывают потребности подавляющего числа пользователей, единственным серьезным упущением является отсутствие поддержки многоязыковых серверов с несколькими кодовыми страницами для каждого языка.
Технологический консерватизм. Недостаточное количество ресурсов у разработчиков приводит к существенному технологическому консерватизму -- новые свойства к проекту добавляются крайне редко, последние полтора-два года развитие сводится к поддержке новых версий исходного Apache. Кроме недостатков, подобный консерватизм имеет и очевидные преимущества -- исходный код очень стабилен, за год были обнаружены две малосущественные ошибки, не мешающие нормальному функционированию.
Открытость разработки. Найти постоянных желающих участвовать в разработке Русского Apache не удалось. Часть работы удается ``свалить'' на волонтеров, в основном они делают скомпилированные версии под различные операционные системы. Однако привлечь к обсуждению проекта и связанных с ним проблем удалось достаточно много людей, в настоящее время рассылки читают около 1000 человек, преимущественно WWW- и UNIX-разработчики.
Поддержка силами сообщества WWW-разработчиков. Сообщество читателей рассылок успешно справляется с задачей поддержки как Русского Apache, так и WWW-разработки вообще, по всей видимости, рассылки (и их архив) -- лучший источник знаний о WWW-разработке в Рунете.