Устаревание ПО

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

Не будет большой ошибкой сказать, что качественные изменения в составе пользовательского оборудования и решаемых с его помощью задач случаются достаточно редко. Современные смартфоны по-прежнему сохраняют некоторое сходство со своими предшественниками — угловатыми карманными радиотелефонами, хотя, безусловно, технические характеристики и состав ПО с тех пор изменились весьма существенно. Профессиональное оборудование (медицинские приборы, видеокамеры и т. п.) становится компактнее и мощнее, но и здесь настоящие прорывы случаются редко. Настольные компьютеры, несмотря на бурный рост характеристик, практически не изменились внешне за последние 30 лет. Концепции носимых устройств (очков, часов и т. п.) активно обыгрывались в шпионских фильмах середины прошлого века. Наконец, можно вспомнить о том, что умная одежда, мобильные средства связи, голосовые помощники и т. п. знакомы нам ещё по древним сказкам.

Аналогично, потребности пользователя мало меняются со временем: необходимость в обмене сообщениями, совершении звонков, создании и просмотре мультимедиа, работе с документами, играх и вычислениях существовала ещё до появления современных цифровых устройств (и в значительной степени обусловила их развитие). Однако вспомните, сколько раз лично вам приходилось менять (бесплатно или за деньги) состав используемых решений (мессенджеры, офисное ПО, редакторы фотографий, видеоплееры и т. д.) лишь ради того, чтобы те соответствовали текущей ситуации — при том, что формально чего-то принципиально нового эти изменения не приносили.

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

Каждая новая платформа или семейство платформ (Windows, COM, Web, ActiveX, Java, .Net, мобильные устройства, облачные сервисы, магазины приложений) даёт надежду на упрощение процесса использования и разработки ПО, однако на деле оказывается, что смена платформы, за которую в конечном счёте платит пользователь, зачастую приводит к тому, что уже существующие возможности ему приходится покупать заново, пусть и в другой обёртке и с незначительными улучшениями. Заплатив за новое устройство и ПО для него, пользователь вскоре узнаёт, что, хотя его потребности не изменились, ему следует озаботиться обновлением того и другого: новые версии привычных программ всё медленнее работают на старом «железе», а в некоторых случаях и вовсе происходит снижение производительности самого устройства (как это было, например, в известном скандале с iPhone). Ещё одним примером является оборудование для игр: хотя концептуально многие современные игры застряли на уровне первых шутеров и аркад, а действительно революционные технологии (живой мир, NPC с интеллектом и возможностью голосового общения) остаются уделом фанатиков, наведение визуального лоска вынуждает игроков раз за разом покупать всё более мощное оборудование. Следующий яркий пример — системы электронного документооборота: на заре их становления предполагалось, что использование компьютеров позволит снизить количество работы и расход бумаги, однако на практике выяснилось, что лёгкость введения новых форм в конечном счёте лишь повысила издержки.

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

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

Может ли «Сивелькирия» предложить способ выправить ситуацию, или это лишь ещё одна платформа, создающаяся ради борьбы за свою долю рынка? Как мы сейчас покажем, в «Сивелькирии» есть нечто, делающее её потенциально более привлекательной и дешёвой для пользователя.

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

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

В-третьих, под «Сивелькирией» невозможен чёрный ящик: любая программа состоит из модулей, работающих с совместимыми интерфейсами данных. Это значит, что ПО, написанное двадцать лет назад, по-прежнему будет совместимо с современным ПО и сможет обмениваться с ним вызовами и данными, поскольку работа команды разработки ОС направлена на поддержку совместимости интерфейсов. Таким образом, использование устаревшего компонента в инфраструктуре не приведёт к невозможности обмена данными с более современными системами — те в принципе не будут знать о происхождении этих данных, а любая попытка заблокировать данные на основе их происхождения является нарушением условий сотрудничества со всеми вытекающими последствиями (включая возможность блокировки до устранения нарушений и связанные с этим финансовые потери).

Наконец, модульная структура позволяет запустить модель «Поддерживай свою разработку или дай другому поддержать её»: если модуль перестаёт обновляться и официально становится legacy, то, если издатель согласен на эти условия (что поощряется условиями размещения ПО в магазине), через какое-то время он может отойти в публичную собственность. Даже если этого не происходит, спецификация, доступная на каждый прототип модуля, позволяет сторонним разработчикам подготовить замену.

Разумеется, всё вышеперечисленное никак не мешает пользователям, заинтересованным в использовании наиболее актуальных версий ПО, продолжать действовать в этом духе.

Может показаться, что данные условия являются драконовскими по отношению к издателям ПО. В некоторой мере так и есть, однако опасения касательно полного бойкота новой платформы с их стороны, на наш взгляд, являются преждевременными: в капиталистической экономике действия любой компании определяются соотношением прибылей и потерь, так что, если вдруг окажется, что потеря пользователей новой платформы (особенно при наличии под ней свободно распространяемых аналогов её ПО) не выгодна компании, та примет условия «Сивелькирии».