open-src-corp

OpenSource на корпоративном рынке\\ легенды и их разоблачение

крис касперски ака мыщъх, тщ-уьфшд

открытое программное обеспечение ожесточенно конкурирует с закрытым, причем борьба носит не только (и не столько) технический, сколько идеологический характер. Microsoft и другие монстры проталкивают свои, зачастую не самые лучшие, решения, запугивая ужасами, которые несет открытое программное обеспечение. давайте попробуем основательно разобраться кто прав, а кто виноват!

Прежде, чем бросаться в бой, неплохо бы для начала определиться с терминами, закрыв этот вопрос раз и навсегда. На самом деле, не существует никакого «открытого», ни «закрытого» программного обеспечения. Граница между ними настолько тонкая, что практически незаметная. Критикуя статью Эрика Раймонда «Собор и базар», отечественный идеолог программирования, Николай Безруков, ехидно интересуется: «является ли бинарная программа в 1K более открытой, чем миллион строк исходников без адекватной инфраструктуры и документации?» и добавляет «…открытые исходники, с точки зрения Раймонда, суть исключительно исходный текст, а не вся сложная инфраструктура и неявные знания, используемые в крупных программных проектах» (citforum.univ.kiev.ua/open_source/academ).

(Не)доступность исходных текстов сама по себе _никак_ не влияет на качество программного продукта и наиболее значимым критерием является выбранная _модель_ _разработки_ включающая в себя проектирование, кодирование, отладку, введение системы в эксплуатацию, поддержку обратной связи с пользователями и т. д. и т. п. Хороших программных продуктов единицы и это правило справедливо как для открытых, так и для закрытых проектов, поэтому, чтобы быть до конца честным и беспристрастным, необходимо сравнивать не что попало, а _лучшие_ из имеющихся решений, причем сравнивать по наиболее значимым критериям, определяющих потребительские характеристики продукта, среди которых на первое место выдвигается «совокупная стоимость владения» о которой мы сейчас и поговорим.

open-src-corp_image_0.jpg

Рисунок 1 рассвет открытых исходных текстов или закат?

Совокупная стоимость владения определяется полной суммой всех вложенных средств, включая убытки от недополученной выгоды. Вычислять ее можно по разному (общепринятой методики нет), поэтому совершенно неудивительно, что подтасовав критерии, легко выдвинуть на первое место свою любимую операционную систему, утопив конкурентов. Компания Microsoft при каждом удобном случае заявляющая, что совокупная стоимость владения Windows Server на столько-то процентов ниже, чем Linux, еще ни разу не поделилось методикой вычислений, а потому проверить правильность расчетов никто из нас не в состоянии, что наводит на глубокие размышления: а были ли вообще расчеты или цифры изначально брались с потолка? Ничего не остается, как заниматься расчетами самостоятельно.

В _совокупную_ стоимость владения операционной владения в первую очередь входит стоимость железа, необходимого для обеспечения применимого уровня производительности. Известно, что Windows предъявляет намного более жесткие требования к железу, чем Linux или BSD, причем она хуже масштабируется и тянет за собой графический интерфейс с кучей слоев абстракции, образовавшихся в ходе ее эволюции. А зачем серверу графический интерфейс?! Он не только отъедает память и процессорные такты, но и существенно осложняет удаленное администрирование, требуя высокоскоростных каналов и применения специализированных аппаратных средств. Но «отодрать» GUI от Windows невозможно, как невозможно исключить множество посторонних компонентов, «слушающих» порты и создающих прямую угрозу безопасности. В то же самое время поддержка многопроцессорных систем существенно затруднена лицензионными ограничениями. Поэтому, по части железа, и Linux, и xBSD рвет Windows как тузик грелку. Сборка кластера на основе Windows обходится _намного_ дороже!!!

Но сборка — это ладно. Это так сказать, начальные капиталовложения (в случае Linux/xBSD они зачастую и окончательные). А как обстоят дела с расходами на эксплуатацию? Возьмем тоже железо. Windows NT в отличии от Windows 9x хранит информацию о конфигурации оборудовании в реестре в виде дерева, которое строится на первоначальном этапе инсталляции в последствии не может быть радикально изменено. То есть, снять жесткий диск с Windows NT с одного компьютера и воткнуть его в другой (более современный) просто не получится и потребуется переустанавливать систему заново! Если никакие пакеты обновления (ServicePack'и) не устанавливались, то можно обойтись и установкой «поверх» (правда, о стабильной работе в этом случае придется забыть), в противном же случае, потребуется _полная_ переустановка системы со всеми приложениями и последующей конфигурацией оных. При этом очень сложно не потерять никакие настройки, которые не могут быть восстановлены с «чистого листа». Другими словами, Windows NT привязывает нас к железу и не позволяет его обновлять. А новые версии Windows в дополнение к переустановке требуют еще и повторной авторизации в которой нам компания Microsoft может запросто отказать. И хотя серверное железо не меняется каждый день, оно подвержено поломкам (как правило, внезапным). В случае Linux/xBSD все просто — переставил жесткий диск в другой компьютер и корпорация (или маленькая компания) продолжает жить полной жизнью и дышать полной грудью, а вот Windows… требует кучи времени, а время, как известно, деньги.

open-src-corp_image_1.jpg

Рисунок 2 закрытое программное обеспечение сковывает нас…

На самом деле, операционная система сама по себе никому не нужна, поскольку она всего лишь обеспечивает унифицированную среду для запуска _программ_ и следит за распределением ресурсов. Весь сок в программном обеспечении. Нормальный Linux/xBSD дистрибутив уже включает в себя практически все необходимое, а оставшееся легко собирается на месте из готовых «кубиков». Фактически, Linux/xBSD представляет собой идеальную интегрированную среду программирования — своеобразный конструктор из которого можно построить что угодно. Windows же, напротив, являет собой монолитный дистрибутив и вся свобода выбора сводится к вопросу: устанавливать ли «Блокнот» или… не устанавливать. Чисто технически его можно и не установить, но тогда перестанут работать программы, его использующие, а таких программ оказывается на удивление много.

Как минимум нам потребуется докупить антивирус, брандмауэр, систему обнаружения вторжений, комплекс для удаленного администрирования и диагностики неисправностей, утилиту архивирования и восстановления данных, не говоря уже о серверах баз данных и т. д. и т. п. Даже при минимальных потребностях, стоимость дополнительного ПО заметно превышает цену самой Windows вместе с железом на котором она стоит. А в Linux/xBSD все это есть изначально! И ставится одним махом в автоматическом (точнее, почти автоматическом) режиме. Подчеркнем, что речь в данном случае идет _только_ о серверах. Что же касается рабочих станций, то здесь вопрос даже не в стоимости, а в наличии, то есть, _отсутствии_ необходимого ПО. Можно до хрипоты доказывать, что Open Office практически не уступает MicrosoftOffice, а GIMP по целому ряду критериев даже переплевывает AdobePhotoshop. Все это так, но… где найти людей, владеющих Open Office и GIMP'ом? Где найти сопутствующую литературу? Открывая любую книгу, посвященную фотомонтажу, мы с большой степенью вероятности встретим описание приемов работы с Photoshop'ом, но практически нигде не увидим GIMP. К тому же, переходить с одного программного пакета на другой очень муторно (переучиваться всегда трудно) и производительность труда на долгое время падает ниже нуля.

open-src-corp_image_2.jpg

Рисунок 3 …а открытое — освобождает!

Раз уж речь зашла о людях, то в совокупную стоимость владения необходимо включить оплату труда системного администратора, которая тесным образом связана с его квалификацией. Достоинство Windows в том, что ее установить может даже четырехлетний ребенок и система будет стоять и даже как бы работать. «Как бы» — потому что, иллюзия полета еще не есть сам полет и такая «работа» продлиться недолго. Если должным образом не позаботиться о безопасности, не установить и не сконфигурировать дополнительные средства защиты, не разработать правильную стратегию резервирования данных, то… рано или поздно произойдет крах. Миллиардные убытки от хакерских атак, о которых неустанно рапортуют специалисты по безопасности, не возникают ниоткуда, а входят… да-да! в счет совокупной стоимости владения Windows, зачастую ведущей к банкротству компании, подвергнувшейся атаке. В частности, 90% системных администраторов, резервируя данные на DVD/CD-RW совершенно забывают о таком понятии как «время подъема системы». Вроде бы все что нужно зарезервировано, но это «все» разбросано по десяткам, а то и сотням дисков, в которых еще предстоит разобраться. Восстановление может занять несколько дней, при этом не все пользовательские данные окажутся когерентными, то есть должным образом согласованными друг с другом.

Достаточно обратиться в любое агентство по трудоустройству, чтобы убедиться: средняя зарплата _грамотного_ администратора Windows сопоставима или даже превышает зарплату администратора Linux/xBSD, а превышает прежде всего потому, что в Linux/xBSD все проблемы решаются прямым путем. Linux/xBSD-системы представляются множество рычагов управления, в которых нет никакой черной магии, достаточно почитать man и «абракадабра» из ключей командной строки сразу станет понятной, а вот Windows представляет собой закрытый ящик, крайне враждебно относящийся к попыткам заставить его работать так как требуется, а не как было задумано отделом маркетинга. Другими словами говоря, Linux/xBSD дружелюбно относятся к профессионалам средней руки и лояльно к пытливым новичкам. Windows же — это рай для пользователя, возомнившего себя администратором, и сущий ад для настоящих администраторов. В качестве наглядного примера можно привести неоднократные случае с задержкой выпуска критичных заплаток для громадных дыр в системе безопасности, которыми славится Microsoft. Теоретически, заплатку можно изготовить и самостоятельно (нарушив при этом лицензионное соглашение), но для этого необходимо уметь держать дизассемблер в руках, а таких людей намного меньше тех, кто способен прочесть исходные тексты Linux/xBSD, написанные на Си с легкой примесью ассемблера, и либо исправить ошибку, либо закомментировать несколько строк, лишив систему части функциональности (зачастую совершенно не мешающей нормальной работе), но по крайней мере заткнув брешь до выхода «официального» патча.

open-src-corp_image_3.jpg

Рисунок 4 баги встречаются всюду — даже в конфетах!

Так же необходимо отметить, что должным образом настроенная Linux/xBSD способна беспрерывно пахать годами (ну, или обслуживаться удаленно), а Windows требует _постоянного_ внимания, заботы и ухода (прямо как тамагочи). Отсутствие средств удаленного администрирования приводит к необходимости наемки отдельного сотрудника на постоянной основе с хорошим окладом…

Подытожив сказанное, мы видим, что совокупная стоимость владения Linux/xBSD системной не превышает совокупную стоимость владения Windows, а в большинстве случаев оказывается намного ниже ее, особенно если принять в расчет стоимость рисков потери/кражи информации в случае хакерских/вирусных атак. Windows слишком дырява и ненадежна, чтобы работать в глобальных сетях. Локальные сети еще туда-сюда, да и то… если организация насчитывает хотя бы сотню человек, вероятность атаки изнутри становится сопоставима с угрозой атаки извне, а против внутренних атак Windows _вообще_ не защищена и если хакер имеет физический доступ к локальной сети, то захватить управление сервером сможет даже не слишком продвинутый в техническом плане молодой (или немолодой) человек или даже женщина!

Рисунок 5 разбитые мечты обманутых надежд — ось не оправдала возложенных на нее ожиданий

И, наконец, самое главное. Свободное программное обеспечение развивается по естественным законам. В частности, «морально устаревшая» версия компилятора GCC 2.95 успешно конкурирует с новыми версиями и разработчики продолжают ей активно пользоваться к недовольству создателей GCC, но что последние могут сделать? Ничего… либо выпустить более качественный продукт, либо заниматься бессмысленной пропагандой в надежде, что кто-нибудь на нее клюнет. В случае же с закрытыми продуктами все намного сложнее. Жизненный цикл поддержки Windows 2000 уже подходит к концу и в скором времени Microsoft прекратит ее поддержку. А это значит, что: а) легальным путем ее будет уже не купить; б) дыры останутся без заплаток. Переход же на новую версию Windows требует огромных вложений, намного превышающих ее стоимость. Это не только время, расходующееся на переустановку и перенастройку всего ПО с устранением всех конфликтов, но еще и прости, вызванные сбоями системы, с которыми администраторы еще не имеют опыта борьбы. Сделав выбор в пользу Microsoft, мы не только увеличиваем совокупную стоимость владения, но и попадаем в зависимость, которая похлещи наркотической будет! Microsoft не предоставляет нам выбора. Открытое программное обеспечение этот выбор предоставляет. Никто и ничто не сгонит нас с однажды установленной FreeBSD 4.5. Даже если полностью преобразится железо и появятся новые протоколы Интернета, непременно найдутся энтузиасты (и это будут тысячи энтузиастов), которые реализуют все эти фичи в древней, но горячо любимой 4.5 версии.

Если пренебречь зарплатой, выплачиваемой администратору, то устанавливая Linux/xBSD, мы платим _всего_ _лишь_ _раз_ в то время как выбирая Windows, мы платим _постоянно_

Рисунок 6 вот она — свобода!

Экономическая модель, положенная в основу свободного ПО, радикальным образом отличается от несвободного и напрямую конкурировать с Linux/xBSD компания Microsoft _не_ может. Все что ей остается — распускать пропаганду и вести скрытую информационную войну, подпитываемую различными мифами, слухами и страхами. Главное — запугать корпоративных клиентов свободным ПО, внушить им мысль, что бесплатный продукт не может быть хорошим по определению и т.д., и т.п.

Представляет интерес рассмотреть эти слухи и показать насколько они (не)состоятельны.

свободное ПО очень плохо поддерживается

Действительно, сильный аргумент. Свободное ПО чаще всего документировано кое-как. Информация отвратительно структурирована и разбросана по многочисленным man'ам, факам, комментариям в конфигурационных файлах, спискам рассылки… Ведущие разработчики проекта на вопросы пользователей за редкими исключениями (только подтверждающими правило) никогда не отвечают, а примкнувшие к сообществу личности начинают ответ с традиционного приветствия «ну ты блин в натуре ламер» за которым следует не менее традиционное: «у нормальных людей все работает, так что ищи ошибку в модуле hands или замени прокладку между креслом и клавиатурой».

Существуют, правда, организации оказывающие поддержку на коммерческой основе, но… ее качество не дотягивает даже до уровня левой руки и в нештатных ситуациях служба поддержки бессильно разводит руками, оставляя нас наедине с проблемами, которые приходится решать методом тыка.

Но как будто бы с закрытым программным обеспечением все обстоит не так! В Windows даже help'а нету! (Назвать встроенную справку справкой у меня язык не поворачивается, профессиональные руководства так не пишутся!!!) Настающую кладезь информации представляет MSDN со всеми входящими в него SDK и KnowledgeBase, но SDK ориентированы на программистов, а KnowledgeBase настолько обширен и плохо структурирован, что сформулировать правильный вопрос можно только зная половину ответа.

Кстати о птичках. Недавно мыщъх распахал винт на 500 гектар и так сильно тормознул, что совершенно забыл о необходимости включить поддержку BigLba. Будучи обладателем лицензионной копии Windows, связываюсь со службой поддержки и излагаю ей ситуацию. Меня долго посылают (не на хутор за бабочками, а от одного «специалиста» к другому), которые мне советуют выбросить винт, обновить BIOS и т. д. Но BIOS видит честные 500 гектар (на самом деле не Гигабайт, а миллионов байт, но это уже детали), так зачем мне его выкидать/обновлять? Ага, а чипсет у вас спрашивают какой? Intel 915?! Ну дык! Ясное дело, что чипсет во всем виноват. Тот факт, что FreeBSD и Linux видят на этом чипсете весь винт целиком (а не первые 128 Гбайт как Windows 2000 SP4) их слегка обескураживает и следует изумительный совет: проверить систему на вирусы, а еще лучше переустановить. Ну, переустановил, дальше-то что? — спрашиваю. А ничего! Служба поддержки клеит ласты. Иду на сайт производителя жесткого диска (Seagate) и во первых строках нахожу утилиту, включающую поддержку BigLba в реестре, при условии, что установлен пакет обновления версии 3 или выше.

И как это я мог забыть, что поддержка BigLba появилась начиная с SP3 (в XP – с SP2), но по умолчанию она выключена. Ведь сам же недавно писал об этом в «технике восстановления данных». Склероз, видать у мыщъх'а. Вот и верь после этого в службы поддержки. А ведь проблема весьма тривиальна и, судя по тому, что жесткие диски объемом менее 160 Гбайт практически исчезли из продажи, с ней столкнулся не только я. Вот такая, значит, имеется техническая поддержка.

неожиданная "смерть" открытых проектов

Представим себе такую ситуацию: два молодых, но очень талантливых и деятельных парня создают замечательный продут, которым мы с удовольствуем пользуемся, но… их обоих забирают в армию или они женятся, заводят кучу детей, устраиваются на постоянную работу и утрачивают к своему проекту весь интерес, прекращая его дальнейшую поддержку и развитие. И что тогда?!

Ну, во-первых, пользоваться уже имеющейся версией никто не запрещает и если в этой версии все всех устаивает, чего еще надобно? Если же появляются новое железо, новые форматы и протоколы, которые крайне желательно поддержать — берем исходные тексты и дорабатываем. Если не доработаем мы, это непременно сделает кто-нибудь другой. А если не сделает, то возникает резонный вопрос — из какой это дыры мы выкопали такой продукт, который кроме нас и не нужен никому?! Конечно, описанная ситуация несколько утрирована и можно привести массу примеров как достойные продукты имели хорошее начало и плохой конец. Говоря о распределенной разработке и миллионах программистах по всему миру, приверженцы OpenSource почему-то забывают, что из этих миллионов программировать умеют считанные сотни и лишь единицы готовы засучить рукава и приступить к работе, не ожидая, что ее сделает кто ни будь другой. Причем, после ухода лидера, о какой-либо координации говорить не приходится — полноводный проект разваливается на несколько независимых ручейков, постепенно исчезающих в пустыне всеохватывающей энтропии. Это, конечно, наихудший вариант развития событий, но он вполне возможен.

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

Но с закрытыми продуктами дело обстоит еще хуже! Намного хуже! Если фирма принимает решение о прекращении разработки (как, например, это случилось с отладчиком Soft-Ice или языком VisualBasic), нам остается лишь ругаться в бессильной злобе. Никакой возможности заполучить исходные тексты и продолжить разработку у нас нет. Хуже того! Напряженная патентная ситуация препятствует переписыванию продукта с чистого листа. Даже если мы не заимствуем код, мы вынуждены копировать определенные форматы, алгоритмы и технологии, а вот они-то зачастую оказываются запатентованными. Тоже самое происходит если фирма, выпускающая «наш» продукт скупается конкурентом с целью «убить» удачный проект в пользу своего, менее удачного, но более дорогостоящего.

Такова жизнь… программные проекты рождаются и умирают. Ничто не вечно под луной. Где сейчас находится MS-DOS? Microsoft практически похоронила ее, а ведь она неплохо удовлетворяла потребности большинства пользователей и если бы не реклама с маркетингом, не пришлось бы нам за одни и те же программные продукты платить дважды.

Никто в этом мире ни от чего не защищен! И риск смерти открытого проекта ничуть не выше чем у его закрытых конкурентов.

open-src-corp_image_6.jpg

Рисунок 7 посереди бесконечного кладбища мертвых проектов

открытые проекты создаются по базарному принципу

Огромное количество открытых программ имеют ужасающее качество и по всей видимости проектировались начинающими программистами, только-только постигающими азы и не имеющими реального инженерного опыта. Коммерческие проекты, как правило, более качественны, поскольку во главе проекта стоит архитектор, а сам программный код подвергается контролю качества. По крайней мере, можно надеяться на то, что установка завершиться успешно и программа запуститься без немедленного падения. Иначе обиженный потребитель потребует возврата денег, и, чтобы не разориться, фирме приходится заботиться о качестве, чутко реагируя на капризы пользователей.

Открытые проекты, создаваемые на голом энтузиазме, очень часто работают по принципу: умный разберется, а глупому это не надо. Сообщения об ошибках сплошь и рядом замалчиваются или перекладываются на чужие плечи: «это ошибка компилятора/разработчика сторонней библиотеки/или чего там еще… почему мы должны исправлять чужие ошибки?!». Но это только вершина айсберга. Худшие аспекты проблемы скрыты глубоко под водой.

Организация работы при которой архитектура проекта составляется _после_ начала кодирования порождает уродливые гибриды, развивающиеся по совершенно «ненаучному» принципу и сочетающих не сочетаемое. С одной стороны, «базарный» стиль проектирования это безусловное зло, а с другой… программисты реализуют необходимые лично им функции в том виде, с которым удобно работать, невзирая на то, что он совершенно не вписывается в концепцию проекта. Вот, например, IE имеет функцию поиска, но… людям, реализовавшим ее, навряд ли доводилось с ней плотно работать, иначе бы они взвыли от злости и переписали все так, как это сделано в Горящем Лисе или Опере.

Аристократический стиль программирования, при котором дизайн и функционал программы определяют люди, далекие от проектирования, порочен и ведет в ад. Очень сложно, если не сказать, что вообще невозможно, предусмотреть все мелочи _до_ начала создания программы. Каким бы талантливым архитектор ни был, он все-таки простой смертный, а не бог.

Подход программирования, при котором функционал наращивается по мере возникновения в нем необходимости, естественно, ведет к деградации стиля, но, как говориться: «вам шашечки или ехать?».

философское заключение

Мир — это не монохромный монитор и между «да» и «нет» можно разместить бесконечное количество самых разнообразных вариантов и их комбинаций. Оставим священные войны «за» и «против» OpenSource тем, кому хочется подраться и выплеснуть накопившийся адреналин, а сами тем временем будем подходить к каждому отдельно взятому вопросу конструктивно и объективно. Слава аллаху, религия позволяет нам использовать открытые проекты наряду с закрытыми, выбирая их них наиболее удачные решения.

Главное — чтобы непроверенное мнение не превратилось в догму. Не нужно бояться экспериментировать, пробуя различные продукты и сравнивая их друг с другом отнюдь не на основании обзоров, написанных непонятно кем, а только на основании своего личного опыта. Уверяю вас, даже укоренившееся мнение (и предубеждение) при этом может измениться на диаметрально противоположенное.

Многие известные мне системные администраторы несколько раз переходили из лагеря Windows в лагерь Linux/xBSD, после чего спустя некоторое время, возвращались на Windows обратно, и… снова тянулись к Linux/xBSD.

Трагедия в том, что идеальных программ не существует и каждый продукт имеет свои сильные и слабые черты, но использовать две операционных системы одновременно… увы. В каждый момент времени может работать только на одной.

никсы представляют собой интегрированную среду программирования, а в виндах на каждый случай программы приходится докупать отдельно;
если винда работает, то она работает, а вот если она не работает, то это кранты