Программное обеспечение с открытым кодом и его сравнение с коммерческими программными продуктами становится сегодня одной из самых горячих тем. Частота упоминаний термина Open Source свидетельствует о том, что модель разработки с открытым кодом входит в список важнейших направлений развития ИТ-индустрии. Тем более странно, что отечественный корпоративный рынок относится к Open Source более чем прохладно. Попробуем разобраться в некоторых основных и наиболее спорных утверждениях относительно движения открытых кодов.

Многие утверждают, что программные продукты, распространяемые вместе с исходными текстами, более качественны, чем коммерческие. При этом проводится параллель между размером кода и его качеством, а коммерческое программное обеспечение часто называют bloatware (т.е. «раздутое»). Но имеет ли смысл сегодня писать компактный код для приложений общего назначения? Интересный анализ стоимости оборудования, необходимого для запуска некоторых программ Microsoft приведен в статье Джоэла Сполски «Письмо о стратегии IV» (russian.joelonsoftware.com/Articles/ StrategyLetterIV.html). Стоимость дискового пространства для установки Microsoft Excel 5.0 в 1993 году составляла 36 долл., а стоимость дискового пространства Excel 2000 на момент его выхода — 1,3 долл. Аналогичная тенденция наблюдается и в области оперативной памяти и процессорной мощности. Думаю, что любой программист согласится, что оптимизировать нужно наиболее часто исполняемый участок кода, и гораздо выгоднее один раз разработать более мощный процессор, чем сотни раз оптимизировать код для менее мощного. В основе роста объема кода лежит не «всемирный заговор» Wintel, а простой экономический расчет. Для мастеров оптимального кодирования всегда найдется работа — например, в области встроенных систем.

Итак, размер не имеет значения. Но есть ли свидетельства, что открытый код — более качественный? Как ни странно, но большая часть аргументов строится на умозрительных утверждениях. Считается, что, если код может посмотреть любой человек, то всем миром ошибки будут обнаружены гораздо быстрее, чем это сделает служба контроля качества коммерческого производителя.

Опубликованных объективных данных на удивление немного. Компания Reasoning, специализирующаяся на средствах автоматического анализа качества кода и консалтинге, опубликовала недавно данные по анализу кода некоторых популярных продуктов категории Open Source: MySQL (260 056 строк кода), Linux (125 502 строк — только модули, реализующие протокол TCP/IP) и новая версия Apache (76 208 строк). Число ошибок на 1000 строк кода в этих программах составило 0,09; 0,1 и 0,53 соответственно, а среднее число ошибок, найденных специалистами Reasoning в исследованных ими продуктах с коммерческой лицензией составляет 0,55. Еще один анализ качества кода Linux был выполнен компанией Coverity и также показал, что среднее число ошибок в коде открытых продуктов меньше, чем в среднем по некоторому набору неназванного коммерческого программного обеспечения.

На первый взгляд это свидетельствует о преимуществах подхода Open Source. Однако, не следует забывать, что компании Reasoning и Coverity специализируются на предоставлении разработчикам услуг по контролю качества, а потому их данные относительно качества коммерческих продуктов, скорее всего, соответствуют именно «сырому» коду. Косвенным свидетельством тому более высокий уровень ошибок в «сырой» версии Apache, сопоставимый со средним показателем для коммерческого программного обеспечения. Однако большинство крупных производителей программных продуктов имеет мощные системы контроля, не уступающие инструментарию Reasoning и Coverity. Да и анализ кода — не единственный метод: существуют стресс-тесты, прогоняются сотни тысяч тестовых примеров и отлавливаются малейшие отклонения от эталонных результатов и т.п.

Фактически эти несколько исследований и являются единственными более или менее серьезными открытыми работами по анализу качества кода. Возможно ли в принципе сравнение качества открытого и коммерческого кода? Скорее всего, нет. Исходный код коммерческих систем не доступен для публичного тестирования. Но происходит ли это от того, что он так плох, что его нельзя показывать, как считают некоторые активные участники форумов? Очевидно, нет. В основе закрытости коммерческих систем лежит экономическая модель, при которой владение исходным кодом является гарантией сохранения интеллектуальной собственности производителя.

Если нет данных о прямом сравнении качества кода, то можно попытаться оценить по косвенным признакам. Безопасность в значительной степени является следствием качества кода. Мы очень часто слышим об очередном вирусе, поражающем Windows; казалось бы, это ли не свидетельство ненадежности коммерческого программного обеспечения? Оставим в стороне религиозный спор о Microsoft — популярность продуктов корпорации сослужила ей дурную службу, а низкая квалификация пользователей открывает широкую дорогу злоумышленникам. Вопрос шире: является ли модель разработки кода сообществом более эффективной, чем индустриальная система автоматизированного анализа и бета-тестирования? Упомянем другой коммерческий продукт — OpenVMS. У данной операционной системы по-прежнему нет замены там, где нужна высочайшая степень безопасности и защищенности [2], а вот безопасность и надежность целого ряда приложений с открытым кодом не из первой десятки вызывает сомнения. С достаточно высокой уверенностью можно постулировать, что качество программного обеспечения и его безопасность не зависят от принятой модели разработки.

Вопросы качества кода и безопасности системы достаточно важны, но гораздо более важным для корпоративного заказчика является сервис, сопутствующий поставкам программных продуктов, а здесь у сообщества Open Source начинаются сложности — сервис изначально не был заложен в эту модель. Предполагалось, что доступ к коду самодостаточен, и опытный программист легко найдет причину ошибки и сам ее исправит, в крайнем случае, это сделает кто-то еще в сообществе и сообщит остальным. До определенного этапа этот подход неплохо работал, но выход на корпоративный рынок, с его соглашениями о гарантированном уровне обслуживания и критически важными для бизнеса приложениями, показал, что такая модель не может быть принята серьезными потребителями, а «гибридные модели» пока только в зачаточном состоянии.

Но, может быть, нулевая стоимость лицензий действительно в состоянии похоронить коммерческое программное обеспечение? Увы, стоимость товара — это еще далеко не все затраты. Казалось бы, TCO, достаточно простая метрика для измерения экономического эффекта внедрения новых технологий, позволяет решить споры об экономической эффективности открытого и коммерческого программного обеспечения [3]. Но дьявол, как всегда, таится в деталях, определяющих, насколько близка использованная модель оценки к реальности.

Не удалось найти ни одного исследования, где сравнивались бы экономические параметры открытых и коммерческих продуктов как общей категории, а не отдельных продуктов. Да это, скорее всего, и невозможно в силу «конкретности» самого понятия TCO. Но исследований, посвященных сравнению TCO определенных продуктов, много; чаще всего, речь идет о Linux, Windows или Unix. Рассмотрим одну из наиболее известных работ [4]. Аналитики IDC, рассмотрев два определенных типа задач — Web-приложения и средства групповой работы, — установили, что для задач первого типа у систем RISC/Unix показатель TCO по сравнению с системами Intel/Linux выше в 1,8 раза, а для задач второго типа — в 5,5 раз. С одной стороны, результат неожиданный: трудно понять, почему стоимость обслуживания схожих систем Unix и Linux отличается так сильно. С другой стороны, трудно оспорить факт, что продажи серверов Intel/Linux растут стремительными темпами, на фоне стагнации рынка RISC/Unix. Казалось бы, это исследование однозначно свидетельствует о преимуществах Open Source, однако следует помнить, что в исследовании речь идет о выполнении множества задач, каждая из которых относительно невелика, и вместо одного мощного сервера можно использовать много небольших и более дешевых.

Другое исследование представляет собой пример весьма качественной работы по сравнению экономических эффектов от применения открытых и коммерческих программных продуктов [5]. Расчеты проводились для двух типов компаний среднего и крупного бизнеса, и для нескольких типов стратегий построения информационной инфраструктуры, в зависимости от доли критичных для бизнеса приложений и «стандартных» серверов в общей инфраструктуре. Авторам удалось избежать сложностей и неоднозначностей расчета затрат на персонал, обслуживающий серверы: они просто вынесли эти расходы за скобки. В результате рассчитываемый параметр правильнее назвать VCO (Visible Cost of Ownership), а не TCO. С одной стороны, это ограничивает широту исследования, а с другой — позволяет вычленить бесспорную часть расчетов. Более того, в таком виде это исследование имеет одинаковую ценность для стран с различным уровнем зарплат. Анализ показал, что VCO для Microsoft Windows Server 2003 существенно ниже, чем для Novell/SuSe Linux 8 и Red Hat Enterprise Linux 3.

На какие еще данные по экономике Open Source можно опираться? Безусловно, на опыт удачных внедрений. Такие исследования проводятся методом опроса ИТ-руководителей о планах и результатах внедрения продуктов с открытым кодом. Скажем, согласно исследованию Evans Data [6], 62% менеджеров сказали, что ожидают снижения затрат при использовании Linux, причем 11% считает, что затраты уменьшаться более чем на 50%. Казалось бы, какие аргументы еще нужны? Но не все так просто. Очень показательна аналогичная работа аналитиков Forrester Research [7]; большая часть опрошенных отметила экономию при использовании открытых программных продуктов, однако никто из отметивших экономию точно ее не считал. Наоборот, те кто все-таки удосужился подсчитать результаты внедрения, показали увеличение затрат в среднем на 5-20%.

Да и насколько значим фактор стоимости лицензии для серверных платформ? Чтобы избежать субъективности и учесть все факторы, включая скидки продавца и техническую поддержку, можно использовать результаты тестов TPC. В результате сравнения систем, показавших примерно равную производительность, выяснилось, что отличие в стоимости программного компонента решения на базе Linux от решения на основе Windows составляет менее 1% от общей стоимости. При общей стоимости системы около 2,5 млн. долл. и стоимости СУБД Oracle для этой конфигурации свыше 1 млн. долл., разница в стоимости Linux (6400 долл.) или Windows 2000 (примерно 25 тыс. долл.; все цены даны с учетом трехлетней поддержки) не играет никакой роли.

В случае более дешевой конфигурации на базе 4-процессорного Itanium-сервера стоимость системы на основе Linux составила 426 393 долл., а Windows — 441 022 долл. Разница в стоимости операционной системы (Windows или Linux) составила 5399 долл. Стоимость ОС станет заметной только при дальнейшем снижении общей стоимости системы (аппаратная часть + СУБД + операционная система) в районе 30-40 тыс. долл.

Итак, коммерческое программное обеспечение не уступает по качеству открытым программам, служба поддержки у «коммерсантов» лучше, а общая стоимость владения Open Source, как минимум, не ниже. Неужели нет областей, где Open Source имеет превосходство? Их можно найти, только отказавшись от мифов. Это встроенные системы, куда еще не дотянулась рука «ширпотреба» и где возможность доступа к исходному коду и удаления лишнего кода является критически важной. Это проекты, где с программными продуктами работает квалифицированный разработчик, которому важна возможность настройки инструмента под себя (Eclipse или NetBeans). Это образовательные и исследовательские университеты, где все сильнее проявляют себя вычислительные grid-системы — науке всегда нужно больше при меньших затратах. Думаю, этот список не полон. А вот где у Open Source будут серьезные проблемы? Все на том же корпоративном рынке, где пользователи готовы платить не за возможность полюбоваться кодом, а за проверенные решения и гарантированный сервис.

Литература
  1. How Open-Source and Commercial Software Compare: A Quantitative Analysis of TCP/IP Implementations in Commercial Software and in the Linux Kernel, Reasoning Technical White Paper.
  2. Станислав Брик, Кирилл Вахрамеев, OpenVMS сегодня и завтра. «Открытые системы», 2000, № 5-6.
  3. Михаил Елашкин, Как оценивать эффективность ИТ? «Открытые системы», 2004, № 7.
  4. Linux and Intel-Based Servers, A Powerful Combination to Reduce the Cost of Enterprise Computing. An IDC White Paper Sponsored by Red Hat and IBM.
  5. Server operating system licensing & support cost comparison Windows Server 2003, Red Hat enterprise Linux 3 and Novell/SuSe Linux 8. BearingPoint, May 2004.
  6. Database Development Survey 2004: Winter, Evans Data Corp.
  7. Julie Giera, The Costs And Risks Of Open Source. Forrester Research, 2004.

Михаил Елашкин (mikhail@elashkin.com) — директор компании Elashkin Research (Москва).