|
Николай Безруков
Эта статья предлагает обзор недостатков публикации Эрика Раймонда (Eric Raymond, ESR) "Собор и Базар" ( Содержание
Введение"Факты --- упрямая вещь, и каковы бы ни были наши желания, склонности либо веления наших страстей, они не могут поколебать факты и улики."Феномен открытых исходных текстов --- очень интересное и влиятельное явление. Для меня он особенно интересен, поскольку я считаю, что они могут оказать положительное влияние в развивающихся странах. Чтобы обеспечить разработкам, выполненным на базе идеи открытых исходных текстов, долгосрочное и стабильное развитие, мы должны подходить к ним объективно и четко видеть, наряду с сильными и слабыми сторонами идеи открытых исходных текстов, возможные "подводные камни". Таким образом, существует потребность в реалистичной карте мира открытых исходников.
Выход новой книги Эрика Раймонда (Eric Raymond или ESR) "Собор и
базар: размышления случайного
революционера по поводу Linux и открытых исходников" [The Cathedral
and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary.---
Sebastopol, Calif.: В своей предыдущей статье я пытался показать, что применительно к разработке программ методом открытых исходных текстов метафора "базара" является внутренне противоречивой. В настоящей статье мы более подробно рассмотрим аргументацию СиБ и попытаемся подвергнуть анализу содержащиеся в ней идеи.
Как я отмечал в своей предыдущей статье, в СиБ метод разработки
программ на базе открытых исходных текстов описывается как новое, революционное
явление. Я считаю, что это всего лишь еще одна разновидность научного сообщества.
Аналогично, для меня разработка Linux не является новой революционной моделью
разработки программ, а всего лишь логическим продолжением проекта GNU Фонда
Свободного Программного Обеспечения ( Данная статья включает два раздела. В первой части будут критически проанализированы основные идеи, содержащиеся в СиБ. Во второй части статьи исследуются ошибки и искажения, допущенные при анализе феномена состязания за статус в сообществах разработчиков программ методом открытых исходников, которые были допущены в СиБ, и будет предпринята попытка обрисовать более объективную картину этого явления. Пробелы и недостатки аргументации "Собора и Базара""Если свобода вообще что-либо значит, то это право говорить людям вещи, которые им не нравятся."В этой части статьи я хотел бы сконцентрироваться на некоторых идеях или, скорее, положениях, выдвинутых в СиБ. Эти идеи позднее некритично стали частью фольклора сообщества разработчиков и сторонников метода разработки программ с открытыми исходниками. Они часто цитируются в интервью и статьях представителей движения. Многие авторы программ с открытыми исходными текстами базируют свои аргументы на неявном предположении, что эти положения истинны. Среди наиболее спорных положений, выдвинутых в СиБ, следует отметить такие:
Закон Брукса неприменим к распределенным разработкам, основанным на Интернете"Самообман --- это наиболее массовая форма лжи;Одно из самых уязвимых положений, выдвинутых СиБ, состоит в том, что "В книге Мифический человеко-месяц (The Mythical Man-Month) Фред Брукс (Fred Brooks) заметил, что время программистов не аддитивно; увеличение числа разработчиков проекта, который отстал от графика, ведет к еще большему запаздыванию. Он утверждал, что сложность и затраты на общение в проекте возрастают пропорционально квадрату числа разработчиков, в то время, как полезная работа возрастает только линейно. Это утверждение стало известным как "закон Брукса" и часто рассматривается как очевидный факт. Однако, если бы закон Брукса отражал существующее положение вещей, то разработка ядра Linux была бы невозможной."Эта убежденность в том, что время (точнее, отдача --- прим. автора) программистов при увеличении коллектива разработчиков масштабируется иначе, если программисты связаны с помощью Интернета и работают над проектом с открытыми исходниками, повторяется и в других частях статьи в иной форме: "Возможно, в итоге культура открытых исходных текстов будет праздновать победу не потому, что сотрудничество морально или что "присвоение" программ (software "hoarding") аморально (предполагая, что вы являетесь сторонником этой точки зрения, чего нельзя сказать обо мне или Линусе), но просто потому, что мир закрытых исходников не может выиграть эволюционной гонки с коллективом разработчиков, практикующих метод открытых исходных текстов, поскольку последние могут использовать для решения проблем на порядок больше времени квалифицированных специалистов."Во-первых, я хотел бы подчеркнуть, что известная книга Мифический человеко-месяц завоевала статус классической работы среди монографий, посвященных проблемам разработки программного обеспечения. Она, безусловно, на несколько порядков важнее СиБ, и никакая критика со стороны последней ничем этой книге не повредит. Целый ряд концепций, фраз и даже заголовков отдельных разделов этой популярной книги стали частью стандартной терминологии в области разработки программного обеспечения. Достаточно упомянуть "эффект второй системы" ("the second-system effect"), "десять фунтов в пятифунтовом мешке" ("ten pounds in a five-pound sack"), "планируй выбросить разработанную систему" ("plan to throw one away"), "Каким образом проект может опоздать на целый год?... постепенно, по одному дню." ("How does a project get to be a year late?...one day at a time"). В начале 60-х, занимая пост менеджера проекта Operating System/360 (OS/360), Фредерик Брукс заметил снижающуюся отдачу коллективов, включающих большое количество разработчиков, а также то, что подход к планированию срока выполнения проекта на основе подсчета так называемых человеко-месяцев является ложным. И это положение остается истиной в 1999љгоду совершенно так же, как оно было верно в 1975-м, когда книга была впервые опубликована.
Реальная проблема тезиса (о неприменимости закона Брукса), выдвинутого
СиБ состоит в том, что благодаря популярности этой статьи подрывается
понимание важности изучения книги Мифический человеко-месяц (которая,
кстати, является одной из немногих книг на компьютерную тематику, сохранивших
свою актуальность спустя несколько десятков лет после первой публикации)
программистами, разрабатывающими программы методом открытых исходников.
В действительности "закон Брукса" обычно формулируется как "добавление
разработчиков на поздних стадиях запаздывающего программного проекта еще
больше отодвигает срок его сдачи" ("adding manpower to a late software project
makes it later"). Термин "мифический человеко-месяц" (или, более точно
"постулат о ложности человеко-месяца как единице измерения производительности
программистов") обычно используется, чтобы подчеркнуть факт снижающейся
отдачи от индивидуальных членов по мере увеличения коллектива разработчиков,
даже в том случае, когда все они работают над данным проектом с самого начала.
Одно из лучших пояснений этой концепции дал Рэй Дункан (Ray Duncan) в своем
"Что такое мифический человеко-месяц? Представьте себе программу средней сложности времен начала микрокомпьютерной эры, наподобие первых версий электронной таблицы Lotus 1-2-3, базы данных dBASE фирмы Ashton-Tate или редактора Wordstar. Предположим, что эта программа потребует от одного очень талантливого высоко мотивированного программиста примерно год на проектирование, реализацию, отладку и документирование. Другими словами, 12 человеко-месяцев. Представим, что ситуация на рынке такова, что нам во что бы то ни стало нужно завершить разработку этой программы за один месяц, а не за год. Как решить эту проблему? Вы можете сказать: "возьмите 12 опытных кодировщиков, разделите работу, не приставайте к ним в течение одного месяца, и проблема будет решена. Это те же 12 человеко-месяцев, не так ли?"Большинство выдающихся программистов напоминают людей искусства в значительно большей степени, чем это можно предположить, исходя из технического характера данной специальности. Не случайно другая замечательная книга по программированию названа Искусство программирования для ЭВМ ( Было бы наивно предполагать, что для одного и того же коллектива разработчиков использование Интернета приведет к автоматическому повышению производительности труда по сравнению, например, с использованием тем же самым коллективом локальной сети или, скажем, мэйнфрейма. Более того, если мы предположим одинаковый уровень разработчиков, географически компактные группы всегда будут иметь преимущество перед распределенными коллективами, связанными только с помощью Интернета. Интернет используется в проектах, основанных на методе открытых исходников, для того, чтобы создать и объединить географически распределенную группу талантливых разработчиков. Эта способность Интернета преодолеть географические барьеры потенциально позволяет повысить качество того или другого коллектива разработчиков. Однако устранение географических барьеров не снимает остальных ограничений, которые действуют в данном проекте, хотя действительно может существенно повысить качество отдельных членов группы. Этот факт является единственным существенным преимуществом проектов с открытыми исходниками, которое я вижу. Наивно предполагать, что связь посредством Интернета автоматически ведет к повышению производительности коллективов разработчиков программ. Я считаю, что иллюзия неприменимости "постулата о ложности человеко-месяца как единице измерения производительности программистов" и закона Брукса ограничивается исключительно проектами, для которых полный функциональный прототип уже существует, и большинство или все архитектурные проблемы решены. Подобное, скорее всего, имело место в случае разработки ядра Linux, являющегося, по сути, повторной реализацией ядра Unix методом использования открытых исходников. С некоторыми оговорками, это, наверное, также справедливо при реализации любой системы, для которой как спецификация (Posix в случае ядра Linux), так и эталонная реализация (скажем, FreeBSD или Solaris) уже существуют и доступны всем разработчикам. Как было подчеркнуто в документе Halloween-I: "Простейший путь добиться координированного поведения большой, слабо организованной толпы--- это направить ее к известной цели. Наличие "хвостовых огней" придает конкретность размытому видению. В таких ситуациях "хвостовой огонь" служит заменителем высокого уровня централизации руководства. Конечно, когда этот неявный организующий принцип перестает действовать (когда проект достигает уровня существующих аналогичных разработок в данной области), потребность в руководстве и талантливых руководителях, необходимых, чтобы достичь новых горизонтов, резко увеличивается. Вполне возможно, что наиболее важным и интересным отдельно взятым препятствием, стоящим перед лицом коллектива разработчиков ядра Linux, является достижение паритета по уровню развития с другими реализациями UNIX." "При достаточном количестве глаз все ошибки лежат на поверхности""Существуют всего две бесконечные вещи: вселенная и человеческая глупость, причем насчет бесконечности первой у меня есть некоторые сомнения ."Одним из важнейших тезисов, пропагандируемым СиБ, является девиз, приписываемый Линусу Торвальдсу (Linus Torvalds): "При достаточном количестве глаз все ошибки лежат на поверхности" ("Given enough eyeballs, all bugs are shallow"): "С другой стороны, базарная точка зрения состоит в том, что программные ошибки в основном лежат на поверхности или, по крайней мере, они становятся видимыми весьма быстро, как только на них начинают глядеть тысячи энергичных соразработчиков, наваливающихся на каждую вновь выпущенную версию. Соответственно имеет смысл выпускать новые версии как можно чаще, чтобы получить больше исправлений, и, как дополнительный позитивный побочный эффект, ваш провал будет менее значителен, если время от времени вы что-то прошляпите."Отладка сложной программной системы --- гораздо более сложный род деятельности, чем просто привлечение громадного числа "энергичных соразработчиков" к анализу исходников. Для наиболее сложных проектов на каждую вторую или третью выявленную и исправленную ошибку может вноситься еще одна. Дистрибутивы Linux могут служить отличной иллюстрацией этого положения, поскольку большинство "промышленных" (четных --- прим. автора) версий ядра в ретроспективе (принимая во внимание количество выявленных ошибок и соответственного числа заплат, выпущенных для них до момента полного прекращения сопровождения) вероятно, логично было бы переклассифицировать в бета-версии. В СиБ высказано утверждение, что несколько талантливых разработчиков могут успешно работать над одним фрагментом кода параллельно, используя для координации только электронную почту. В конце концов, один из них найдет ошибку и напишет заплату быстрее, чем в коммерческой структуре со специально подготовленными тестерами. Вне всяких сомнений, если достаточное количество талантливых разработчиков будет толпой искать одну и ту же ошибку, то, вероятно, она будет, рано или поздно, найдена. Но такая идея параллельной отладки несколько проблематична. В частности, возникают следующие вопросы:
"Computer: В известном смысле, Linux следует этой традиции [Unix]. Ваше мнение по поводу этого феномена?В своем "Я полагаю, будет наивным считать, что в этой гонке у Linux есть надежда потеснить Microsoft, начав гонку из положения значительного отставания [от положения в этого гонке фирмы Microsoft] и имея лишь долю ресурсов и любительскую рабочую силу. (Я придерживаюсь того же мнения по отношению к Unix.)"Даже поверхностный анализ "Например, одна из моих попыток поучаствовать в разработке ядра привела к ошибке, на поиск и исправление которой ушло три года, и даже тогда это было сделано кем-то, кто специализировался на игре со внутренностями OS/2. Я имею в виду функцию sprintf внутри ядра."Эта цитата подтверждает тот факт, что круг тех, кто может напрямую вносить изменения в код ядра, целесообразно ограничить минимальным числом самых квалифицированных участников проекта (ядром разработчиков). Другими словами при разработке ядра операционной системы следует всеми силами избегать базарной модели. Следует ли разработка ядра Linux "соборной" или "базарной" модели?"Истинная вера заставляет нас признать, что есть только одна святая Католическая Апостольская Церковь, во что мы твердо верим и открыто исповедуем. И вне нее нет и не может быть ни спасения, ни отпущения грехов."Многие указывают, что уровень децентрализации при разработке ядра Linux нуждается в дополнительном обсуждении. Черно-белая картина, нарисованная в СиБ (монолитная авторитарная Соборная модель разработки программ против демократичной, распределенной Базарной модели), представляется чрезмерно упрощенной. Эти метафоры для высокой централизации разработки (Собор) и ее отсутствия (Базар) не учитывают ни размеров конкретного проекта, ни его сложности, ни временных ограничений и давления по срокам, ни доступности ресурсов и инструментов, а также говорим ли мы о ядре системы (подобно ядру Linux) или же о периферийных ее частях. Для крупных проектов, подобных операционным системам, особенно важно, чтобы ядро системы разрабатывалось централизованно небольшой тесно сплоченной командой. В то же время при разработке периферийных частей системы более выгоден менее жесткий, более децентрализованный подход. Я считаю, что в СиБ эти два типа разработки совершенно не различаются , что отражено в следующей цитате: "В ретроспективе одним из случаев успешного использования методов разработки ядра Linux следует признать разработку Lisp-библиотеки GNU Emacs Lisp и архивов кода на Lisp. В отличие от "соборного" стиля ядра Emacs, реализованного на C, и большей части другого программного инструментария, разработанного FSF, эволюция общего фонда кода на Lisp была быстрой и в основном контролировалась пользователями. Идеи и прототипы команд зачастую переписывались трижды или четырежды, прежде чем достичь стабильной окончательной формы. При этом часто образовывались неформальные коллективы разработчиков связанные через Интернет, в стиле Linux."Ни в коем случае нельзя смешивать эти два типа разработки: разработку ядра Emacs на C и разработку кода команд на Lisp. Они различны и должны рассматриваться с точки зрения необходимости применения разных моделей разработки. В больших и сложных проектах существуют определенные преимущества в использовании смешанных моделей разработки, отличающихся от крайних случаев чистой централизации (Собор) или полной децентрализации (Базар). Неудивительно, что в реальности преобладают смешанная форма, или что в мире Linux есть место для разработок с высокой централизацией. По "Идея разработки с использованием открытых исходников может звучать демократично, но это не так. В среду на выставке LinuxWorld Expo лидеры некоторых из самых известных проектов с открытыми исходниками заявили, что действуют как диктаторы.В этом описании существующей организации разработки ядра Linux, принадлежащем ведущему разработчику ядра, можно сразу заметить элементы, чуждые стилю Базара. Описанная организация более похожа на весьма централизованную ("соборную") модель разработки. Например, вы не можете общаться с Линусом напрямую, а должны передавать свои модификации ниже стоящим разработчикам, ответственным за отдельные части ядра (trusted lieutenants). Если ваши предложения отвергнут, жаловаться некуда и некому, что звучит совсем недемократично. Как отмечал Джордан Хаббард (Jordan Hubbard -- известный адвокат системы FreeBSD -- прим. автора): "Вопреки периодическим заявлениям некоторых апологетов свободных программ, централизованные модели разработки, подобные проекту FreeBSD, не являются чем-то устаревшим или неэффективным в мире свободного ПО. Тщательное исследование успеха так называемой анархической или "базарной" модели разработки зачастую вскрывает весьма значительный уровень централизации, являющийся неотъемлемой частью процесса разработки."Безусловно, эти аргументы не исключают возможности классифицировать некоторые части разработки Linux как принадлежащие децентрализованной (базарной) модели, в особенности разработку драйверов, утилит и небольших приложений. То же самое справедливо (и даже в большей мере) для мира DOS/Windows/Windows NT. Очевидно, что для DOS/Windows по сравнению с Linux доступно больше условно-бесплатных (shareware) и бесплатных (freeware) программ. Система DOS была первой демократичной // shareware и freeware --- вовсе не то, что free software, а последнего // для DOS не так и много, в основном --- перенесенные из *nix программы GNUпрограммной средой, использовавшей возможности Интернета и задолго до Linux послужившей основой для основных архивных сайтов, которые "удачно воплощали" базарный стиль, принимая "взносы от каждого". "Проблема не в том, что делаются неверные выводы, но скорее в том, что предполагается мировоззрение "открытое хорошо, коммерческое плохо", которое на наш взгляд, вряд ли разделяется большинством руководителей отделов программирования и вычислительных центров. Помимо попыток обращения в свою веру, СиБ делит все программные разработки лишь на два крайних класса. Собор представляет монолитный, плановый стиль разработки программ "сверху вниз". Базар, который рекомендуется автором, служит примером хаотичной, эволюционной, рыночной модели. Редко такая примитивная классификация соответствует реальности. Наконец, смена компанией Netscape своей стратегии в сочетании с анти-Microsoft'овскими настроениями среди сторонников программ с открытыми исходниками может привести кого-то к заключению, что Netscape воплощает в себе Базар, а Microsoft --- регрессирующий, догматичный Собор. Но такой взгляд также излишне упрощен.Многие бизнес-стратегии Microsoft имеют близкие аналоги в мире открытых исходников. Как говорят авторы меморандума Halloween-I: "Различные рецензенты этой статьи единодушно указали, что внутренне нам следует рассматривать Microsoft как идеализированное общество разработки с использованием открытых исходников, но, по различным причинам, мы этого не делаем."Согласно книге [James Wallace, Jim Erickson. Hard Drive: Bill Gates and the Making of the Microsoft Empire.--- New York: Harper Business, 1992] ранняя бизнес-практика Microsoft в основном соответствовала положениям философии "базарного стиля":
"Давайте рассмотрим Linux. Представьте себе на минуту, что Линус Торвальдс пытался бы включить фундаментальные нововведения в архитектуру операционной системы в ходе разработки ядра. Насколько при этом было бы вероятно, чтобы ядро, полученное таким образом, оказалось бы столь же стабильным и успешным, как мы это видим сейчас?Эти доводы разделяют и другие критики СиБ. Например, Джонатан Юнайс "... Реальная действительность состоит в том, что Microsoft выпускает высоко функциональные программы, которые она потом стремительно улучшает. Хотя они часто перенасыщены возможностями (и танцуют, и читают, и поют), в то же время они имеют необычайно модульную конструкцию, а их возможности усиливаются тесной интеграцией с другими продуктами фирмы. Модель разработки, принятая в Редмонде, акцентирует внимание на тех же самых атрибутах, которые Раймонд отождествляет с "базаром": быстрая смена версий, модульные технологии разработки, большая и активная пользовательская база, множество независимых разработчиков, стремящихся развить и улучшить продукт в тысяче различных направлений, и исключительно тесная обратная связь с пользователями и разработчиками."В мире открытых исходников существует еще один источник централизации, который неявно действует против "базарной" модели. Большинство выдающихся продуктов с открытыми исходниками, включая Linux, используют лицензию GNU; это, возможно, было самым толковым из всех решений, принятых Линусом Торвальдсом. Основанное на GNU коммерческое пространство дает колоссальное преимущество первому дистрибьютору/интегратору, который занял прочное положение, первой захватившей выгодные позиции торговой марке, тем самым подавляя раскол. Авторы документа Halloween-I отметили этот аспект "лицензионного пространства" схожим образом: "Подобно коммерческим программам, самые жизнеспособные проекты с открытыми исходниками во многих категориях будут, в долговременной перспективе, уничтожать конкурирующие проекты с открытыми исходниками и 'поглощать' их интеллектуальные достижения. Например, Linux подавляет развитие BSD Unix и уже интегрировал большинство его основных идей (наряду с идеями коммерческих версий UNIX). Эта особенность наделяет проект, вышедший на рынок первым, колоссальным преимуществом: возможностью раньше других присвоить себе (застолбить) любую новую территорию...Программная эволюция, а не революция --- вот настоящий лозунг любого добившегося успеха движения. Большая пользовательская база подавляет способность достигшего признания продукта к революционным изменениям. С точки зрения тех, кто "сражается в траншеях" все эти Linux, gcc, Perl, Apache и другие продукты с открытыми исходниками являются просто подходящим оружием, инструментами достижения поставленной цели. И как считает большинство пользователей, в этом деле стандартный инструмент гораздо лучше нестандартного. Поэтому очень сложно потеснить с доминирующих позиций программный продукт, который стал стандартом де-факто. В то же время успех создает условия, которые ведут к застою конкретных технических решений в продукте добившемся успеха. Например, как в любой Posix-совместимой ОС, возможность новаторства в Linux ограничена необходимостью придерживаться принятых стандартов группы Posix. Я склонен считать, что значительная часть ценности и привлекательности Linux состоит в том, что его можно рассматривать как новый громадный стандартный SuperBIOS, авторские права на который не принадлежат ни одной компании. В каком-то смысле для Linux игра закончена этим фактом (принятия его в качестве "нового стандартного SuperBIOS" для PC, на базе которого можно разрабатывать прикладные системы --- прим. автора) и стабильность ядра становится исключительно важной для успешной разработки приложений. Поэтому следует ожидать, что скорее всего мы станем свидетелями тщательной шлифовки базовых подсистем ядра с целью улучшить планировщик задач, поддержку SMP, TCP/IP, файловых систем и тому подобного, но никак не радикальных архитектурных изменений или, Боже упаси, изменений в системных вызовах (API). По существу, инновации в Linux будут, в основном, ограничиваться приложениями. Как говорит Джейми Завински (Jamie Zawinski): "Несмотря на то, что можно найти контрпримеры, в общем случае великие свершения достигаются небольшими группами фанатов, имеющих единство целей. С ростом числа людей любое такое сообщество разработчиков неизбежно бюрократизируется и глупеет."Linux определенно уже вышел из стадии разработки небольшой группы. Теоретически, шанс стать новаторской ОС у Linux еще есть, если ее перенести в новую область, например, переделать для карманных компьютеров, операционные системы для которых, скорее всего, являются сейчас наиболее динамичной частью рынка ОС. Но это затруднительно вследствие существования большой пользовательской базы на платформе PC и архитектурных решений, которые подходят для старой платформы лучше, чем для новой. Обеспечивает ли модель разработки с использованием открытых исходных текстов лучшие результаты автоматически?"Люди думают, что если программа разрабатывается методом открытых исходников, то результат будет лучше автоматически. Это не так. Чтобы добиться успеха, вам нужно найти и твердо придерживаться правильного направления. Открытые исходники это отнюдь не панацея от всех бед, включая проблему мирового голода."Пора обсудить проблему качества программ с открытыми исходниками. Я не собираюсь превращать это обсуждение в проповедь на моральные темы (аналогом термина "discussion about family values" в оригинале статьи могут служить политические дискуссии в стиле "пикейных жилетов" из Золотого Теленка, но с несколько большей дозой лицемерия -- прим. автора). Я хочу обсудить всего одну конкретную и достаточно хорошо известную мне предметную область. Несколько лет я изучал проблемы разработки и использования так называемых "Возможно, это выглядит очевидным (давно существует поговорка "необходимость --- мать изобретений"), но слишком часто разработчики программ проводят многие дни, усердно работая за деньги над программами, которые им не нужны, и которые они не любят. Но в случае Linux это не так, чем и объясняется столь высокое среднее качество программ в Linux-сообществе."Однако, честно говоря, вторая часть вызывает сомнения, поскольку "среднее качество программ" в мире Windows (дешевые коммерческие продукты, условно-бесплатные и бесплатные) также исключительно высоко, несмотря на недостатки архитектуры этой ОС. Чтобы убедиться в этом, достаточно просмотреть несколько игр для Windows. Более того, публичные архивы Windows --- это настоящий "большой шумный базар всевозможных планов и подходов", подобно архивным сайтам Linux (более того, в отличие от благотворительного базара Linux, там, в принципе, как на настоящем базаре, принято платить деньги за товары --- прим. автора) Что действительно ново в модели разработки Linux ?"Париж стоит обедни."В предыдущей статье я рассматривал Linux как логическое продолжение проекта GNU Важное неявное положение, своего рода красная нить СиБ, состоит в утверждении, что на свете нет ничего лучше, чем открытые исходные тексты. Неважно, говорим ли мы о программе в сотню строк или в сто тысяч строк. Сквозь СиБ проходит явное утверждение, что Fetchmail и ядро Linux принадлежат к одному и тому же классу сложности. В действительности, это совершенно различные проекты, которые имеют между собой очень мало общего. С точки зрения технологии программирования, существует громадная разница между сравнительно простым проектом, подобным написанию Fetchmail, и крупным сложным проектом, типа разработки ядра Linux.
Центральным вопросом в практике программирования является вопрос о понимании
программных текстов. Всегда хорошо иметь исходники, но проблема состоит
в том, что зачастую этого недостаточно. Чтобы понять некоторую нетривиальную
программу, обычно требуется дополнительная документация. Эта потребность
растет экспоненциально с ростом объема кода.
Реальная проблема --- это понимание программ. Всегда неплохо иметь исходники, но проблема состоит в том, что зачастую этого недостаточно Каждый, кто участвовал в крупном проекте по реконструкции программного обеспечения, навсегда запомнит чувство беспомощности и потерянности, которое испытываешь, когда впервые видишь гору плохо документированных (хотя не всегда плохо написанных) исходных текстов. Доступность исходных текстов не сильно поможет, если отсутствует доступ к ведущим разработчикам. Если программа или система написаны на сравнительно низкоуровневом языке, вроде C, Cobol или Fortran, и плохо документирована, то все основные проектные решения растворились в деталях кодирования и требуют реконструкции. В таких ситуациях ценность документации более высокого уровня, такой, как спецификации интерфейсов и описание архитектуры, может превышать ценность самого исходного текста.
Такое осознание неадекватности исходных текстов для понимания программ
привело к попыткам объединить код и документацию более высокого уровня.
Одна из наиболее известных попыток такого рода была предпринята Дональдом
Кнутом (Donald Knuth), см. его статьи в книге Грамотное программирование
[Literate Programming.--- Stanford, Calif.: Center for the Study
of Language and Information (CSLI), 1992]. Возможно, самой известной запрещенной
книгой в истории компьютерных наук была книга [ Сложность и объем фактически "закрывают" исходные тексты системных проектов, вроде ОС и компиляторов после превышения ими объема, скажем, в 100 тысяч строк, при условии, что отсутствует документация высокого уровня, и Вы не принимали личного участия в проекте с его ранних стадий. Такая "бинаризация" исходных текстов в крупных системных проектах может означать, что стратегическая важность сохранения исходных текстов закрытыми может теряться после того, как проект достигает некоторого уровня зрелости, а также соответствующего этой стадии разработки размера и уровня сложности. Настоящие конкуренты всегда были в курсе происходящего по ту сторону баррикад, от нехватки информации всегда страдали, в основном, разработчики прикладных программ. Этот подход, вероятно, наиболее жизнеспособен (но не ограничивается) программными продуктами вроде операционных систем, когда разработчики приложений могут получить существенные выгоды от легкого доступа к важной информации, позволяющей упростить отладку. Как таковой, он может считаться вариацией на тему принципа "важности наличия пользователей", обсуждавшегося ранее, поскольку приложения --- это золотой ключик, открывающий дорогу в царство пользователей. А как тонко отметил в свое время Генрих IV (сменивший вероисповедание для того, чтобы стать королем Франции --- прим. автора): "Париж стоит обедни". Более того, сложность зрелого программного продукта служит "барьером вхождения" для конкурентов почти так же эффективно, как "подписка о неразглашении" (Non-Disclosure Agreement, NDA, которая, вообще говоря, не создает непреодолимых трудностей в доступе к исходным текстам продукта, а является лишь некоторым дополнительным ограничением, дополнительным барьером для доступа к исходникам). Скорость разработки некоторого коммерческого продукта может сделать незаконное присвоение фрагментов кода не столь привлекательным, как это может показаться на первый взгляд, особенно в случае, когда конкуренты тоже достигли определенной зрелой стадии, но основанной на других архитектурных решениях. Если смотреть в корень проблемы, то для того, чтобы создать предпосылки для успешного частного бизнеса, вам всего лишь необходимо создать закрытую коммерческую инфраструктуру, обеспечивающую понимание кода, работающую только лично для вас. В простейшем случае, достаточно нанять некоторых ключевых разработчиков и тем самым завладеть большой частью ноосферы проекта (как это в свое время сделал Red Hat --- прим. автора). Этого может оказаться вполне достаточно, чтобы создать частнособственнические преимущества, необходимые для жизнеспособности коммерческого распространения продукта. Принимая во внимание эти факты, я отвергаю высказанную в СиБ точку зрения, что разработка новой версии Netscape является тестом жизнеспособности разработки программного обеспечения методом открытых исходников: "[Проект создания новой версии] Netscape предлагает нам крупномасштабные, проходящие в реальных условиях испытания "базарной" модели в коммерческом мире. Культура открытых исходников сегодня оказалась лицом к лицу с угрозой: если разработка новой версии Netscape не увенчается успехом, концепция открытых исходников может быть настолько дискредитирована, что коммерческий мир не вернется этой идее опять ранее, чем через десять лет."Разработка новой версии Netscape попросту является неверным тестом. Я не верю, что эта неудача подорвет движение за открытые исходники. Уровень сложности, предложенный Netscape, открывшей уже существовавший проект новой версии на достаточно поздней стадии разработки, вероятно, является главной трудностью в привлечении новых разработчиков. В связи с этим, возможно, требуется определенное дополнительное время, прежде чем станет ясно, провалился этот эксперимент, или нет. Впрочем, учитывая важность новой версии Netscape как конкурента IE, несомненно, будут предприняты специальные усилия, чтобы избежать краха. Одно лишь ясно: сложность кода новой версии Netscape представляла и представляет сейчас собой огромный "барьер вхождения", и его нелегко преодолеть даже самым высоко мотивированным и квалифицированным разработчикам, желающим включиться в эту разработку. Опыт разработки новой версии Netscape наталкивает на интересную гипотезу. Группа ключевых разработчиков обычно формируется на ранних стадиях жизни сложного проекта, когда проект и программа все еще остаются более-менее понимаемыми и интеллектуально-концептуальный барьер вхождения еще не слишком высок. Как только проект достигает определенного уровня зрелости, он автоматически закрывает сам себя вследствие "бинаризации" исходников. Сложность кода делает цену вхождения в зрелый проект гораздо выше, чем это было в начале его разработки. Было бы интересно проверить эту гипотезу на программах, подобных Perl, Apache и Linux. Остается ли состав ключевых разработчиков более или менее постоянным с момента, когда проект достиг определенной зрелости? Если вы не участвовали в нем с самого начала, то в каких случаях игра стоит свеч --- имеет ли смысл тратить огромное количество времени и ресурсов, которые теперь неизбежно требуются для вхождения в проект? Безусловно, одним из впечатляющих примеров сложности работы с большими объемами программ в исходных текстах служит так называемая "проблема 2000". Если отбросить мифы, то суть проблемы состоит в том, что, несмотря на доступность исходных текстов, многие компании затратили существенное количество времени и денег, пытаясь исправить единственную и вполне тривиальную логическую ошибку, состоящую в том, что в некоторых программах год представлен всего лишь двумя цифрами. Важнейший урок, вынесенный из опыта решения этой проблемы состоит в том, что в старых и сложных программных системах даже небольшие проблемы, умножаются на сложность и возраст системы, и тем самым превращаются в гигантские. Понимание доисторического кода без понимания соответствующих (тоже доисторических --- прим. автора) архитектурных решений, вероятно, является одним из труднейших видов программистской деятельности. Зачастую это гораздо более сложная задача, чем переписать все заново. Следовательно,љ при отсутствии первоначального разработчика или адекватной документации, написание полностью нового кода вместо латания старого может быть наиболее реалистичной а также наиболее экономичной по стоимости стратегией решения этого типа задач. Из вышеизложенного следует, что скрытие информации об архитектуре может быть эффективной стратегией контроля над проектом с открытыми исходниками. Мы исследуем этот вопрос позднее. Состязание за статус в коллективах разработчиков, основанных на Интернет"Можно сказать, что главный урок социологии состоит в следующем: видимость обманчива."Состязание за статус, подобно другим социологическим феноменам, очень сложное явление, и не должно идеализироваться. В СиБ большая часть обсуждения вопроса борьбы за статус и производительности рабочих групп одновременно идеализирована и примитивизирована. На самом деле этой проблеме посвящена обширная экономическая, эволюционное-антропологическая и особенно социологическая Подобно академическим иерархиям, состязание за статус вовлекает участников групп в оценку самих себя относительно коллег согласно некоторой разделяемой всеми участниками шкале ценностей. Наивно полагать, что состязание за статус всегда улучшает производительность группы, побуждая ее участников к более интенсивной работе. Иногда состязание за статус может привести к обратному эффекту и негативно влиять на производительность, стимулируя непродуктивное поведение. Поскольку движение за открытые исходники является социальным явлением, статус каждого участника определяется как вкладом в один или более проектов ("вкладом" в чисто техническом смысле) так и непроизводительной, общественной деятельностью по поднятию своего социального статуса. Политическое поведение, включающее политическое маневрирование, обычно тщательно маскируется участниками программистских групп, работающих над проектами с открытыми исходниками. Парадоксально, но те, кто имеют политическую власть, часто отрицают ее наличие, а те, кто желают получить политическую власть, утверждают, что это им совсем не интересно, а те, кто имеют наибольшие способности политического маневрирования, тщательно скрывают их наличие. Политическое маневрирование может быть очень успешным путем повышения статуса, особенно в больших группах, но любой успех такого маневрирования может ухудшить моральный климат группы. Таким образом, производительность группы может колебаться с течением времени, в особенности, если в группе не предусмотрено четких путей повышения статуса. Я считаю, что в СиБ не освещены несколько очень важных аспектов состязания за статус. Среди них я хотел бы выделить:
Иерархическая структура и соответствующее распределение политической власти в мире открытых исходников"Все проблемы являются политическими, а сама политика --- это масса лжи, уверток, глупости, ненависти и шизофрении."СиБ пытается изобразить мир открытых исходников как ориентированный на взаимную поддержку, гармоничный, доверительный и склонный к сотрудничеству. Такая аполитичная точка зрения может привести нас к неверному выводу, что участники движения за открытые исходники всегда ведут себя в соответствии с интересами самого движения. Начнем наше обсуждение этой концепции следующей цитатой из СиБ: "Хотя дешевый Интернет был необходимым условием развития модели Linux, я думаю, что сам по себе он не был условием достаточным. Другим жизненно важным фактором стала разработка стиля лидерства и набора традиций сотрудничества, которые могли позволить разработчикам привлекать к сотрудничеству других и максимально использовать эту среду для достижения своих целей.Игнорирование политического поведения и существования в сообществе открытых исходников иерархий означает игнорирование реальности. В мире открытых исходников в целом и в каждом проекте в частности существуют системы власти с соответствующими, хотя подчас размытыми иерархиями. Этот факт может пояснить многие примеры иррационального поведения в обществе открытых исходников. По каким иным причинам некоторые участники искажают и/или скрывают информацию, сознательно ограничивают свою производительность, чересчур активно рекламируют свои успехи, скрывая при этом неудачи, фальсифицируют статистику, а также занимаются иной деятельностью, которая кажется исключительно странной и идущей вразрез с целями движения за открытые исходники? Власть, как социальное явление, обычно определяется как способность заставить других людей делать то, что они не стали бы делать иначе. Она символизирована в социальном статусе. Власть связана с состоянием зависимости, позволяющим одним людям управлять поведением других. К примеру, Линус Торвальдс имеет значительную власть, поскольку может принимать или отвергать предложения других разработчиков ядра. Конечно, власть --- очень сложное явление, которое имеет множество измерений. Среди них я хотел бы упомянуть власть на базе виртуального кнута и пряника --- контроль над выдачей и возможность манипулирования в своих целях символическими наградами, которые ценятся группой (пресса мира открытых исходников располагает такой разновидностью власти, и с этой точки зрения представляет собой политическую надстройку) и технократическую власть (власть на базе знания), или власть на основе владения или доступа к уникальной информации. Если индивид владеет уникальной информацией, которая необходима для выработки важных решений, то этот индивид имеет технократическую власть, которую он может применять, становясь тем самым технократом (человеком правящим другими людьми на базе технологических знаний и науки --- прим. автора). Когда люди объединяются в проект по разработке методом открытых исходников, вскоре неизбежно появляются взаимозависимости участников, и они расставляются в виртуальные позиции, позволяющие говорить о доле власти, принадлежащей тому или иному участнику. И только вопрос времени, когда эта власть будет применена при решении того или иного вопроса.
Иногда естественный процесс образования иерархических структур осознается
разработчиками не как естественный процесс складывания иерархии, а как
защитная реакция на перегруженность от "шума чайников" и прежде всего
завала электронной почтой с низким соотношением сигнал/шум. Обратите внимание,
как Алан Кокс (Alan Cox)
"Проект Linux 8086 продолжал свою работу, но настоящие разработчики поместили в свои "черные списки" многих других членов списка рассылки, чтобы иметь возможность общаться друг с другом, поскольку просто слишком много малокомпетентных людей крутилось вокруг. Из базара [группа разработчиков] превратилась в группу ключевых разработчиков , что для многих людей служит вежливым эквивалентом слова "клика". В сложившихся обстоятельствах это было необходимой обороной."Мы будем понимать под политическим поведением такую деятельность, которая не относится к непосредственному исполнению своих обязанностей в данном конкретном проекте или движении на базе открытых исходников, но которая влияет или пытается оказать влияние на поведение других членов группы. Некоторые виды такой деятельности тривиальны, например, почтовая перепалка (flaming), игнорирование распоряжений, создание коалиций, обструкция нежелательных решений лидера, либо завязывание контактов вне группы с тем, чтобы упрочить свою позицию внутри нее. Другие --- экстремальны ("жесткая игра по всему полю"), наподобие склок, саботажа, доносительства и публичных протестов, которые затрагивают статус проекта или движения в целом. Большая часть политики в коллективах, работающих над проектами в открытых исходниках, достаточно невинна и тривиальна, хотя некоторые участники порой пытаются продемонстрировать "жесткую игру". Объясняется это на основе прагматичного понимания личных интересов: экстремальное политическое поведение несет в себе весьма реальный риск ответных санкций со стороны группы, включающих в крайних случаях возможность потери статуса, и/или членства в проекте или группе.
Как только статус в мире открытых исходников становится более тесно
увязан с возможностью получения различного рода выгод и "сладких
пряников", то неизбежно следует ожидать возрастание опасности политического
маневрирования, т.е. борьбы за власть. Это типичная проблема лидеров любых
проектов. СиБ описывает руководителей проектов с открытыми исходниками
как демократичных людей, но на практике ведущие разработчики склонны рассматривать
свое положение, как лицензию на право принимать единоличные решения.
Такие лидеры обычно пахали по-черному и зачастую заплатили высокую личную
цену в процессе достижения своего нынешнего статуса. Поэтому идея делиться
своей властью с другими противоречит их собственным целям и амбициям, хотя
слишком сильное "закручивание гаек" может вести к нежелательным последствиям.
Мнение СиБ об упразднении "командного метода управления" представляется
излишним упрощением, точно так же, как и картина "анархистского рая". История
проектов с открытыми исходниками предлагает немало убедительных
"Одним из тех, кто активно работал над подсистемой поддержки сетевых протоколов, был Фред ван Кемпен (Fred van Kempen). После периода некоторой неопределенности, последовавшего за уходом Росса (Ross Biro) с места ведущего разработчика, Фред предложил свое время и усилия, после чего получил эту роль практически без возражений. У него были довольно амбициозные планы относительно того, в каком направлении развивать сетевые возможности, и он начал двигаться в этом направлении. Фред выпустил версию кода сетевой поддержки, названного NET-2, (версией 'NET' считается версия кода написанная Россом), которую многие пользователи могли довольно успешно применять. Он реализовал множество нововведений, ранее существовавших только в планах, таких как динамический интерфейс устройств, поддержку протокола Amateur Radio AX.25 и более модульную архитектуру сетевого интерфейса. Код Фреда NET-2 успешно использовался довольно значительным количеством энтузиастов, число которых росло по мере того, как ширилась молва, что программы действительно работают. Поддержка сетевых протоколов в то время состояла из довольно большого числа заплат к стандартным версиям исходных текстов ядра и не включалась в нормальный дистрибутив последнего. В документе NET-FAQ и последующих версиях этого документа под названием NET-2-HOWTO была описана довольно сложная процедура, необходимая, чтобы все это заработало. Однако Фред сосредоточился на разработке нововведений в стандартную реализацию, и это отнимало у него большую часть времени. В сообществе пользователей нарастало нетерпение по поводу выпуска новой, более надежно работающей версии, которая бы удовлетворяла уже 80% пользователей. Поэтому, как и в случае с Россом, давление на Фреда, как на ведущего разработчика, возрастало.В действительности все крупные проекты с открытыми исходниками имеют иерархическую структуру. Эта структура позволяет руководителю того или иного проекта диктовать свою волю, право на принятие окончательных решений, которое при необходимости может защищаться политическими средствами --- прямым применением этой власти, как описано в приведенном выше примере. Получается, что заявление о том, что "они не могут основываться на отношениях власти" весьма слабо связано с реальным положением дел. По тем же причинам взаимный обмен знаниями также имеет определенные пределы в сообществе разработчиков открытых исходников. Мы обсудим это позже более подробно, когда будет исследоваться концепция "обезличенного программирования". Сейчас же просто отметим, что технократическая власть, служит наиболее эффективным способом добиться от других желаемых поступков. Компетентность --- это, пожалуй, самый легитимный фундамент политической власти и, соответственно, статуса среди участников движения за открытые исходники. Поэтому ни один лидер не будет раскрывать все карты, всю информацию, которой владеет, поскольку такая благотворительность в конечном счете ведет к подрыву его власти. В действительности зачастую даже при всем желании это затруднительно физически, поскольку каждый лидер проекта обычно перегружен. Сообщество разработчиков методом открытых исходников не имеет иммунитета против продиктованных политическими мотивами ограничений на публичное раскрытие информации о "внутренностях" проекта. Сама по себе доступность исходных текстов не влечет за собой автоматического доступа к наиболее важным и критичным архитектурным сведениям. Обделенные властью разработчики часто пытаются компенсировать это за счет формирования коалиций с другими, с тем чтобы усилить свое влияние и поднять свой статус в проекте. Коалиции являются распространенным явлением и не могут быть устранены --- сила растет с количеством бойцов. Естественный путь увеличить свое влияние --- стать членом некоторой коалиции. В случае, когда число участников некоторой коалиции становится значительным, она может бросить вызов единоличному лидеру и продвигать любые желательные для нее изменения. В этом смысле такие коалиции превращаются в коллективного диктатора проекта. Возможность несправедливых статусных иерархий (фаворитизм)"Все животные равны, но некоторые несколько равнее других."Фаворитизм --- это предоставление начальником некоторых выгод, наград или привилегий одному из подчиненных (т.е. преимущества в выборе и принятии заданий или, с обратным знаком, сознательное игнорирование вклада кого-либо), основанное на субъективных личных предпочтениях, а не на объективных соображениях связанных с прошлыми результатами выполнения заданий или техническими знаниями в конкретной области. Фаворитизм в традиционных организациях является достаточно типичным явлением (см., к примеру, [Prendergast & Topel, "Favoritism in Organizations," // Journal of Political Economy, volume 104 (October 1996): pp. 958--978]). Распределенные проекты, выполняемые через Интернет, также не имеют иммунитета к этой опасности. Фаворитизм, или даже его субъективное ощущение подчиненными, способствует потере взаимного уважения между членами группы, влечет за собой подозрительность, уничтожает инициативу и порождает другие негативные проблемы, подрывающие моральный климат в группе. Когда лидер ставит на карту свой авторитет и уважение, позволяя фаворитизму вкрадываться в свои решения или даже создавая такую иллюзию в глазах подчиненных, проблемы обычно не заставляют себя долго ждать. Конечно, когда глава проекта действует, как харизматический лидер, он может распределять задачи, исходя из личных предпочтений. В свою очередь, чтобы эффективно контролировать своих последователей, лидер должен признаваться другими в качестве наиболее важным участником проекта. Для проектов с открытыми исходниками типично, что первые последователи проявляют наибольшую лояльность к лидеру. Поэтому для лидера проекта с открытыми исходниками естественно доверять, уважать и зависеть от ранних пользователей и первых участников разработки, "старой гвардии". Эти отношения --- результат опыта, общих интересов, целей либо предпосылок, или же просто следствие длительности общения. Тем не менее, шансы на долговременное выживание проекта во многом зависят от создания среды, в которой все участники ценятся как личности, на условиях честного и равного партнерства. Важно понимать, что фаворитизм может иметь знак минус. Вообразите, как неприятно участвовать в проекте, лидеру которого, как вам кажется, вы определенно не нравитесь. Вы можете чувствовать себя пойманным в западню, но что можно сделать, кроме как уйти из проекта? Единственное что в этой ситуации может помочь вам выжить, это незаурядное чувство юмора. Создание элиты и исключение одних разработчиков в пользу других является предпосылкой для возникновения конфликтов. В результате, например, отвергнутые разработчики могут мигрировать в конкурирующие проекты. Отравление процесса рецензирования и проблемы с обезличенным программированием"Радикал изобретает новые взгляды на вещи. А когда он их окончательно обтреплет и выбросит, их подбирает консерватор."Люди, далекие от науки, обычно считают, что процесс рецензирования в научных кругах прост, объективен и направлен на улучшение качества работы. В действительности процесс совсем не прост и объективные, написанные "по делу", с тем, чтобы улучшить работу рецензии --- всего лишь статистическое приближение, при котором возможны весьма широкие "Процесс рецензирования подвергался критике со стороны ученых (и не только ученых) на протяжении многих лет. Значительное количество комментаторов (например, Эггер [Agger, 1990;Давайте взглянем в лицо реальному положению дел в проектах с открытыми исходниками. Ваша работа может быть отвергнута вследствие перегруженности, мелкой зависти, некомпетентности либо политических причин. Если Вы действительно хотите принять участие в таких проектах, Вы должны учитывать возможность именно этого варианта развития событий. Если Вы ожидаете, что мир открытых исходников воплощает в себе идеальное сообщество постоянно сотрудничающих личностей, то Вы просто находитесь в плену иллюзий. Но, несмотря на все эти проблемы, выгоды процесса рецензирования перевешивают выгоды ситуации "вали кулем, потом разберем". Смотреть на мир открытых исходников как на идеальное общество постоянно сотрудничающих личностей означает находиться в плену иллюзий. По схожим причинам концепция "обезличенного программирования" на самом деле не работает в проектах с открытыми исходниками. Одно дело --- распространять исходные тексты, а совсем другое --- делиться лежащими в их основе алгоритмами и идеями. Краеугольным камнем для успешного создания/модификации той или иной программы служат отнюдь не "исходные тексты", а понимание более общих вопросов, лежащих в основе этих исходников. Лидеры больших и успешных проектов с открытыми исходниками зачастую испытывают внутренний конфликт из-за наличия политических факторов, которые подрывают желание делиться картинкой более высокого уровня. Обезличенное программирование (egoless programming) обычно определяется (IEEE Std 610.12-1990) так: "Разработка программного обеспечения, основанная на концепции групповой, а не личной ответственности за создание программы. Ее цель --- предотвратить идентификацию себя со своей работой, которая у отдельных программистов становится настолько тесной, что негативно влияет на объективность оценок."Даже в коммерческой среде бывает исключительно сложно "оградить отдельных программистов от слишком тесной идентификации себя с написанными программами". В проектах с открытыми исходниками такая слишком тесная идентификация себя с проектом (мотивы, продиктованные самолюбием) была названа в СиБ одной из главных движущих сил разработки. Это значит, что в этом классе проектов существует весьма шаткая основа для обезличенного программирования, если она существует вообще. Полное отождествление личности разработчика с проектом правит бал. Поэтому защита собственного статуса является неотъемлемой частью игры на поле открытых исходников, хотим мы этого или нет. Сам статус является результатом более высокого уровня понимания некоторой части системы (в случае ведущего разработчика --- критической ее части). Жерар Вейнберг (Gerard Weinberg --- автор этой концепции --- прим. автора) отметил недостатки концепции обезличенного программирования, когда писал [IEEE Software, volume 16, number 1 (1999), pp. 118--120]: "Концепция "обезличенного программирования", впервые описанная в 1971 году в книге Психология программирования [Gerard Weinberg. The Psychology of Computer Programming], является, вероятно, самой цитируемой, самой неправильно понимаемой и наиболее часто отвергаемой из всех концепций, содержащихся в первом издании книги. Я часто задавал себе вопрос, что было бы, если бы я смог написать этот раздел с большей убедительностью. Возможно, если бы я использовал термин "программирование на основе меньшего эгоизма" ("less-ego programming") тогда это не вызвало бы такихљ споров. Возможно, мне нужно было привести больше примеров или подобрать примеры более высокого качества. Возможно, следовало бы привести больше экспериментальных данных.Кстати, хотя Линус Торвальдс опубликовал и произнес около сотни интервью и речей, он не опубликовал ни одной работы, освещающей структуру ядра Linux (если мы не будем считать попытку оправдать монолитную структуру ядра в "Мир Linux во многих отношениях ведет себя подобно свободному рынку либо как экосистема, сборище эгоистичных агентов, пытающихся максимизировать собственную пользу, действия которых генерируют самокорректирующийся спонтанный порядок более сложный и эффективный, чем тот, которого можно достичь любым количеством централизованного планирования...Такая же ситуация существует и в науке. Хотя ученые охотно делятся своими открытиями, они обычно тщательно охраняют и зачастую скрывают конкретные методы, с помощью которых эти открытия были получены. "Угости всех блюдом, но сохрани в тайне рецепт",--- этот принцип, вероятно, приложим к сообществу разработчиков методом открытых исходных текстов в той же степени, что и гипотетический "принцип взаимопонимания", описанный в СиБ. Опасность перегрузки и "сгорания"Разработка добровольцами программ с открытыми исходниками является рискованным мероприятием и по другим причинам. Для создания серьезной программы недостаточно посидеть за компьютером пару часиков в субботу и воскресенье. Это скорее длительная работа на (возможно еще одну) полную ставку. Если кто-то в дополнение к своему "хобби" по разработке программ с открытыми исходниками должен еще и зарабатывать себе на жизнь и/или учиться в вузе, то возникает опасность перегрузки. Кстати, значительная часть отличного кода в открытых исходниках была написана теми, кто в дополнение к этой разработке еще и работал/работает на полную ставку в университете или какой-нибудь фирме.
Как это ни парадоксально звучит, но при наличии основной работы успех
по созданию программы в открытых исходниках может обернуться реальной угрозой
благополучию разработчика-добровольца. Если ваша программа успешна,
и пользователи полны энтузиазма, вы можете превратиться в бесплатный отдел
техпомощи по телефону, затрачивая на звонки пользователей, разбор писем
и ответы по электронной почте все больше и больше времени. Как профессиональный
преподаватель программирования, я вижу определенную опасность в романтизации
разработки методом открытых исходников, особенно в среде студентов.
"Сгорание" определяется как синдром психической и эмоциональной опустошенности,
влекущий развитие негативной самооценки, отрицательного отношения к работе,
а также потерю внимательности и чуткости к пользователям. Давайте проанализируем
соответствующую часть
"МартСгорание представляет собой основную проблему тех, кто по роду занятий должен помогать другим. Оно возникает, когда люди, помогая другим, отдают настолько много сил и времени, что совершенно перестают заботиться о себе. Сгоранию подвержены не только программисты, но и профессиональные педагоги, журналисты, медики, социальные работники, а также служащие правоохранительных структур. Оно начинается, когда разработчик затрудняется в выборе приоритетов и, несмотря на давление пользователей и непрерывный поток требования по исправлению ошибок и совершенствованию программы, начинает отдавать себе отчет, что, в конце концов, его добровольное участие в этой разработке должно иметь более низкий приоритет, чем основная работа и интересы семьи. Приведем некоторые из факторов, которые способствуют возникновению этого состояния:
Руководство крупным проектом может существенно увеличить опасность сгорания ведущего разработчика. Он обычно "принимает на грудь" весь объем управленческой работы, который валится на него, и тратит на это больше времени, чем другие разработчики. С ростом пользовательской базы и числа разработчиков, даже количество писем по электронной почте может превысить способности по переработке информации любого нормального человека. Для успешных проектов это значит, что необходимость отвечать на письма пользователей конфликтует с процессом программирования и отладки, а все они вместе мешают семейной жизни и основной работе. Проблема техностресса вследствие перегрузки информацией (сочетание "стартового возбуждения", вызываемого постоянно приходящими новостями, перегрузки информацией и ролевых конфликтов) в коллективах разработчиков методом открытых исходников, а также сгорание лидеров даже не упоминается в СиБ. Крэйг Брод (Craig Brod) определяет техностресс так: "... современная болезнь приспособления, вызванная невозможностью справляться с новыми компьютерными технологиями в здравой манере. Он проявляется двумя различными, но связанными путями: непрерывной борьбой по освоению новых компьютерных технологий, а также в более специфичной форме излишней идентификации с той или иной компьютерной технологией."Я хотел бы снова отметить, что лидеры успешных проектов с открытыми исходниками получают так много писем по электронной почте, что даже простое их чтение представляет собой заметную нагрузку. В "Вопрос: Что представляет собой Ваш нормальный день (т.е. на что обычно тратится Ваше время: учеба, Linux, свободное время)?Здесь существует и другой аспект, который любая жизнеспособная модель разработки программ с открытыми исходниками должна уметь предсказывать. Это "смерть на служебной лестнице" как крайний случай гонки за статусом. Подобно спорту, где каждый хочет быть чемпионом, по крайней мере, на начальной стадии проекта с открытыми исходниками его лидер должен доказывать, что он превосходит своих конкурентов. Проблема в том, что иногда это превращается в непосильные крысиные гонки против более сильного или коммерческого продукта: с каждой новой версией альтернативных продуктов от разработчика свободной программы ожидают, по меньшей мере, быстрого достижения паритета с конкурентами, и никого не волнует, чего это ему будет стоит. Лояльные пользователи требуют и ожидают реализации новых возможностей, появившихся в конкурирующих продуктах, не понимая, что разработка "их" продукта ведется на добровольных началах, и поэтому может иметь иные приоритеты и другую скорость разработки. К примеру, в прошлом многие пользователи выражали неудовлетворение медленными темпами выпуска новых версий дистрибутива Debian по сравнению версиями Red Hat. Как уже указывалось, благодаря своей центральной позиции, ведущий разработчик вынужден "принимать на грудь" большинство управленческих функций, и работа по обработке большей части замечаний и предложений пользователей ложится на него. Это значит, что в отсутствие иерархических ограничений на поток информации (как в ее получении, так и в ее распространении) по сравнению со своими заместителями лидер проекта с открытыми исходниками поставлен в худшие условия в связи с перегрузкой избыточной информацией. В конце концов, выполняя управленческие функции, он может деквалифицироваться настолько, что это вызовет недовольство остальных разработчиков. Подведем некоторые итоги. Начать проект с открытыми исходниками легко и интересно, но закончить его непросто, и успех может оказаться весьма дорогим удовольствием. Длительная напряженная разработка крупного продукта с открытыми исходниками представляет собой реальную угрозу для разработчиков-добровольцев и может постепенно превратить изначально интересный проект в изматывающее сопровождение сложной программы. Очевидно, что разработчик программы с открытыми исходниками будет чувствовать себя несколько более комфортно, если он относится к разработке как научной деятельности и воспринимает себя как научного исследователя какой-то проблемы. Это значит, что после создания базовых элементов программы и доводки ее до некоторого уровня зрелости, он имеет моральное право остановить разработку в любой подходящий момент или передать ее кому-то, или, наконец, решить самому превратиться в коммерческого разработчика и посмотреть, примет ли коммерческий мир его детище. Конечно, существуют явные идеологические проблемы и трудности связанные с больным самолюбием, возникающие в процессе принятия такого решения (в особенности с передачей продукта другим разработчикам --- прим. автора). В таких случаях разделение продукта на коммерческую и некоммерческую ветви (подобно TCL и Sendmail), или же создание коммерческой компании, получающей выгоду от усилий добровольцев, могут быть рациональными решениями, и их стоит рассматривать всерьез. Для любого сложного и успешного проекта с открытыми исходниками чисто добровольческая стадия может, вероятно, быть лишь переходной. Страх исключения как мотивирующий фактор"Вы можете достичь куда больше при помощи доброго слова и пистолета, чем с помощью одного только доброго слова."Теоретически, бояться нечего. Не существует никаких обязательств поддерживать любой проект с открытыми исходниками. Просто прекратите разработку/сопровождение продукта, если вы не желаете более этим заниматься. В реальности все более сложно. Чем более успешным становится тот или иной продукт, тем сильнее вы становитесь к нему привязаны; даже будучи разочарованным или подавленным трудностями, вы можете предпочесть "тянуть лямку" и продолжать разработку и сопровождение из-за таящейся в глубине души боязни быть исключенным из виртуального сообщества разработчиков и пользователей этого продукта. Чтобы создать успешный продукт, вы могли пожертвовать колоссальное количество времени и энергии. Разработчик успешного продукта с открытыми исходниками может потратить годы жизни и принести бесчисленные жертвы, чтобы лишь найти время для продолжения разработки. В "Но что это за стиль управления, и каковы эти традиции? Они не могли основываться на отношениях начальник-подчиненный, а если бы и могли, командный стиль руководства не обеспечил бы достижений, которые мы сейчас наблюдаем."На самом деле в проектах с открытыми исходниками не только присутствует возможность прямого использования командного руководства, неявное принуждение за счет использования страха исключения также действует как весьма эффективный "пистолет, направленный в лоб". Истинная социальная ценность неформальной группы со-разработчиков и пользователей нередко выясняется только после того, как разработчик сделал выбор, т.е. покинул проект. И потери могут быть довольно болезненными, поскольку ценные социальные и профессиональные связи, приобретенные разработчиком в период работы над проектом, могут не пережить такой "измены". Возможность выбора ошибочных путей повышения собственного статуса"Только очень недалекие люди не оценивают других по внешнему виду"Исходя из своего опыта преподавания программирования в вузах, я подозреваю, что большинство участников проектов с открытыми исходниками, и в особенности та часть участников, которая тратит на них более чем номинальное количество времени, составляет молодежь (в возрасте от 16 до 25 лет). Последние классы средней школы и годы учебы в вузах --- это период перехода от юности к жизни взрослых. Чтобы его воспринимали как взрослого, молодой человек должен принять некоторые решения, имеющие долгосрочные последствия, причем в большинстве случаев они должны приниматься без достаточной информации о возможных последствиях того или иного выбора. Например, необходимо выбрать род занятий, спутника жизни, интегрировать подходящую систему жизненных ценностей. Программирование в целом и, в особенности, проекты с открытыми исходниками позволяет уклониться от принятия такого рода решений. Не случайно в среде хакеров деятельность за пределами традиционного и порочного цикла "кодирование/компиляция/отладка" обычно рассматривается как сомнительная и второсортная. Этот подход типа "сначала пишем, потом отлаживаем, а только потом думаем", вероятно, отражает суть стиля программирования присущего хакерам. Характерное для этого стиля многосуточное запойное кодирование и отладка служит в некоторых кругах характерной особенностью, отличающей настоящего хакера от рядового программиста. Если пренебрежительное отношение к пище и одежде распространяется и на архитектурные решения программной системы, то, естественно, время отладки будет преобладать в цикле разработки. Это связано с тем, что исправление любой ошибки, не выявленной на стадии проектирования (ошибки в архитектуре) обычно стоит на порядок дороже, если эта ошибка выявлена на стадии кодирования и еще на порядок дороже, если она будет выявлена только в процессе отладки системы. Неправильно выбранные или примитивные инструментальные средства могут дополнительно увеличивать перегрузку. Некоторые считают способность работать 48 часов подряд как "правильный стиль жизни" и доказательство принадлежности к кругу настоящих хакеров. К сожалению, запойный стиль, круглосуточные кодировочно-компиляционно-отладочные бдения могут приносить значительный вред и работе, и здоровью. В результате лишь наиболее талантливые из тех, кто грешит подобной практикой, в состоянии выполнить работу на высоком уровне и довести разработку до конца. Остальные обречены на неудачу за счет ухода от проверенной практики разработки, поскольку такой скучный и неинтересный подход не повышает престиж человека в глазах тех, чьим мнением он более всего дорожит (референтной группы) в такой же степени, как многосуточные бдения и авралы. Безусловно, одним из самых негативных аспектов хакерской культуры является ее пренебрежительное отношение к архитектуре программных систем и к проверенным на практике технологиям разработки программ. Подобно игре на пианино, только самые талантливые программисты могут импровизировать на клавиатуре, т.е. работать без явных фаз исследований и проектирования, не уделяя внимания координации, и не изучая лучших книг по данному вопросу.
Несмотря на свой частичный эскапизм, хакерство может стать основной
карьерой программиста. На самом деле СиБ умалчивает от том, что какие реальные
мотивы поддерживают такую интенсивность работы и что придает столь важное
значение гонкам за статус при разработке программ с открытыми исходниками.
Я подозреваю, что здесь замешан не только альтруизм или раздутое самолюбие
--- разработка может стать для участников попыткой сделать альтернативную
карьеру. И подобно карьере в любом новом бизнесе, это весьма рискованный
выбор, в котором лишь немногие счастливчики могут в итоге насладиться известностью
и большими деньгами. Это, опять же, напоминает ситуацию в науке: кое-кто
может совсем неплохо заработать на своем высоком неформальном статусе в
сообществе открытых исходников. (Одно время состояние "пламенного пропагандиста
и агитатора" Эрика Раймонда в виде полученных им бесплатно акций фирмы
VA Linux оценивалось почти в 30 миллионов; см. статью Роль прессы"Я всегда буду строго придерживаться истины, за исключением тех случаев мне это неудобно; я подвергну уничтожающей критике все виды преступлений и проступков, за исключением тех, что совершаются членами моей партии."Линус Торвальдс (подобно Microsoft в Интернет) пришел в мир Unix "к шапочному разбору". Но его первым и главным успехом был захват стратегически важной высоты в виде уже существовавшего сообщества разработчиков операционных систем типа Unix, сформировавшегося в группе пользователей операционной системы Minix, и соответствующего канала коммуникации (группу Usenet посвященной Minix). Позднее он создал на этой базе как свою собственную группу соразработчиков, так и собственный канал коммуникации. В этот исторический момент сообщество пользователей Minix --- весьма элитарная группа энтузиастов Unix --- насчитывало примерно 40,000 членов и включало заметное число талантливых программистов (которые уже успешно пытались переписать части Minix, чтобы сделать ее более совместимой с Posix). Эта переориентация существующего виртуального сообщества разработчиков на новую цель была одним из важнейших событий в истории Linux, демонстрирующим мощь Интернета как прессы нового типа. Ни одна из других ведущих ОС не разрабатывалась таким способом. Конечно, это сообщество разработчиков к тому моменту уже созрело для "переманивания". Уже наблюдались разногласия между политикой лидера сообщества Энди Танненбаума ( Специализированные Linux-журналы возникли в 1994, когда Роберт Янг (Robert Young, один из основателей Red Hat и бывший ее исполнительный директор) и корпорация ACC выпустили первые два номера Linux Journal. Позднее редактором стал Фил Хьюз (Phil Hughes). В марте 1994 года компания SSC, издатель серии Unix Pocket References, приобрела права на издание Linux Journal у Роберта Янга и ACC Corporation. Неясно, в какой мере эти связи помогли Red Hat, но вполне понятно, что с самого начала специализированная пресса была мощной, высокополитизированной силой, имевшей явную про-Linux ориентацию. Эта "партийная" Linux-пресса чрезвычайно помогла в разработке и становлении этой системы, так что сражения между альтернативами происходили не только на чисто технической почве, как утверждается СиБ. Не исключено, что при отсутствии такого уровня политической поддержки, FreeBSD (традиционный выбор Интернет-провайдеров) стала бы более популярной. Вообще говоря, причины популярности Linux более сложны, чем рассмотренные в СиБ. Я хотел бы лишь подчеркнуть, что Linux-пресса служит важным рычагом воздействия на конкурентов, подобных FreeBSD, и ее роль совершенно не учитывается СиБ. Среди прессы, посвященной Linux, электронные службы новостей, такие, как Slashdot и Linuxtoday, вероятно так же важны, или даже превосходят по важности традиционные издания, наподобие Linux Journal, Linux Gazette и Linux Focus. Хотя сервер LinuxToday превратился в ведущую службу новостей для разработчиков и пользователей открытых исходников, недавно коммерциализованный Slashdot.org является несколько более интересным явлением. Это уникальная смесь службы новостей, технических дискуссий и пропаганды, которая породила общество "слэшдоттеров" ("slashdotters"), напоминающего давно забытые общества пользователей BBS. Количество участников так велико, что наблюдается так называемый "slashdot-эффект": когда информация об интересной статье или программе попадает на доску объявлений Slashdot, зачастую сервер, на котором размещена эта статья или программа, падает от перегрузки из-за слишком большого числа одновременно ломящихся туда слэшдоттеров. Slashdot.org хорошо иллюстрирует как идеализм, так и нетерпимость движения за открытые исходники. Как самое крупное и наиболее популярное сообщество, Slashdot.org служит очень важным звеном в организации пропагандистов Linux. Кстати, роль создателей Slashdot в пропаганде Linux намного превышает роль традиционных пропагандистов и агитаторов, подобных ESR, и в этом плане несколько недооценивается Linux-сообществом.
Slashdot также служит политическим инструментом подавления оппозиции,
но исследование этого явления выходит за рамки данной публикации. Я хотел
бы лишь кратко упомянуть "Вопли протеста Slashdot" ("Slashnoise"). "Вопли
протеста Slashdot" можно определить в общем случае как письма и другие
формы комментариев от читателей, выражающих мнения о программах или статьях,
которые никогда не читались и не использовались своими комментаторами.
Такие письма можно характеризовать как особую форму
"Онлайновые службы не столь надежны, как кокаин или алкоголь, но в современном мире это довольно неслабый метод "сдвинуться по фазе"... Азартные игроки аналогичным образом притягиваются к игре содержащимся в ней конфликтом между мастерством и удачей. Когда это увлечение компьютерами [играми или новостями] превращается в одержимость, компьютерный фанат вполне соответствуют психологическому типу азартного игрока... В отличие от коллекционирования марок или чтения, компьютер является психостимулянтом, и у некоторой части населения может развиваться синдром навязчивого пристрастия по отношению к обеспечиваемой компьютером стимуляции."Я предполагаю, что распределение частоты сообщений, посылаемых корреспондентами Slashdot очень неравномерно и, вероятно, близко к Проект Linux также породил интересную форму самиздата, называемую Проектом документирования Linux (Linux documentation project). В течение нескольких лет этот проект был очень успешным в создании небольших документов, подобных руководствам How-To. Более крупные работы, размером с книгу, в действительности не появились в сколь-нибудь значительном количестве. Поражает нехватка документации по внутренней структуре системы Linux. Почему она имеет место? Я считаю, что причиной на деле являются внутренние конфликты и уязвимость ведущих разработчиков (им, по сути, нечего терять, кроме знания "внутренностей" системы --- прим. автора). Согласно СиБ, никаких проблем с документацией не существует: "Многие люди (особенно те, кто по политическим мотивам не доверяет свободному рынку) могут ожидать, что культура самоуверенных самолюбивых эгоистов будет фрагментированной, проникнутой борьбой за территории, расточительной, скрытной и враждебной к людям вне нее. Но это ожидание полностью опровергается (если назвать всего лишь один пример) ошеломляющим разнообразием, качеством и полнотой документации к Linux. Общепризнанно, что программисты ненавидят документирование, но как же тогда Linux-хакеры создали ее в таком количестве? Очевидно, свободный рынок Linux работает лучше по порождению добродетельного, ориентированного на других поведения, чем прекрасно финансируемые "цеха по выпуску документов" производителей коммерческих программ."В действительности Проект документирования Linux страдает от излишней бюрократизации (например, подача документов ограничена использованием SGML и чистого текста, формат HTML не допускается) и слабого руководства (ранее в этом году некоторые авторы документов, входящих в этот проект, жаловались, что после подачи HowTo-документа требуется более месяца, чтобы он мог попасть в WEB-архив, т.е. стать доступным пользователям. Недавно были предприняты некоторые шаги по исправлению этой ситуации). Я подозреваю, что авторы документации ощущают ту же незащищенность, что и авторы успешных проектов с открытыми исходниками, но имеют еще меньше возможностей предотвратить злоупотребления. Лицензия стиля GPL для документации является гораздо менее привлекательной, чем GPL-лицензия для программного кода. Если большие объемы программного кода обеспечивают автора некоторой защитой вследствие трудности их понимания, о документации того же не скажешь. Не случайно лучшие книги о Linux выпущены коммерческими издателями, а некоторые давние участники проекта документирования Linux позднее опубликовали новые книги на коммерческой основе. // недавно FSF опубликована GNU Free Documentation License, которая // предположительно будет свободна от проблем GPL в отношении документации. ЗаключениеМногие из проблем движения за открытые исходные тексты в отличие от интерпретации этих проблем СиБ очень сложны. Я искренне верю, что предоставленный данной работой ограниченный анализ некоторых из этих проблем будет способствовать возникновению плодотворной дискуссии и сможет послужить полезной базой как для будущих исследователей этих проблем, так и для разработчиков программ с открытыми исходниками.Главная проблема "базарной" модели состоит в том, что она не имеет предсказательной силы относительно сильных и слабых сторон философии разработки программ методом открытых исходников. Вследствие этого, ее роль сводится к поставке важной метафоры, во многом подобной мифической единице измерения производительности программистов в человеко-месяцах. Я твердо убежден, что академическая модель разработки программ методом открытых исходников объясняет это явление значительно лучше. Причины популярности Linux гораздо сложнее, чем "базарная модель разработки", описанная в СиБ. В то же время, СиБ является важной работой, которая стимулировала обсуждение процесса разработки программ методом открытых исходников как некоторого социального организма, а также значения использования Интернета при разработке программного обеспечения. Несмотря на то, что значимость СиБ несколько ограничена вольным обращением с фактами и морализаторским тоном, она очень хорошо описывает важные атрибуты, которые могут обеспечить успех при разработке как проектов на базе открытых исходников, так и коммерческих. Чтение СиБ способствует переосмыслению лучших методов разработки программ, особенно в плане значения открытости при разработке. Последняя может с успехом использоваться как в коллективах разработчиков программ методом открытых исходников, так и традиционными разработчиками коммерческого программного обеспечения для создания рычагов проникновения на рынок, а также увеличения вероятности успеха проектов по разработке нового программного обеспечения. В заключение хотелось бы подчеркнуть, что, несмотря на свои слабые места, СиБ сыграла исключительно важную роль в инициировании обсуждения феномена открытых исходников. Последующие работы на эту тему находились в более привилегированном положении по сравнению с СиБ, поскольку имели возможность ссылаться на более значительно более широкий круг доступных материалов и публикаций, включая СиБ. Хотя некоторые идеи и гипотезы, выдвинутые СиБ, бьют мимо цели, а некоторые важные темы попросту опущены, она сыграла исключительно важную роль, послужив базисом дискуссии о феномене открытых исходников. Эту роль СиБ не следует недооценивать. Николай Безруков --- ведущий аналитик корпорации BASF, профессор университета Fairleigh Dickinson (NJ) и веб-мастер їљ2000 Сергей Короп <svk@lib.ru> (пер. с англ.) 18.01.2001
(опубликована на сервере 18.01.2001) Комментарии к материалуНовая реплика |
<> <> |
|
(c) Международный Центр современных психотехнологий, Шугалей Елена 1996-2006 center@humans.ru |
Программное обеспечение и хостинг |