НЕ ТЕ окна
Вспоминаем историю Windows NT
Как ты наверняка знаешь, до 2001 года, то есть до релиза Windows XP, существовали две ветви развития операционной системы Windows: Windows, основанная на DOS, и Windows, основанная на NT. В итоге победила вторая, ставшая предком для всех современных версий Windows. Между тем к Windows на основе DOS относятся Windows 1.0–3.0, Windows 3.1, 3.11, Windows 95, Windows 98, Windows ME.
С Windows на основе DOS все понятно, к существующей 16-разрядной операционной системе MS-DOS, изначально купленной на стороне, прикрутили графический интерфейс. Вместе они служили верой и правдой. Однако через некоторое время в Microsoft пришли к тому, что рано или поздно понадобится абсолютно новая операционная система, основанная на 32-битной архитектуре без старого багажа.
Несколько лет спустя этой новой системой стала NT — для своего времени революционная ОС. Как раз об истории ее создания и пойдет речь в этой статье.
Showstopper
Мне нравится читать книги об истории программных продуктов, основателях софтверных компаний и просто о людях, оставивших след в истории компьютерной эры. В этот список входят такие книги, как «Just for Fun» Линуса Торвальдса, размышления о будущем, принадлежащие Биллу Гейтсу, рассуждения о программировании в книге «Мифический человеко‑месяц» Фредерика Брукса, «Время UNIX» Брайана Кернигана и другие. До недавнего времени из книг этого жанра мне больше всего нравилась работа Карен Саусвик «Все вокруг должны разориться», повествующая, как ни странно, о великом и ужасном Ларри Эллисоне.
Между тем, переворачивая страницы изданий об архитектуре операционных систем, в конце одного из томиков я наткнулся на следующую ссылку: Zachary, G. Pascal (1994). Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft. Warner Books. ISBN 0-02-935671-7. Сначала я был удивлен: как так, я до сих пор не прочитал книгу об истории создания одной из самых выдающихся операционных систем всех времен и народов? Причина вскоре стала для меня очевидной, да песнь не об этом.
Недолгие поиски в сети дали результаты: на винт моего компа был слит PDF-файл, содержащий эту книгу. Конечно, книги надо покупать в магазинах в бумажном виде, но меня посетило сомнение, что в три часа ночи в ближайшем книжном магазине нашего городка найдется книга тридцатилетней давности на английском языке. Короче, пришлось довольствоваться тем, что есть: не такой уж и плохой вариант.
info
Общеизвестный перевод слова showstopper — представление, спектакль; менее распространенный — накладка, неисправность. Но в данном конкретном случае во время разработки системы NT этим термином называли критический баг, приводивший к сбою в работе системы; кроме него, существовали баги первого и второго приоритетов, находившиеся после showstopper.
Книгу логичнее отнести к художественному, нежели к техническому литературному жанру, из‑за этого лично мне было тяжеловато ее читать. В весьма небольшое количество страниц автору удалось вместить невероятный объем информации. Он вкратце рассказал о биографии Дэвида Катлера: о трудном детстве, о его юности, когда тот занимался спортом, но в связи с тяжелой травмой был вынужден оставить эти занятия. О его карьере, в частности о промежутке жизни, когда тот работал в Digital Equipment. О потрясающих успехах компьютеров (PDP, VAX) и операционных системах (VMS) этой компании. Наконец, о завершении работы в DEC.
С чего все началось?
Во многих источниках говорится о том, что в конце восьмидесятых Катлер просто уволился из Digital и перешел в Microsoft, но на самом деле это было далеко не так. У Дэвида был тяжелый жизненный период, когда руководство DEC отвергало многие его проекты современных операционных систем. В это время Дэйв был в Сиэтле, где под началом Digital открыл компанию для разработки компьютера PRISM и операционной системы Mica для него. Тем не менее эти начинания тоже были отвергнуты начальством в 1988 году, что поставило крест на бизнесе Дэйва.
Катлер пребывал в подавленном состоянии. Буквально в нескольких километрах в Сиэтле Билл Гейтс искал разработчика операционных систем, который мог бы руководить процессом создания переносимой — не зависящей от архитектуры ЭВМ — операционной системы. Он слышал о достижениях Катлера и, узнав, что тот находится с ним в одном городе, пригласил Дэвида на собеседование. Катлеру, только что потерявшему бизнес, мало что оставалось. С этого момента и началась история Windows NT. Кроме всего прочего, Дэйв с презрением относился к Unix, и работа в Microsoft давала ему шанс создать операционную систему, которая окажется лучше и совершеннее.
Кроме биографии Дэвида Катлера, автор рассказывает о биографии Гейтса. Казалось бы, можно ли узнать что‑то новое об этом человеке? Оказывается, можно.
Основную часть книги автор посвящает, конечно же, разработке Windows NT, в подробностях описывая решения менеджмента группы разработки, взаимоотношения между членами команды и прочие картины внутренней кухни Microsoft. Много внимания уделяется отдельным участникам разработки, и это не только программисты, но и тестеры, билдеры, технические писатели. Кратко обрисованы их жизненные пути, обстоятельства, которые привели их в группу NT. В книге есть описание корпорации Microsoft изнутри на начало девяностых. Конечно, с того времени много что изменилось, но даже это поражает воображение. Прямо в кампусах, где ведется разработка ПО, находились тренажерные залы, бассейны — всё для сотрудников компании.

После ухода из DEC Катлер привел в Microsoft всю свою команду разработчиков, тем самым, как замечает автор в эпилоге, организовал компанию внутри компании, и этому не помешал даже Билл Гейтс. Во многом от этого и зависел будущий успех Windows NT. Катлер окружил себя уже знакомыми специалистами, с которыми он годами работал в Digital. Впоследствии программисты из Microsoft тоже начали вливаться в процесс разработки, стали организовываться дополнительные отделы. Например, графическим отделом руководил очень своеобразный программист Whitmer, а его команда называлась «Бессмертные» — Undead.
NT и OS/2
Меня всегда интересовало, какое отношение NT имеет к OS/2. Во многих источниках приводится довольно разная информация, вплоть до того, что NT — это продолжение OS/2. Так как книга Showstopper написана в результате общения автора с непосредственными разработчиками системы, мне кажется, что этому источнику можно доверять. В конце книги Захари перечисляет лиц, с которыми он провел интервью. Список громадный: фамилии расположены в двух столбцах и занимают две страницы. В него входят не только сами сотрудники Microsoft, но и члены их семей: автор показал, как NT повлияла на личную жизнь участников проекта.
В конце 1988 года совершенно независимо от OS/2 Дэйв Катлер начал разработку системы, которую впоследствии маркетологи окрестили New Technologies, сокращенно NT. До этого времени в подавляющем большинстве случаев операционные системы разрабатывались непосредственно на языке ассемблера (исключением стала Unix), тогда как большая часть NT писалась на C. Это делалось для того, чтобы обеспечить переносимость системы на другие аппаратные платформы.
Тем не менее в качестве целевого был выбран процессор i386 от Intel. Однако сначала NT собирались разрабатывать для процессора i860 — это представитель интеловской RISC-архитектуры, но из‑за конструкторских дефектов разработка системы для него была прекращена. В течение некоторого времени создание ОС и тестирование параллельно велись на архитектуре MIPS, в которой Катлер видел будущее. Однако не срослось: от ее поддержки после выпуска Windows NT 4.0 тоже отказались. В начале разработки NT она создавалась как обособленная система, не предполагалась совместимость ни с DOS, ни с другими версиями Windows, ни с OS/2.
После начала успешных продаж Windows 3.0 для Microsoft стало очевидно, что совместный с IBM проект операционной системы OS/2 не оправдал надежд, но отказываться от такого союзника им тоже не хотелось. Поэтому под флагом проекта OS/2 они стали скрывать разработку NT. В это же время стало понятно, что для более широкого распространения NT необходимо добавить к ней совместимость с основными версиями Windows, дополнив ОС возможностью выполнения написанных для Windows 3.х приложений.
Вместе с тем OS/2 также имела небольшой парк программ, от поддержки которых в новой системе нельзя было отказываться. Узнав об этом, Катлер был вне себя от злости. Он сказал, что разработка новой системы ведется уже полтора года без предположения о какой‑либо совместимости со старыми ОС, вследствие чего придется вносить изменения в базовый код. Кстати, именно эта обратная совместимость с Windows и стала в итоге одним из бедствий, так как речь шла еще о 16-битной Windows, при этом NT изначально была 32-разрядной. Уже перед самым релизом системы, обнаружив, что скорость выполнения старых 16-разрядных программ была неудовлетворительной, релиз несколько раз откладывали для внесения изменений.
Довольно важным маркетинговым шагом со стороны Microsoft было переименование NT в Windows NT, поскольку изначально эти две ОС позиционировались как системы с принципиально разной архитектурой. Катлер сильно ругался, но понимал, что условия, которые он имел в Microsoft, вряд ли получит где‑то еще.
Фактически работа над OS/2 была прекращена, а прокачанные в ее процессе разработчики стали переходить в проект Windows NT. Руководство Microsoft продолжало вешать лапшу на уши IBM о том, что разработка OS/2 продолжается. Но однажды на очередной встрече руководителей разработки операционных систем Microsoft и IBM последним была представлена новая система Windows NT, имеющая схожий с Windows программный интерфейс. Те оказались в недоумении, незамедлительно доложили об этом начальству, но ничего изменить уже не смогли. Разработка OS/2 продолжилась исключительно в IBM, которая так и не смогла сделать из нее коммерчески успешную операционную систему.
Ближе к дате релиза все еще оставался нерешенным вопрос об используемой файловой системе; FAT со своими ограничениями явно не подходила для 32-битной ОС. Тогда был поднят вопрос о разработке нового стандарта. Удивительно, одна из самых совершенных файловых систем — NTFS была создана тремя разработчиками!
Ведущий разработчик ядра Mach Ричард Рашид в 1991 году присоединился к Microsoft для работы над Windows NT в отделе исследований — Microsoft Research. Так как Катлер проектировал NT, опираясь на результаты, полученные при проведении исследований для разработки Mach, Рашид сделал несколько важных рекомендаций для управления памятью, что в итоге позволило повысить скорость работы Windows NT.
Как собирали систему
Команды разработчиков и тестеров в проекте Windows NT были по разные стороны баррикад. Тестеры находили баги, программисты отвечали, что в их коде не может быть багов, тогда тестеры эксплуатировали баг снова и снова, разработчикам нечего было возразить, и это злило их еще сильнее. Знакомая картина, не так ли?
Для билдеров был отведен вместительный офис на первом этаже второго кампуса Microsoft. Как следует из названия, билдеры готовили результирующий билд. Каждый программист работал над своей задачей — собственными файлами с кодом, затем компилировал результат в объектные файлы, которые отправлял в «Билд Лаб». Уже там, собрав последние версии всех необходимых объектных файлов системы и подготовив нужные скрипты, старший билдер запускал процедуру линкования. Эта процедура могла длиться до 18 часов. Если она завершалась успешно, то получалась сборка операционной системы, которую в лучшем случае (если никто из программистов не накосячил и никто из билдеров не забыл прилинковать нужную либу) можно было протестировать.
Обычно процесс линковки запускали на ночь, поэтому Катлер, придя с утра на работу, ждал новый билд. И впадал в ярость, если его не было. Во время дедлайнов старший билдер ночевал в лаборатории, чтобы никто не проник внутрь. Поскольку, как обычно бывало, уже после начала процедуры построения кому‑либо из программистов приходила в голову гениальная идея внести изменения в свой код и он сломя голову бежал в «Билд Лаб», чтобы сделать это. Необходимо было воспрепятствовать этому ради готовности билда к утру.
Вот еще один комический случай, произошедший во время разработки Windows NT. Когда команда Undead реализовала вывод изображений — битовых образов на экран, первая картинка, которую они вывели посредством NT, была фотография обнаженной женщины. Конечно, мужской части сотрудников Microsoft это показалось забавным, но в корпорации работали и дамы, одной из которых это очень не понравилось. Она сообщила об этом главе графического отдела Витмеру, но тот отмахнулся. Тогда она доложила о случившемся самому высокому начальству, после чего битмап был заменен.
В последние месяцы перед релизом, когда команда уже правила баги, не внося в систему новой функциональности, в конце каждой рабочей недели на командном собрании Дэвид Катлер дарил футболку с надписью Zero Bugs программистам, исправившим все баги в своем коде. Тем самым он старался поднять командный дух, к тому же сразу становились видны те, кто еще не исправил все баги.
О Дэвиде Катлере
Отдельно стоит отметить взрывной характер Катлера. Разозлившись, он говорил своим сотрудникам: Your ass like a grass and I’m a lawn mower («Твоя задница как трава, а я — газонокосилка»). Руководить программистами всегда тяжело. В порыве ярости он бил кулаком стену; о причиненных кому‑либо увечьях Захари не сообщает.

Сотрудники Microsoft вспоминают, что Дэвид много работал. Между тем его труд хорошо оплачивался: за три первых года работы в Microsoft Дэйв купил два роскошных особняка на берегу озера Вашингтон, что вблизи Сиэтла. Кроме того, он умел отдыхать: на каникулы уезжал на горнолыжные курорты, участвовал в автомобильных гонках.
Захари рассказывает о том, как Катлер праздновал свое 50-летие 13 марта 1992 года. Мое воспитание не позволяет описывать, в каких нарядах заявились некоторые гости. Любопытно, что Билл Гейтс не был приглашен на торжество. В качестве подарка друзья притащили VAX — мини‑компьютер десятилетней давности размером со шкаф. На нем работала операционная система, разработанная Катлером в DEC, — VMS. К слову, многие успешные механизмы, реализованные Дэйвом и компанией в этой системе, были внедрены в NT. Именно из‑за этого впоследствии появились трения между Microsoft и DEC, но они были благополучно улажены.
Релиз
Спустя почти пять лет после начала разработки, 27 июля 1993 года, была выпущена первая версия операционной системы Windows NT, по маркетинговым соображениям получившая номер 3.1, следующий после Windows 3.0. Первая версия Windows NT распространялась на 20 флоппи‑дисках, а до этого были выпущены три беты и Release Candidate на CD. Автор описывает суетливые подготовительные этапы к показу билда на компьютерных выставках. В результате всех маркетинговых шагов общественность с нетерпением ожидала выхода новой операционной системы.
Для своей работы NT требовала более мощных компьютеров, чем Windows на основе DOS. Когда стандартным объемом оперативной памяти было четыре мегабайта, Windows NT требовала шестнадцать. Как следствие, продажи были невысокими; спросом пользовались версии Windows, основанные на DOS.
Накануне релиза завершился тест длительностью в 41 час. Тест не выявил критических багов — showstopper’ов. Катлер был доволен. Процесс разработки системы NT был тяжелым, особенно последний год. Команда исправила приблизительно 30 тысяч багов, смогла пережить стрессы и завершить билд. Дэвид сел за компьютер и написал всем членам команды сообщение:
From: Dave Cutler To: All
NT официально выпущена в производство!
Позвольте мне заявить еще раз — NT выпущена!
Это были долгие и упорные усилия. Вы все проделали большую работу.
Спасибо всем за ваш вклад, особенно за последние три месяца, когда нам удавалось править более 200 ошибок в день без серьезных регрессий.
Для достижения этого потребовались беспрецедентные усилия со стороны всех вас.
Мы выполнили всё задуманное и превзошли все ожидания!
После выпуска первой версии Windows NT люди, участвовавшие в ее разработке, почувствовали некоторое опустошение, не веря, что NT завершена. Столь длительная разработка оставила отпечаток в жизни многих ее участников. Кто‑то перешел в другое подразделение внутри корпорации, кто‑то покинул Microsoft, у других появились семейные проблемы, кто‑то вовсе сменил место жительства. Так, Витмер — руководитель графического отдела NT — уехал в Турцию, где жила его девушка. Дэвид Катлер после завершения NT тоже собирался покинуть Microsoft, не зная, в какой проект перейти теперь. Но перед этим он взял недельный отпуск и отправился в Ирландию. Вернувшись в Штаты, Дэйв встретился с Биллом Гейтсом, который предложил ему руководство над вновь образованным отделом для развития Windows NT, в итоге Катлер остался в Microsoft.

Оглядываясь в прошлое, можно сделать вывод, что Windows NT опередила свое время: обычные офисные компьютеры смогли нормально поддерживать систему NT только к 2001 году, когда вышла первая широко распространившаяся среди некорпоративных пользователей Windows на основе NT — Windows XP. Хотя появившаяся годом ранее Windows 2000 тоже была тепло встречена в корпоративном сегменте, она не получила широкого распространения среди домашних пользователей.