, гораздо интереснее другое. История с Linux'ом и fetchmail'ом указывает на следующую стадию в эволюции программного обеспечения - активное сообщество пользователей и разработчиков. В "The Mythical Man-Month" Фред Брукс рассматривал различные зависимости времени разработки. Он показывает, что сложность проекта и его коммуникационные издержки квадратично зависят от числа разработчиков, в то время как проделанная работа зависит только линейно. Это утверждение называется "закон Брукса", и большинство признает его правильным. Однако, если бы дело было только в законе Брукса, Linux не мог бы существовать. Пять месяцев назад, Джеральд Венберг в "Психологии программирования" предложил теорию, которую мы можем рассматривать, как жизненную поправку к закону Брукса. Обсуждая "неэгоистичное программирование" (egoless programming), Венберг замечает, что если разработчики не являются безраздельными владельцами исходников программ и приветствуют, когда другие люди помогают искать ошибки и предлагают различные улучшния, программа прогрессирует намного быстрее. Возможно, терминология Венберга не способствует тому, чтобы его утверждения приняли. Многие люди улыбаются при описании хакеров Интернет как "неэгоистичных". Однако, я думаю, что его аргументы лучше всего соответствуют сегодняшней ситуации. История UNIX подготовила нас к тому, что мы узнали от Linux (и тому, что я проверил на небольшом проекте, копируя методы Linux'a). В то время как кодирование является в основном индивидуальной деятельностью, гениальные хаккерские решения приходят от всего сообщества. Разработчик, который работает в замкнутом проекте и пользуется только своей головой, уступает разработчику, создающему открытый проект, в котором участвуют сотни людей, занятых поиском ошибок и предлагающих различные улучшения. Однако, в традиционном мире UNIX этот подход не является единственным. Одна из причин - это коммерческие и торговые секреты, ограничения различных лицензий и т. д. Другая причина заключается в том, что Интернет недостаточно хорошее средство общения. Прежде чем появилась дешевая связь через Интернет, существовало несколько географически компактных сообществ, традиции которых поощряли "неэгоистичное программирование", и разработчики сотрудничали друг с другом. Bell Labs, MIT AI Lab, UC Berkely стали родиной легендарных и до сих пор мощных изобретений. Linux - это первый проект, который пытался собрать таланты по всему миру. Я думаю, что период зарождения Linux неслучайно совпал с появлением World Wide Web. Линус был первым, кто понял, как играть по новым правилам, которые стали возможными благодаря Интернет. Дешевый Интернет является необходимым условием для развития модели Linux, но, как мне кажется, недостаточным. Другие жизненные факторы - это стиль руководства и традиции, побуждающие разработчиков искать сотрудников для достижения максимального эффекта. Что же это за стиль руководства и каковы эти традиции? Они не могут быть основаны на принуждении, потому что тогда бы мы не получили таких результатов. Ранее я ссылался на эффект Delphi, как возможное обЪяснение закона Линуса. Также для этого безупречно подходят аналогии с адаптивными системами в биологии и экономике. Мир Linux во многих отношениях ведет себя как свободный рынок или как экологическая система. Это похоже на множество заинтересованных агентов, которые пытаются максимизировать полезность. В конечном итоге система, где эти агенты действуют независимо, оказывается более эффективной, чем та, в которой происходит централизованное планирование. Функция полезности, которую максимизируют хаккеры Linux, не является классической для экономики. Она зависит от их самоудовлетворения и репутации среди других хаккеров.(Можно было бы назвать их мотивацию альтруистической, однако альтруизм сам по себе является средством самоудовлетворения альтруиста.) Добровольные сообщества, работающие по этому принципу встречаются довольно часто. Я долгое время участвовал в сообществе любителей научной фантастики, которое, в отличие от сообщества хаккеров, признает "egoboo" - улучшение репутации среди других фанатов - как единственную движущую силу добровольной работы. Можно рассматривать метод Линуса, как способ создать эффективный "egoboo" рынок. То есть соединить заинтересованность отдельных хаккеров и задачу, которая может быть решена только в сообществе. В проекте fetchmail я показал (в меньшем масштабе), что эти методы могут давать хорошие результаты. Возможно, я даже сделал это более систематически. Многие люди (особенно те, которые не доверяют свободным рынкам по политическим причинам) ожидают, что подобное сообщество эгоистов будет расточительно, скрытно и враждебно настроено. Однако эти ожидания обманываются, что подтверждается одним ярким приером. Этот пример - ошеломляющее разнообразие, качество и глубина документации Linux. Известно, что программисты ненавидят писать документацию. Почему же тогда документация Linux столь обширна? Очевидно, что в этом случае свободный рынок Linux работает эффективнее, чем производители коммерческих программ. Fetchmail и Linux показали, что опытный координатор может использовать Интернет для связи между разработчиками, не опасаясь, что проект превратится в хаос. Поэтому закону Брукса можно противопоставить следующее: 19. Если у координатора разработки есть средство связи, по меньшей мере такое как Интернет, и он умеет лидировать без принуждения, то лучше пользоваться несколькими головами, чем одной. Я думаю, что будущее свободного программного обеспечения принадлежит людям, которые знают как играть в игру Линуса, которые оставляют стиль собора и разрабатывают проекты в стиле базара. Это не означает, что индивидуальность не играет больше никакой роли. Наоборот, впереди окажутся те, кто начинал с индвидуального мастерств, а потом расширил его через эффективное создание добровольных сообществ. Возможно, это будущее не только свободных программ. Ни один разработчик коммерческих программ не сможет сравниться с сообществом Linux в решении проблемы. Немногие смогут нанять двести человек, которые участвовали в разработке fetchmail. Вероятно, в конце концов свободное программное обеспечение победит, не только потому что кооперация правильна с точки зрения морали, но просто потому, что коммерческий мир не сможет состязаться с сообществами free-software, которые могут бросить гораздо большие силы на решение одной проблемы. 11. Благодарности Эта статья была значительно улучшена, благодаря тому что очень многие люди участвовали в ее обсуждении. Особенно я благодарен Джеффу Датки dutky@wam.umd.edu , за то что предложил формулировку "отладка может быть параллельной" ("debugging is parallelizable") и помог ее проанализировать. Также я благодарен Нэнси Лебовитц nancy@universe.digex.net. Много конструктивной критики поступало от Джоан Эслингер wombat@kilimanjaro.engr.sgi.com и Марти Франц marty@net-link.net из General Technics. Пол Эггерт eggert@twinsun.com отметил конфликт между GPL и моделью базара. Я благодарен членам PLUG, группы Philadelphia Linux User's за тестирование первой публичной версии этой статьи. И, конечно, мне очень помогли комментарии Линуса Торвальдса. 12. Что читать дальше. Я процитировал несколько отрывков из Mythical Man-Month Фредерика Брукса. Я рекомендую его 25-ое юбилейное дополнение от Addison-Wesley (ISBN 0-201-83595-9), которое дополняет его статью "No Silver Bullet". Джеральд П. Венбегр в Psychology Of Computer Programming (New York, Van Nostrand Reingold 1971) представил неудачно названное понятие "неэгоистичного программирования". Хотя он не смог осознать бесполезность "принципа команды", он, вероятно, был первым, кто рассмотрел эту проблему всвязи с программным обеспечением. Ричард П, Габриэл, рассматривая Unix до эры Linux, спорит о превосходстве примитивной модели базара в своей статье: Lisp:Good News, Bad News, and How to Win Big. Де Марко и Листер Peopleware:Productive Projects and Teams (New York;Dorset House, 1987; ISBN 0-932633-05-6) - это бесценный джем, где я с удовольствием увидел цитаты из Фреда Брукса. Хотя только небольшая часть из высказываний авторов напрямую применима к Linux, рассматриваемые условия, необходимые для творческой работы, помогут тем, кто попытается перенести некоторые принципы модели базара в более коммерческий контекст. 13. Эпилог: Netscape приветствует Базар! Очень странно осознавать, что ты помогал вершиться Истории ... 22 января 1998 года, приблизительно через семь месяцев после того как я впервые опубликовал эту статью, Netscape Communications, Inc. обЪявила о своих планах сделать открытыми исходные тексты Netscape Communicator. Однако, я и представить себе не мог, что предшествовало этому обЪявлению. Эрик Ханн, исполнительный вице-президент и глава технологического отдела Netscape'a написал мне: "От имени всех членов корпорации, я хочу поблагодарить Вас за то, что вы помогли нам понять эту проблему. Ваши убеждения и ваши статьи оказались наиболее вескими доводами в пользу принятия этого решения." На следующей неделе я вылетел в Silicon Valley для однодневной стратегической конференции с исполнительными и техническими сотрудниками Netscape'a. Мы вместе разработали лицензию и стратегию выпусков релизов исходников Netscape'a, а также составили планы по внесению положительных вкладов в open-source сообщество. Еще рано слишком углубляться в детали, но где-нибудь через несколько недель мы получим подробности. Netscape готов к тому, чтобы проверить модель Базара на настоящем полномасштабном проекте, взятом из коммерческого мира. Для мира открытых систем это предсттавляет опасность: ведь если проект Netscape'a не будет работать, то концепция open-source будет очень сильно дискредитирована в коммерческом мире. С другой стороны это замечательная возможность для эксперимента. Предварительная реакция на продвижение в сторону Wall Street была положительной. Мы получаем шанс показать свои способности. Если, благодаря этому проекту, Netscape вернет себе существенную часть рынка - это будет означать запоздалую революцию в компьютерной промышленности. Следующий год обещает быть и поучительным и интересным. 14. Версия и история изменений $Id: baz14.txt,v 1.1 1998/07/03 10:27:42 aak Exp $ Я представил версию 1.16 на Linux конгрессе 21 марта 1997 года. Я добавил библиографию 7 июля 1997 года в версию 1.20 Я добавил анекдот о Perl конференции 18 ноября 1997 года в версию 1.27 Я изменил слова "free software" на "open source" 9 февраля 1998 года в версии 1.27 Я добавил "13. Эпилог: Netscape приветствует Базар!" 10 февраля 1997 года в версию 1.31 Остальные изменения содержат небольшие редакторские исправления.