От рынка до базара,и обратно
АрхивПопробуйте-ка организовать работу даже 30 программистов так, чтобы они не переругались. Или договориться о выполнении проектных решений с 300 разработчиками. А разве могут 3000 человек написать компактные и быстрые программные коды без ошибок? Вот он, истинный источник мастдайства: невозможность организовать разумное разделение труда в действительно больших программных проектах. В обычной жизни с этой задачей справляется капиталистический свободный рынок: люди, ориентируясь на ценовые сигналы, сами рассаживаются на те рабочие места, на которых они оказываются наиболее эффективными. Когда в действительно больших проектах это делает не рынок, а начальник, получающаяся система рано или поздно must die, независимо от того, является ли эта система операционной или советской.
Но вот появился Интернет, и вместе с ним на проектах GNU, Linux и Apache был продемонстрирован новый способ организации труда программистов. Этот способ разработки заранее неизвестным числом добровольных программистов, бета-тестеров, архитекторов был назван "базаром" - в противоположность "кафедральному" (кафедральные соборы строились с централизованным менеджментом фиксированной командой). В силу того, что за каждой строчкой опубликованного кода приглядывает множество глаз, "базарное" программное обеспечение отличается невероятной надежностью, производительностью, функциональностью, документированностью, оригинальностью и т. д.
В начале нынешнего года некоторые патриархи движения freeware осознали, что главным в данном способе разработки является не бесплатность кода, а его открытость. Окончательно это понимание появилось после того, как Netscape открыла исходники и превратила в "базар" разработку своего Интернет-браузера (www.mozilla.org). Тогда патриархи из маркетинговых соображений поменяли в названии своего движения слова free software (бесплатное ПО) на open source software (ПО открытых исходников). Eric Raymond стал евангелистом нового движения и зафиксировал все эти события на своем сайте (www.opensource.org).
"Базарная" модель существенно опирается на создание особого вида онлайн-тусовки - онлайн-тусовки разработчиков. В прошлой своей колонке (КТ #47 [275]) я писал: "Ключевые слова для групповой работы - управление и контроль. А в тусовках цель - тусоваться, и границы команды весьма размыты. Ключевые слова для подобных "групп" - соучастие, влияние". Как ни странно, эти слова могут быть применимы и к тусовкам разработчиков.
Если разобраться, тусоваться вовсе не означает бесцельное времяпрепровождение. Просто у каждого участника разработки есть своя цель. Далее начинает работать капиталистическая модель: неважно, какие именно индивидуальные цели преследуют участники тусовки, - важно, что итоговые результаты деятельности всех участников получаются весьма хороши. Как всегда, в сложных процессах капитализм (самоорганизация) неизменно лучше социализма (центрального планирования). Рынок есть рынок, даже если в оплату идут не деньги: если за работу на предлагаемых "бесплатных" условиях никто не берется, то она и не будет сделана, социалистического принуждения к работе нет. Но обычно разработчики находятся, ибо в подобных "коммунах" есть различные способы неденежной мотивации.
Число участников разработки - архитекторов, бета-тестеров, программистов, технических писателей - в силу ее "тусовочной" организации просто нельзя посчитать. Но опыт организации этого заранее неизвестного числа участников уже накоплен.
Прежде всего, все участники делятся на интеграторов, разработчиков и конечных пользователей.
Интеграторы берут на себя поддержание инфраструктуры (вебмастеринг сайта проекта, администрирование архивов исходных текстов и списков рассылки), а также общее планирование, архитектурные решения и разрешение конфликтов. Они общаются с разработчиками, причем только с ними, а не с конечными пользователями. Они не пишут исходные тексты, практически не тестируют программы. Они поддерживают целостность проекта. Экспериментально выяснилось: при подобной организации версии программ не "разбегаются".
В свою очередь, разработчики делятся на уполномоченных интеграторами владельцев частей проекта, ответственных за какую-либо обособленную часть работы, и просто коллег, которые общаются с конечными пользователями, фиксируют ошибки, анализируют их причины, предлагают новые функциональные возможности, пишут исходные тексты и тем самым повышают свое мастерство и авторитет в коллективе.
Конечные пользователи общаются с разработчиками и получают от них свежие бесплатные версии программы и поддержку.
Инструментарий для "базарной" организации программистских работ уже достаточно известен: репозитарий исходных текстов и Web-доступ к нему, удобные просмотровщики исходных текстов, система контроля версий и т. д. Конечно, это далеко не groupware.
Можно только догадываться, какие перспективы появляются перед "базарными" проектами. Ведь не обязательно так разрабатывать только программное обеспечение и документацию. Это могут быть также энциклопедии, литературные произведения, исторические заметки, и даже базы знаний. Например, большие базы знаний здравого смысла типа той, которую делает Douglas Lenat (www. cyc.com). Он заявил, что победит на рынке баз знаний просто потому, что никто другой не возьмется 25 лет подряд кодировать простые утверждения на языке представления знаний. Но может быть подобная задача будет гораздо быстрее решена "всем базаром"?
Для совсем уж повсеместного принятия новой модели разработки надежного ПО нужно сделать еще шаг: от "базара" к рынку. Рынок - это когда все то же самое, но за деньги. А сегодняшняя модель "базара" подразумевает исключительно бескорыстные вклады разработчиков, хотя никто (кроме Richard Stallman, www.fsf.org) не утверждает, что деньги и открытые исходные коды несовместимы.
Сейчас для организации полностью рыночной модели между интеграторами и разработчиками не хватает четкого контракта, в котором одни на конкурсной основе предлагают работу, а другие ее выполняют за плату. Для реализации этой идеи нужно только сообразить, как зарабатывать на бесплатных программах самим интеграторам - чтобы они затем смогли из полученного дохода расплатиться с разработчиками. Поиском такой бизнес-модели для "базарной" разработки сейчас лихорадочно занимаются тысячи людей по всему миру. Действительно, неужели нельзя зарабатывать деньги, предлагая самые надежные, безошибочные, универсальные, компактные программы?
Самую распространенную модель "зарабатывания" на программах с открытыми исходниками лучше всего можно продемонстрировать на примере "базарной" разработки русскоязычного Web-сервера Apache (apache.lexa.ru). Список рассылки у этого проекта включает уже более 1000 человек. Алексей Тутубалин пишет в FAQ: "Я занимаюсь этим проектом в свободное время и под хорошее настроение. Поэтому никаких сроков пообещать нельзя. Если вам нужна какая-то feature завтра-послезавтра-через-неделю, то вы можете либо написать ее сами (и патч будет принят с благодарностью), либо нанять меня на работу (и все будет сделано в первую очередь)".
Вокруг этих программ уже зарабатывают (на их адаптации к конкретным условиям, на обучении, на печатании книжек). Но общего решения проблем финансирования "базарных" разработок пока не придумано.
Тем временем, старые и привычные бизнес-модели софтверного рынка неожиданно быстро сдают свои позиции. Вот и IBM недавно объявила, что DB2 для Linux будет бесплатной. Всемирного перехода от рынка к "базару", похоже, уже дождались. Теперь будем ждать нового рынка.