Как сделать популярный дистрибутив
2008-11-13 22:02Недавно в списке рассылки одного сообщества, посвященного выпуску дистрибутива линукс, прошло обсуждение "Как сделать самый популярный дистрибутив". Это была попытка собрать все мнения, которые возможны, что-то типа мозгового штурма. Штурм, к сожалению, захлебнулся в возникшей полемике вокруг тем, обсуждаемых уж никак не менее пятнадцати лет (например, "Монтирование устройств простыми пользователями"). Эта полемика освежила в моей памяти жизнь дистрибутивостроителей и я сделал некоторые выводы, которые и предлагаю вашему вниманию.
Как сделать самый популярный дистрибутив линукс
Уже почти два десятка лет тысячи разработчиков во всем мире пытаются сделать самый популярный дистрибутив. Они объединяются в различные сообщества, что приводит к некоторому успеху (Red Hat, SUSE, Mandrake, Debian, Ubuntu), но список недостатков дистрибутивов, остается стабилен: недостатки всем известны, но - не устраняются.
Вот и очередная попытка выработать стратегию развития дистрибутива через перечисление его "возможностей" захлебнулась в полемике: возможности всем нужны разные, устранять чужие ошибки не надо никому, а договориться не позволяет несовершенство дистрибутиво-образующего ПО.
Видя все это, я прихожу к выводу, что причина непопулярности свободного программного обеспечения лежат не в отсутствии возможностей (подавляющее большинство из них решаются грамотными разработчиками за считанные дни), а в каких-то системных противоречиях. Поэтому стратегия развития должна основываться не на сиюминутной реализации недостающих возможностей, а в изменении самого подхода к разработке. Именно поэтому я не стану писать очередной список "ЧЕГО НЕТ В СВОБОДНОМ ПО", а попытаюсь описать само сообщество разработчиков и протекающие в нем процессы.
Кем и как разрабатывается свободное ПО
Говоря о планах разработки нужно четко решить два вопроса: кому это выгодно и кто это будет делать. Я могу назвать три наиболее массовых разновидностей разработчиков свободного ПО: добровольцы, продвинутые пользователи и картели разработчиков свободного ПО.
Добровольцы
Добровольцы - это такая особая популяция людей, которые, якобы добровольно, разрабатывают программное обеспечение. Но, как вы понимаете, даже добровольцам надо что-то есть и пить. Поэтому добровольцами становятся те, кто, разрабатывая ПО, достигает каких-то иных целей. Вот список самых распространенных целей:
- Образование
- Доброволец разрабатывает ПО для того, чтобы научится его разрабатывать, по окончании обучения ПО становится бесхозным;
- Квалификационная оценка
- ПО разрабатывается для возможности включить в резюме факт его разработки и продаться с потрохами, по достижении этого результата ПО опять же становится бесхозным;
- Наука
- ПО разрабатывается с целью подтвердить какие-то теоретические концепции, как только ПО справляется с этой задачей - оно становится ненужным.
ПО, написанное добровольцами, бывает даже красивым и со всеми признаками гениальности. Главный его недостаток - у него нет ни одной полностью работоспособной версии и нет никакого будущего. Кроме того, за исключением ПО разработанного в научных целях, продукты добровольцев страдают моральной устарелостью.
Продвинутые пользователи
Это класс разработчиков пишет ПО для своих собственных нужд. Основная особенность продвинутых пользователей в том, что они пишут код "для себя", и встречаясь с проблемами всегда стоят перед выбором: "Нужно ли потрать лишних ДВА ДНЯ работы, на то чтобы решить проблему, которая приводит к увеличению трудозатрат при использовании ПО на ДВЕ МИНУТЫ в течении ОДНОЙ человеческой жизни". Хуже того, решение проблем, возникающих из-за неправильных действий пользователя ПО при таком подходе вообще неактуально. Про документирование кода я просто молчу.
Картельный сговор или Бизнес-модель открытого исходного кода
Коммерческая разработка свободного ПО основана на том, что некие поставщики услуг оказывается в состоянии писать код, но зарабатывают деньги не на его продаже, а на оказании платных услуг на его основе. При этом в ряде случаев оказывается более выгодным делиться исходным кодом и разрабатывать его вместе c другими поставщиками услуг, несмотря на конкуренцию за потребителя. Это похоже на картельный сговор: поставщики услуг имеют успех до тех пор, пока давят потребителя единой кодовой базой: куда бы потребитель не дернулся, он везде наткнется на одно и тоже. Конкуренция между ними возможна, но лежит в плоскости договоров с потребителем, а не в потребительских свойствах ПО. Нарушение любым из них сговора приводит к резкому локальному успеху и полному провалу всей отрасли. Мы не наблюдаем этого по очень простой причине: единая кодовая база служит своеобразным регулятором картельного сговора: ее стоимость сравнима с затратами на термоядерный синтез, поднять альтернативу в одиночку невозможно.
Как водится, нарушение картельного сговора считается самым большим грехом, против которого направлены и внутрисистемные соглашения (copyleft, GPL и т.п.) и культурная традиция, запрещающая (вполне обосновано) форки.
Я не буду углубляться в рассмотрение этого феномена и говорить о том, насколько профессиональны такие непрофессиональные разработчики, насколько они удовлетворяют потребителя - это очень интересно, но достаточно сказать, что пока бизнес-модель действительно такая, свободное ПО оказывается не хуже (а иногда и лучше) проприетарного. Замечу лишь, что происходит это не столько от качества процесса разработки свободного ПО, сколько от недостатков процесса разработки ПО проприетарного.
Заказчик как неотъемлемая часть процесса разработки
Есть кое-кто, объединяющий свободное и проприетарное ПО: заказчик. Это тот лох, который в конечном итоге оплачивает из своего кармана сладкую жизнь разработчиков. Основное свойство заказчика - тупость. Причем это неотъемлемое и очень полезное свойство. Гениальному заказчику можно продать ПО нулевой юзабилити без всякого сопровождения: он в нем как-нибудь разберется и будет жить. В конце-концов, были в моей жизни умельцы, писавшие музыку, набивая огибающую гексариком в бинарном редакторе. Но прогресс достигается именно за счет тупых заказчиков: Т.е. людей, которые хотят просто решить свои проблемы. Именно этот заказчик требует, чтобы ПО обладало дуракоустойчивостью, дуракополезностью, дуракопонимаемостью и дуракоиспользуемостью. Именно эти свойства съедают большую часть бюджета. Именно поэтому ПО приходится писать не по принципу "нормальные люди на грабли не наступают", а ставя во главу угла проектирование "безграбельных" архитектур.
Вот именно этого заказчика и не хватает при разработке дистрибутивов линукс.
Существующая технология разработки дистрибутива
Обычно это выглядит так: собирается компания вот тех самых "поставщиков решений", которая объединяется с "продвинутыми пользователями" (которые являются поставщиками решений для самих себя) и пытается все используемое ими программное обеспечение объединить в единый продукт. Ценность этого продукта состоит лишь в том, что его удобно использовать в качестве начальной точки отсчета при разворачивании системы. Разработка дистрибутива не является разработкой ПО и вот почему:
- Нет разработчиков, которые бы вели разработку ПО, направленную на поддержку дистрибутива как конечного продукта: даже такие необходимые детали как пакетные менеджеры и инсталяторы, утилиты настройки и прочее ПО масштаба дистрибутива либо случайно прирастает трудами "добровольцев" и более уже никогда не меняется, либо заимствуется из других дистрибутивов. Качество этого ПО всегда крайне низкое.
- Нет того самого "Тупого заказчика": ребята делают продукт "для себя", и на них полностью распространяются тезисы раздела "Продвинутые пользователи";
- У дистрибутива нет будущего (это просто очередная точка отсчета, она позволяет вернуться к ней, но не определяет никакого плана будущего развития);
- Нет анализа рынка сбыта: ребята делают продукт "для себя" и включают туда то, что нужно им.
- Нет разработчиков, которые могли бы взять на себя коррекцию и дописывание, исправление ошибок в продуктах, входящих в дистрибутив. Отговорка мантейнера: "а при чем здесь я, это апстрим виноват", - является более чем общей, причем, мантейнер более чем прав: попытка самостоятельно (не в рамках политики дистрибутива) исправить явные ляпы апстрима приводит к снижению полезности дистрибутива (и нарушает вышеупомянутый картельный сговор).
При отсутствие единого руководства и какой-либо политики в принятии решений, иной, кроме бесконечной полемики, о качестве дистрибутива можно сказать только одно: дистрибутив делают люди, которые смогли перекричать других.
Как же сделать самый популярный линукс
Вы знаете, а на самом деле просто. Необходимое условие - наличие компании, которая будет зарабатывать деньги на том, что выпускает дистрибутив. Которая проанализирует рынок и найдет потребителей. Которая будет делится доходами с мантейнерами и склонит на свою сторону разработчиков. Которая будет нанимать разработчиков, работающих на дистрибутив в целом, а не на отдельные продукты. Которая осмелится пойти вопреки стандартам, и перейдет барьер рестандартизации, сделав новый продукт, отличный от старого. Главная идея - сделать разработку дистрибутива коммерческой. И решать проблемы с апстримом не уговорами и спорами (которые, подчеркиваю, тянутся уже лет пятнадцать), а наймом своей команды разработчиков, выплаты части прибыли апстриму и подобными рычагами.
Вот это рецепт. А все те рассуждения, которые я прочитал в рассылке - это перемалывание тем, о которых я устал не то что читать, а даже помнить об их существовании :).
Десктопный линукс
Не могу не сказать пару слов о так называемом "десктопном линуксе": о дистрибутиве и программном обеспечении ориентированном на "среднего" потребителя. Средний потребитель не может программировать, не может сам бороться с глюками, не знает и не хочет знать особенностей операционной системы - и тем более дистрибутива - и тем не менее он хочет жить, работать и жить удобно. На сегодняшний день хорошо настроенный линукс оказывается - для многих - удобнее чем виндовс. Мы знаем об этом благодаря добровольцам, настроившим линукс своей дочери, подружке, соседке или преподавателю. Именно эта "хорошая настройка" - почва, в которой сгнили корни популярности "десктопного линукса". Для десктопного линукса нет того звена "поставщиков услуг" для которых потребителем будет конечный десктопный пользователь, а основой работы - какой-либо дистрибутив линукс.
Удивительно, но факт: в россии, практически все равно что настраивать конечному потребителю: линукс или виндовс. И тот и другой - к сожалению - бесплатны, и тот и другой глючат, а несущественные различая в возможностях потребителю просто по барабану: ему, в массе, интернет нужен. Но при этом коммерческая настройка виндовс для конечного пользователя - реально существующий бизнес, а коммерческая настройка линукс отсутствует как класс даже у тех, кто в этом кровно заинтересован: продавцов железа, провайдеров интернет-услуг и прочих фирм, основой деятельности которых является наличие настроенного ПО у пользователя - причем, в сущности, все равно какого. Этот феномен для меня загадка, попытки объяснить его через отсутствие популярности, отсутствие возможностей и пригодность для домашнего использования - неубедительны: популярен, обладает возможностями и пригоден.
Так вот. Если говорить о создании популярного десктопного дистрибутива, то решение лежит не в реализации каких-то чудесных свойств, а, фактически, в появлении между дистрибутивом и конечным пользователем такого бизнеса как установка и настройка для конечного пользователя. Разумеется, с оттоком части денег дистрибутивостроителям и далее по списку.
Заключение
К сожалению, я мало знаю компаний, которые бы пошли на это. Может быть просто прошел мимо. Отчасти такой подход использует Red Hat: во всяком случае, у них есть подразделение собственных разработчиков, которые разрабатывают перспективное ПО для Red Hat в первую очередь. Недавний опыт Apple, хоть и не имеет отношения к линуксу как таковому, неплохо демонстрирует перспективы. В России ситуация несколько хуже: я знаю пару фирм, которые продают свободное ПО со своей поддержкой, разрабатывая как общедоступные патчи, так и небольшой корпус закрытого кода: они успешны, что не может не радовать, но наличие закрытого кода несколько настораживает. Кроме того, о дистрибутиве в их случае речи не идет. А вот российские дистрибутивостроители, в сущности, паразитируют на сообществе: в оправдание им можно сказать только то, что и сами они денег на этом не поднимают.
Небольшим прорывом (я не очень осведомлен в деталях) является т.н. Школьный Линукс, насколько я знаю, стратегия работы с конечными пользователями как раз включает в себя создание того самого промежуточного звена, за счет которого адаптация дистрибутива к капризам пользователей не является исключительной головной болью дистрибутивостроителей, а обеспечивается отдельными структурами. Надеюсь, что этот удачный коммерческий опыт массового внедрения дистрибутива не пропадет в истории как забавный казус, а будет началом решения системных проблем дистрибутивостроения, которые рассмотрены в этой статье.




