В истории Microsoft есть проект, о котором в коридорах компании говорили с гордостью и ужасом одновременно. Его называли Cairo, обещали показать миру уже через пару лет, а вместо этого он стал удобным примером того, как грандиозные инженерные замыслы рассыпаются о сроки, бюджеты и людское усталость. При этом идеи Cairo никуда не исчезли. Они просачивались в готовые продукты по одной, отдельными кусками, растянувшись почти на два десятилетия. Windows NT, COM, Active Directory, поиск по содержимому документов и даже злополучная WinFS из проекта Longhorn унаследовали то, что задумали авторы Cairo ещё в начале девяностых.

Компания обещает будущее на выставке Comdex в 1990 году

В 1990 году Билл Гейтс выступил на выставке Comdex с концепцией, которую назвал "information at your fingertips". Суть формулировки проста. Информация должна находиться у пользователя под рукой, независимо от того, где она физически хранится и какая программа её создала. Для эпохи, когда люди вручную запоминали имена файлов из восьми символов и рылись в каталогах на дискетах, идея звучала почти дерзко.

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

Из этой концепции вырос проект, который внутри компании получил кодовое имя Cairo. Принятая версия гласит, что имя взято в честь столицы Египта, продолжая традицию городских кодовых имён Microsoft. Проект стартовал примерно в 1991-1992 годах, и риторика вокруг него была максимально амбициозной. Это должна была стать не очередная версия Windows, а операционная система нового типа, объектно-ориентированная от основания до интерфейса.

Объектная философия заменяет файлы на объекты с поведением

Что вообще значит "объектно-ориентированная операционная система"? В привычной системе файл это пассивный набор байтов. Программа открывает его, читает, закрывает. Файл ничего не знает о себе и ничего не умеет. В объектной модели всё наоборот. Каждая сущность, документ, папка, принтер, контакт, это объект с данными и поведением. Объекты наследуют свойства друг от друга, отвечают на запросы, связываются между собой.

Центральным элементом Cairo должна была стать объектная файловая система, известная как OFS, Object File System. Задумка радикальная. Вместо дерева каталогов с файлами пользователь получает единое хранилище объектов, где поиск строится не по именам, а по содержимому и связям. Не нужно помнить, куда сохранил документ. Достаточно спросить систему: покажи все договоры с этой компанией за прошлый год. Система отвечает, потому что понимает, что содержится внутри данных.

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

Конкуренты дышат в спину и сроки начинают ползти

К началу девяностых у Microsoft были серьёзные причины торопиться. Apple с Macintosh уже показала, что графический интерфейс это не игрушка. NeXT продавала станции с объектно-ориентированной средой разработки, и критики хвалили именно объектность. IBM работала над OS/2, в которую тоже вкладывались объектные идеи через модель SOM. Taligent, совместное предприятие Apple и IBM, обещала операционную систему, построенную целиком на объектах и фреймворках.

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

Сроки сдвигались регулярно. Сначала Cairo должна была появиться в середине девяностых, потом разговоры перешли к концу десятилетия. Внутри компании проект постепенно превращался в символ: технологически красивый, организационно неподъёмный. Отдельные команды писали блестящие вещи, но собрать их в единый продукт, который можно отдать миллионам пользователей, не получалось.

Ядро Windows NT родилось из тех же рядов, но пошло своей дорогой

Парадокс Cairo в том, что самый весомый результат проекта почти не напоминал его обещания. Пока маркетинг рассказывал об объектах, инженерная группа под руководством Дэйва Катлера, перешедшего в Microsoft из DEC, строила новое ядро операционной системы. Эта разработка исторически связана с тем же пулом усилий, что и Cairo, и в июле 1993 года вышла Windows NT 3.1.

NT получилась почти противоположностью первоначальной мечте. Никакой объектной файловой системы в ней не было. Вместо OFS стояла проверенная NTFS, журналируемая, с правами доступа, но по сути традиционная. Объектный подход сохранился глубоко внутри, в менеджере объектов ядра, где процессы, потоки и ресурсы представлены структурированными сущностями с дескрипторами. Концепция выжила, но спряталась туда, где её не видит обычный пользователь.

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

COM и OLE переносят объекты с диска на взаимодействие программ

В 1993 году Microsoft представила технологию OLE 2.0, а внутри неё зрела модель COM, Component Object Model. Вот здесь объектная родословная Cairo видна особенно ясно. COM предлагала именно то, что обещал проект: компоненты с интерфейсами, наследованием поведения и возможностью запрашивать у объекта его возможности через QueryInterface.

Разница заключалась в тактике. Cairo хотел перестроить всю систему над объектным хранилищем. COM скромно поселился между приложениями и позволил одной программе пользоваться объектами другой. Таблица встраивается в документ. Плеер встраивается в презентацию. Компонент на одном языке вызывает компонент на другом. Работало это не всегда гладко, но работало здесь и сейчас, а не в светлом будущем.

Та же логика повторилась с Active Directory в Windows 2000. Иерархическое хранилище объектов, пользователи, компьютеры, группы, политики, с запросами через LDAP и наследованием свойств по дереву. Это не OFS для пользовательских файлов, но архитектурно это тот самый шаблон: объекты, атрибуты, запросы, связи. Технология, которую не удалось сделать для всей системы, отлично прижилась в корпоративной инфраструктуре.

WinFS пытается воскресить мечту и снова не доживает до релиза

История была бы неполной без второй попытки. В 2003 году на конференции разработчиков Microsoft показала Longhorn, будущую Windows Vista, и в его составе новую файловую систему WinFS. Формально WinFS не была файловой системой, она строилась поверх NTFS как реляционное хранилище на движке SQL Server. Но идейно это была прямая наследница OFS из Cairo. Единое хранилище, где документы, письма, контакты и картинки становятся объектами со схемами, а отношения между ними описываются явно. Поиск строится запросами, а не блужданием по папкам.

Показы на конференциях выглядели убедительно. Разработчики показывали, как система сама связывает человека из адресной книги с его письмами и фотографиями. А потом начались знакомые проблемы. Производительность просела, сложность выросла, сроки Longhorn и без того горели. В 2004 году WinFS убрали из клиентского релиза, оставив обещание доделать позже. В 2006 году проект закрыли окончательно, заработав с тех пор несколько игровых названий от разочарованных наблюдателей.

Получилась почти идеальная симметрия. В начале девяностых объектное хранилище убило Cairo. Десять лет спустя объектное хранилище помогло задушить собственные амбиции Longhorn. Мечта была жива, но каждый раз оказывалась тяжелее, чем продуктовые сроки.

Идеи Cairo добрались до пользователя через двадцать лет и в другом виде

Самое любопытное в этой истории то, что обещание всё же исполнилось, просто не так и не теми руками. Посмотрите на ключевые идеи проекта:

  1. поиск по содержимому и свойствам, а не по именам файлов;
  2. единые механизмы связи между разнородными данными;
  3. объектная модель для взаимодействия программ;
  4. хранилище, где данные описывают сами себя через схемы;
  5. информация доступна независимо от того, какая программа её создала.

Индексирование и мгновенный поиск появились в Windows Vista и развивались дальше. Контакты объединились в единую сущность между почтой, календарём и мессенджерами. Облачные сервисы связывают документы с людьми и событиями. Семантический поиск по фотографиям находит снимки по описанию содержимого. Граф данных о пользователях и документах в корпоративных сервисах Microsoft это, по сути, реализованная мечта Cairo, поднятая на уровень выше операционной системы.

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

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

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

В начале девяностых типичный компьютер имел процессор с частотой в десятки мегагерц и несколько мегабайт памяти. Реляционная база данных масштаба целого диска на таком железе попросту не дышала. Инженеры Cairo строили систему для машин, которые должны были появиться годы спустя, и это классическая ловушка визионерских проектов. Когда железо наконец дотянулось до замысла, замысел уже успел дважды похоронить, в Cairo и в WinFS.

Из истории проекта можно вынести несколько спокойных и полезных наблюдений без всякого пафоса.

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

Во-вторых, совместимость это не гиря на ноге, а главный актив. Любой проект, который требует от миллионов пользователей и тысяч разработчиков начать с чистого листа, обречён торговать будущим годами. Cairo требовал именно этого.

В-третьих, идеи не умирают вместе с проектами. Инженеры расходятся по другим командам и несут концепции с собой. Файловая система Cairo не вышла, но объектный взгляд на данные рассеялся по всей экосистеме, от ядра NT до облачных графов данных. Компания потеряла продукт и купила школу мышления на два десятилетия вперёд.

И наконец, есть в этой истории что-то человеческое. Cairo остался в памяти индустрии не позорным провалом, а романтической легендой о системе, которую не успело родить своё время. Возможно, это самый полезный сорт провала: он не разрушил компанию, зато задал направление, по которому она шла много лет, иногда даже не осознавая, чей маршрут прокладывает.