previous up index search
Previous: 10.34 Алгоритмы и протоколы сетевой безопасности    UP: 10 Приложения

10.35 Программы с открытым кодом

Семенов Ю.А. (ИТЭФ-МФТИ)
Yu. Semenov (ITEP-MIPT)

В последнее время проблеме использования программ с открытыми кодами (ОС и прикладных программ типа OpenOffice) уделяется большое внимание, как специалистами, так и политиками. Определение того, что следует относить к программам с открытыми кодами, смотри в The Open Source Definition - Open Source Initiative.. Смотри также href=http://book.itep.ru/depository/open_source.htm.

В РФ, где у подавляющего числа пользователей нет средств для приобретения легального программного обеспечения, возникает альтернатива: использовать пиратские программы или программы с открытым кодом (часто бесплатные).

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

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

Ответ достаточно прост - коммерческие продукты в конечном счете оказываются дешевле, чем бесплатные. Это лишь кажущийся парадокс. Следует помнить о понятии TCO (Total Cost of Ownership). Расчет TCO (затрат за время эксплуатации) cмотри в Free Software Is Not Free: A Quantitative TCO Analysis.

При выборе варианта (коммерческий против программы с открытым кодом) следует учитывать ряд обстоятельств. Во-первых, коммерческие продукты приспособлены для использования и обеспечивают больший комфорт и хорошую производительность труда. Во-вторых, они безопаснее и содержат меньшее число ошибок. Большинство пользователей даже не подозревают, какое количество ошибок содержат используемые ими программы (см. Правила Хольцмана). Например, коммерческая версия Red Hat отличается от общедоступной удалением выявленных ошибок и уязвимостей, а также доступностью для пользователей услуг сопровождения и различной другой помощи. Кстати, компания Red Hat имеет 3200 сотрудников и доход в 2010 году $748 миллионов. Годовой рост доходов составляет 15%. Это означает, что в мире существует достаточно много чудаков, готовых платить за коммерческую версию Red Hat, хотя в Интернет имеется бесплатная программа. Наши потребители, которые часто не ограничены временем выполнения того или иного проекта, и не привыкли учитывать трудовые издержки, не могут оценить важности сервиса. Но так будет не всегда. Как только в РФ появится достаточно большое число легальных (а не off-shore) производителей программ, проблема подобного выбора встанет остро. Эту проблему придется решать, например, при организации бизнеса в сфере cloud computing. В этом случае нужно учитывать возможность использование нестандартного оборудования. Разработчиков же компьютерного оборудования, полагаю, это уже коснулось. Примерами могут служить и работа с RAID драйвами, технологиями SAN (Storage Area Network) или программами восстановления после аварий или вторжений. Надо также помнить о необходимости подготовки персонала (это может предложить либо специализированная фирма, либо национальный региональный центр). Многие версии программ с открытыми кодами могут иметь даже некоторую поддержку. Но следует задать себе вопрос, в чем заключается заинтересованность людей, осуществляющих эту поддержку, откуда они берут ресурсы на это? Это либо государственная программа США, либо какая-то коммерческая фирма, которая временно по каким-то имиджевым соображениям осуществляет такие услуги бесплатно. Но пройдет время, государственная программа завершится и вы окажетесь один на один с вашими проблемами. Я не говорю о возможности мошеннических мотивов "поддержки". Рассчитывать на оперативную помощь через Интернет не следует, хотя бы потому, что она негарантирована.

Бесплатные ОС обычно труднее конфигурировать. Отдельную проблему представляет собой автоматическое обновление ОС в случае выявления ошибок или уязвимостей. Это должно выполняться как можно быстрее, а бесплатные версии такого сервиса, как правило, предложить не могут.

Если вы используете бесплатную ОС, все эти задачи ложатся на ваши плечи. Либо вы должны быть гениальным программистом, либо вы проиграете в конкурентной борьбе.

Худшим вариантом использования бесплатных программ является копирование их из Интернет. В этом случае велик риск заражения компьютера вредоносным кодом. До 70% таких программ заражены. Я как-то искал DVI-драйвер для своего домашнего компьютера, просмотрел десятки сайтов, но не нашел ни одного незараженного.

При выборе программного обеспечения важна не только его продажная цена, но полная стоимость адаптации и поддержки за время эксплуатации. Это особенно существенно для сложных программных продуктов, например, операционных систем, только ядро которых содержит более 10 миллионов строк кода. Не существует человека, который бы знал весь код ядра. Более того, этот код регулярно пополняется различными авторами. И нельзя быть уверенным в их абсолютной добропорядочности. Все обновления должны подвергаться проверке новейшими версиями программ codechecker. Эти коммерческие программы совсем не дешевы, но если их использовать в специальных сертификационных центрах, они быстро окупятся. Для учебных целей ОС с открытым кодом использовать можно, но если такая ОС планируется для бизнеса или для целей управления, то я бы порекомендовал коммерческий продукт.

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

Некоторые легкомысленные сторонники программ с открытыми кодами призывают к тотальной унификации, например, к введению повсеместно одной и той же версии Linux. Но если это случиться, то первый же вирус или сетевой червь обрушит информационную систему в национальном масштабе. Когда однажды я обратил внимание апологетов подобных решений на возможные последствия, то мне ответили, что они намерены использовать повсеместно эффективные антивирусные программы. Похоже, они ничего не слыхали об атаках нулевого дня. Число используемых типов ОС и приложений должно быть достаточно большим, ведь Господь создал нас с разными генными наборами не случайно, иначе холера, чума или испанка стерли бы давно человечество с лица земли...

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

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

Для решения задачи мало научить пользователей (это самая простая часть проблемы), нужно подготовить достаточное число экспертов по ядру и оболочке ОС (а это еще миллионы строк кода).

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

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

В сфере программ с открытыми кодами существует большая путаница в терминологии (см. When "open source" software isn't truly open source). Обычно (но не всегда), когда говорят о программах с открытыми кодами имеют в виду следующее:

Этим перечнем характеристики программ с открытыми кодами не ограничиваются. Существует еще версия абсолютной свободы - WTFPL (расшифровка не вполне прилична). Но многие считают, что если код открыт, то такой продукт уже можно считать программой с открытым кодом, вне зависимости от наличия или отсутсвия каких-либо лицензий. Лицензии определяют условия использования, распространения, модификации, авторские права, ответственность за последствия в случае выявления ошибок и т.д.. Смотри список лицензий, одобренных OSI.

Считается, что программы с открытым кодом могут открыть новые возможности в сфере образования в том числе на международном уровне. Смотри статью Каролин Фокс (Carolyn Fox) Open source creates a more compassionate global education. Существуют социальные сети, например, ePals, специально ориентированные на обучение без ограничения по возрасту. В этой сети представлено около 200 стран. Существуют сети и существенно меньшего масштаба, например, Dweeber. Эта сеть рассчитана на студентов 13-17 лет (США). Существуют и другие образовательные социальные сети, ориентированные на программы с открытыми кодами: Elgg и Mahara. Все эти сети учат ребят тому, как вообще пользоваться социальными сетями, а также общению и коммуникациям.

Программное обеспечение с открытыми кодами в последнее время становилось все более популярным. Привлекательность этих программ была поставлена под вопрос после выявления уязвимости в OpenSSL - Heartbleed (см. "After Heartbleed: New realities of open source software security", Michael Cobb, TechTarget, Sep. 2014).

Выводы

Twitter @opensourceway: https://twitter.com/opensourceway
Google+: https://plus.google.com/+opensourceway
Facebook: https://www.facebook.com/opensourceway
Instagram: https://www.instagram.com/opensourceway


Previous: 10.34 Алгоритмы и протоколы сетевой безопасности    UP: 10 Приложения