Подробности разработки NT, простите, Windows, сильно изменились с того времени, как проект был запущен в конце 1980-х. "Прежде, когда мы начинали, в разработке участвовало 6 человек", - сказал Марк Луковский (Mark Lucovsky), главный инженер и архитектор Windows Server. "Сейчас в группе разработчиков Windows 5000 человек, плюс ещё 5000 человек вспомогательного перснала, которые написали более 50 миллионов строк кода для Windows Server 2003. Правильно организовать их работу, обеспечить совместимость кода - это требует огромных усилий. Процесс сборки результатов их работы, компиляция и связывание в исполняемый код и другие компоненты, которые составляют компакт-диск Windows, занимает от 12 до 13 часов и выполняется каждый день недели. Это самый большой программный проект из когда-либо предпринимавшихся. Не существует программных проектов подобных этому". А Microsoft компилирует всё полностью - более 50 миллионов строк кода - почти каждый день. "Мы совершенствуем среду разработки всё время", - заметил Луковский.
"Когда мы исправляем недостаток, мы компилируем полностью проект", - сказал он. "У нас должна быть возможность воспроизвести систему в любой момент времени. Поэтому разработчики проверяют код, мы нажимаем кнопку, и получаем систему. Мы должны иметь возможность вернуться к этому билду через три года в будущем, используя различные утилиты, компиляторы и скрипты, которые мы использовали в то время".
Дэвид Томпсон (David Thompson), вице-президент группы разработки Windows Server в Microsoft, детально разработал этот процесс. "Ключевая особенность состоит в том, что мы разрабатываем системы, совершенствуя её в трёх аспектах", - сказал он. "Во-первых, сам продукт. Во-вторых, способ разработки продукта. И в-третьих, способ взаимодействия с широким кругом потребителей. Развитие продукта в значительной степени открыто. Исходный код системы управления, которую мы сейчас используем, новый, поскольку мы действительно отказались от предыдущей версии вместе с Windows 2000. Марк Луковский лично возглавил разработку новой системы и внедрил её после 2000-й. Мы начинали с приобретённой технологии. Сейчас мы имеем ступенчатые сборки. Но каждый день эти сборки приближаются к финальной версии. Поэтому мы можем увличивать масштаб и сохранять стабильность - мы знаем, на каком этапе находимся каждый день".
Луковский вспомнил немного о прошлом, когда первые прототипы NT собирались в его офисе, и только единственный человек наблюдал за процессом. Этот человек мог просто отправить письмо по электронной почте команде разработчиков NT когда была готова новая сборка, и тогда 50 человек или около этого могли испытать новинку, тестирую сборку на своих собственных машинах и запуская напряжённые тесты. "Я привык обходить здание и записывать проблемы, которые мы обнаружили", - сказал Луковский. "Так появился прототип NT 3.51. Сейчас у нас 7 сборочных лабораторий. Дэвид Томпсон имеет свою собственную сборочную лабораторию для 1200 человек, которыми он руководит. Основная сборочная лаборатория генерирует официальные сборки, которые распространяются для тысяч человек ежедневно. Уведомления автоматические, и рассылаются на различных этапах использую основные серверы по всему кампусу. Это всё автоматизировано".
"Первоначально, мы проверяли код до определённого времени, пока не закончим", - сказал Томпсон. "После этого мы создавали новую сборку. В конечном счёте, команда выросла до 85 человек, и мы стали выпускать сборки сериями для лучшего управления. [Архитектор NT] Дэйв Катлер, на которого мы все работали, запустил сборочную лабораторию примерно на неделю, и он требовал, чтобы люди лично писали свои запросы на проверку на белой доске в лаборатории. Я тоже сидел там некоторое время. Однажды я получил 85 запросов, о большинстве из которых мы уже знали к этому времени. Сейчас мы можем получить более 1000 запросов ежедневно. Это совершенно другой масштаб. Даже "белая доска" сейчас электронная - основанная на web-технологиях".
"Не существует программных проектов, подобных этому," - сказал Луковский. "Но одна вещь, которая остаётся постоянной в течении нескольких лет - это время сборки Windows. Вне зависимости от поколения системы требуется около 12 часов для компиляции и редактирования связей". Даже с увеличением вычислительной мощности в течение многих лет, Windows растёт примерно теми же темпами, а процесс разработки стал намного более сложным, поэтому Microsoft уделяет большое внимание предварительному анализу кода ежедневных сборок. "Центральные процессоры сборочной лаборатории работают постоянно в течение 12 часов", - сказал он. "Мы изменили процесс, начиная с Windows 2000. Теперь мы распределили исходный код на три независимые ветви, и используем новую среду сборки. Это многомашинная среда, которая позволяет нам устранять недостатки быстрее. Но из-за использования анализа кода этот процесс всё ещё занимает 12 часов".
Как утверждает Томпсон, самодостаточность кода всегда была ключевым требованием команды разработчиков NT, и неотъемлемой составной частью развития Microsoft. "Это один из основных принципов, которым мы следовали", - сказал он. "Когда мы получили систему NT на настольных ПК, наша почтовая программа не работала, поскольку это было DOS-приложение, а к тому времени мы ещё не реализовали режим совместимости с DOS. Поэтому я портировал нашу внутреннюю почтовую программу, WizMail, на платформу Win32, таким образом мы могли использовать только NT-системы."
"Когда ты стараешься использовать систему сам, ты видишь ошибки и недостатки в производительности", - добавил Томпсон. "И ты идёшь и находишь человека, ответственного за эту проблему и просишь его внести исправления". Одной из основных обязанностей Томпсона, когда он входил в команду разработчиков NT, была разработка файлового сервера для NT, так чтобы его можно было использовать как сервер исходного кода. Это требовало веры в конечный результат, особенно когда NT стала использовать прототип файловой системы NTFS. "Группа сетевой разработки проектировала это очень серьёзно", - сказал он. "И обеспечила готовность сервера для внутреннего развёртывания. Однажды начав внедрение, мы никогда не двигались в обратном направлении. Очевидно, если сервер падал, это было катастрофой. Поэтому для нас было очень важно преодолеть этот переломный момент".
Позже, когда разработка Windows NT 4.0 пошла на убыль, команда Томпсона приступила к разработке Active Directory (AD), первой службе каталогов Microsoft, которая была публично представлена на конференции профессиональных разработчиков (PDC) в 1996 году. "До AD у нас были домены NT для нашей инфраструктуры", - сказал он. "И переход на AD был намного более сложным. Мы внедрили AD очень рано, впервые с нашей командой, затем с широкой группой разработчиков Windows. Затем мы перевели на AD кампус в Редмонде в апреле 1999".
Microsoft разворачивала AD в остальной части компании поэтапно, используя тщательное планирование. Кампус перешёл на многоузловую топологию AD Windows Server 2003 в прошлом году. "Для всех серверов инфраструктуры мы всегда проводили развёртывание внутри компании, затем внедряли в JDP (группа партнёров-разработчиков), которые тестировали и развёртывали AD в более чем 250 вариантах использования. Мы получали отчёты об ошибках, пожелания на будущее, и сложные варианты тестирования, которые действительно подвергали продукт испытанию".
Windows Server 2003 был готов на 99.995 процентов в версии Release Candidate 1 (RC1) прошлым летом, и web-сайт Microsoft полностью перешёл на WinServer 2K3, когда вышел RC2 в ноябре 2002 года. "Интенсивное внутреннее использование и узким кругом потребителей очень важно", - сказал Томпсон, - "и мы получаем более достоверное представление о состоянии продукта по сравнению с более ранними версиями. Мы не продаём просто набор битов в коробке, а продаём широкий спектр дополнительных утилит, продуктов, служб и документацию". И Томпсон объяснил, что команды, разрабатывающие Outlook 11, Exchange Server 2003 ("Titanium") и Windows Server 2003, работают вместе для реализации завершённых сквозных сценариев, удовлетворяющих требованиям пользователей. Раньше эти продукты обычно разрабатывались более независимо.
"Поддержка продуктов явно сформировалась за эти годы", - добавил Луковский. "Мы проделываем большую работу, выпуская набор сервис-паков, исправлений, бета-версий и версий для крупномасштабного тестирования для каждого продукта". (Дополнительная информация о направлениях разработки находится в следующем разделе).
"Мы действительно увеличили время, уделяемое на сопровождение наших продуктов", - сказал Томпсон, - "потому что Microsoft продаёт серверные продукты, потребители могут эксплуатировать их до десяти лет. Так называемые коробочные, или серийные, продукты сопровождаются в течение семи лет, но постоянно изменяются способы получения компаниями обновлений и исправлений. Во-первых, Microsoft необходимо убедиться, что ошибка исправлена во всех возможных областях разработки. Наша работа - быстро выпускать исправления в области безопасности. Обычно мы включаем исправления в сервис-паки, которые являются очень гибкими, и могут содержать новые возможности. Однако потребители дают понять, что им необходимы только исправления ошибок в сервис-паках. Возникает интересный вопрос: что такое ошибка? Будет ли недостающая возможность ошибкой? Обычно потребители имеют на это разные точки зрения. Но SP3 для Windows NT 4.0 был последним, включающим новые возможности".
С одной стороны, результат такого сопровождения вынуждает Microsoft содержать тестовые среды для каждого изменения в операционных системах. Это означает, что окончательный, или "золотой", релиз Windows 2000 - это одна ветвь разработки, Windows 2000 SP1 другая, Windows 2000 SP2 третья и так далее. А тестирование всего кода не менее важно при разработке сервис-паков. "В нашей организации мы содержим различные инфраструктуры Windows 2000, чтобы мы могли разворачивать системы Windows 2000 и тестировать их в реальных ситуациях. Это очень дорого, но стоит этого", - сказал Томпсон.
Исправления ошибок (хот-фиксы) можно трактовать как ограниченные релизы, исправляющие одну конкретную ошибку и не изменяющие остальные части системы. Томпсон сказал, что покупатели обычно должны установить хот-фикс только для исправления ошибок, реально их касающихся. Однако исправления ошибок в безопасности образуют совершенно другую группу исправлений. "Мы предполагаем, что все наши потребители будут устанавливать обновления безопасности, поэтому тестируем их с особой тщательностью", - сказал Томпсон, - "Это GDR-релизы, также как и сервис-паки".
Как упоминалось ранее, различные версии Windows требуют ряда разветвлений разрабатываемого кода, когда каждый различный Windows продукт "ответвляется" от основного дерева разработки в течение некоторого времени. Поэтому ни одна из сборок Windows не является последней, как минимум две различные версии Windows - Windows Server 2003 и Longhorn - пишутся в настоящее время. Так как WinServer 2K3 отделилась от Windows XP, этот серверный продукт базируется на XP. Longhorn, клиентская система, которая заменит XP через несколько лет, в действительности независима от серверной ветви разработок, так же как и от XP.

"Средства осуществления этого разнообразны", - сказал Луковский. "У нас есть основная ветвь кода для текущей версии Windows, и эта ветвь становится исходной основой для исправлений и сервис-паков. Однажды мы выпускаем сервис-пак, который становится новой веткой, и теперь у нас есть две ветви, которые нам приходится тестировать для выпуска исправлений и сервис-паков. Мы не можем сказать покупателям, например, установить SP1, а затем выпустить его в виде исправления. И это продолжается для каждой версии Windows, поэтому некоторые устанавливают 2 или 3 сервис-пака, множество исправлений и множество обновлений системы безопасности. Каждое из обновлений является частью набора кода в 50 миллионов строк. Это очень большая расчётная работа".
Кроме того, для каждой основной ветви в активной разработке Microsoft содержит приблизительно 16 команд разработчиков, чтобы позволить разработчикам работать независимо/параллельно над основным направлением разработки. У каждой команды есть собственная сборочная лаборатория, которая позволяет собрать полную версия продукта, в том числе последние изменения, внесённые командой, и периодически встраивать их протестированные изменения назад в основную ветвь, чтобы другие могли видеть их протестированные разработки.
Местом выхода эмоций и обсуждения проекта является "военная" комната, где команды встречаются от двух до трёх раз ежедневно, пять дней в неделю, шесть дней в неделю сейчас, когда проект Windows Server близок к своему завершению. "Команды изучают отчёты, чтобы знать состояние проекта каждый день", - сказал Томпсон. "Всё автоматизировано сейчас, но раньше мы входили в комнату и обменивались бумажными отчётами, которые показывали нам, на каком мы сейчас этапе. Может быть, в комнате было от 15 до 20 человек. Сейчас всё очень изменилось."
При разработке Windows Server 2003 на таких собраниях председательствует Тод Ванке (Todd Wanke), который в конечном счёте славный малый. Однако, во время часового заседания он руководит по принципу железного кулака, спрашивая у доверенных помощников советы, но непременно направляя процесс вперёд, не терпя извинений или, Боже упаси, руководителей команд, которые не пришли на собрание.
Вот как это происходит. Каждое утро в 9:30 представители от различных команд разработчиков Windows Server 2003 встречаются для упорядочения и обсуждения ошибок. Они направляются в конференц-зал 3243, на внешней вывеске которого от руки написано "комната для обсуждений", в здании 26. В центре комнаты находится большой стол для переговоров, но большинству участников приходится стоять, так как комната всегда переполнена людьми. Однажды мы посетили такое собрание (т.е. амер. журналист Paul Thurrott), это был первый раз, когда людям со стороны разрешили посетить внутренний кабинет Windows Server, и только второй раз за всё время разработки NT и Windows. Разработчики обсуждали около 50 вопросов, связанных с торговыми марками, большинство из которых были довольно простыми. Поэтому в статье не будут рассматриваться особенности конкретных ошибок, обсуждавшихся в тот день. (Поскольку журналисты посетили комнату совещаний на окончательной стадии разработки продукта, когда основной темой была смена имени продукта с Windows .NET Server 2003 на Windows Server 2003).
Каждая ошибка регистрировалась в журнале, сопровождаясь исчерпывающей информацией о том, как была найдена эта ошибка, кем из потребителей (если ошибку обнаружили пользователи), и полный список действий, предпринятых для устранения проблемы. Если была найдена одна или несколько ошибок в IIS, например, то представитель команды, разрабатывающей IIS, должен представить не только объяснение проявления ошибки, но и влияет ли она на потребителей, какое влияние исправление ошибки может оказать на другие части системы, и как скоро она будет исправлена. В конце процесса разработки ошибки обычно не существенны, и будут исправлены в следующей версии Windows - Longhorn - если они не критичны.
Атмосфера в комнате совещаний устрашающая, и я (Paul Thurrott) провёл большую часть времени в комнате, безмолвствуя и почти съёживаясь, молясь, чтобы Ванке не обратил своё внимание на меня или мою группу. Пылкие аргументы и даже ругательства звучали в комнате совещаний, и взыскание за не слишком серьёзные ошибки накладывалось очень быстро, звучали жестокие насмешки со стороны других членов команды. Наиболее страшное обращение, естественно, ожидало тех, кто вступал в конфликт на таком собрании. В тот день у одной из групп было четыре недоработки, оставленных на Longhorn, поскольку они не показали их в комнате совещаний. Когда кто-то сказал, что им надо дать ещё один день, Ванке просто сказал: "Если бы это было важно, они бы были здесь. Этот баг в Longhorn. Следующая ошибка".
Когда часовое совещание закончилось, журналисты сели и поговорили с Ванке, который оказался почти другим человеком в частной жизни. "Вы ведёте довольно неприятную встречу", - сказал ему журналист, и они сели. У Ванке за плечами работа в компании NCR (разработчик систем с массовым параллелизмом), компании Honda, и секретный, связанный с безопасностью, контракт с правительством США, и он работает в Microsoft приблизительно восемь лет. Прежде чем стать участником команды разработчиков Windows, Ванке был одним из архитекторов web-сайта Microsoft, и он провёл три или четыре года как Internet-гуру, прежде чем в компании все стали приверженцами Internet-технологий. На встрече Ванке рассказал, как он получил свою новую работу, чем он сейчас занимается в Microsoft, и как проходят встречи представителей команд разработчиков.
"Моя работа управлять повседневной деятельностью с целью продажи Windows", - сказал он. "Я несу ответственность за от 8000 до 10000 разработчиков, программных менеджеров и тестеров, и я должен быть уверен, что каждый день они работают как следует".
Команда представителей разработчиков, сказал он, состоит из очень широкого круга людей из команды Windows, все из которых ответственны за какую-то часть проекта. Это низкоуровневые разработчики, ответственные за такие вещи, как TCP/IP и другие низкоуровневые технологии, другие разработчики, люди, которые осуществляют сборки каждый день, люди, составляющие проверочные тесты и так далее. "От каждой области проекта есть представитель", - сказал он. "Ежедневные указания на дальнейшие действия для разработчиков Windows Server передаются представителями после обсуждения на таких собраниях, а также по электронной почте, которую я рассылаю. Эти почтовые сообщения почти всегда конфиденциальны и рассылаются в пределах Microsoft, более того, сообщения, которые очень конфиденциальны, рассылаются лишь небольшим группам людей".
Как вы видите, комната совещаний - это очень планомерное событие, происходящее в одно и то же время каждый день и продолжающееся ровно один час. Участники команды проверяют ту же самую систему с ошибками каждый день и часто рассматривают одни и те же ошибки, пока они не будут исправлены. "Если вы не присутствуете здесь, это не очень хорошо", - сказал он. "Люди, работающие в Microsoft, имеют право собственности на программный продукт, и они хотят быть уверены, что работа производится как следует. Если некоторых человек нет здесь, я сваливаю всю ответственность на них. Я люблю попинаться".
Кроме утренней встречи в комнате совещаний, команда разработчиков Windows Server встречается после обеда с 2 до 3 и, если требуется, ещё раз с 5 до 6 вечера. Ежедневная сборка обычно начинается в 4:30, но она может быть задержана до 6, поэтому эта последняя встреча даёт команде возможность обсудить некоторые окончательные исправления, которые могут быть добавлены в ежедневную сборку. "Эта структура очень важна", - сказал он, - "и нам необходимо знать, на каком этапе находится сборка каждый день. Мы рассматриваем качество сборки, различные напряжённые нагрузки, все новые возможности сборки, добавленные накануне, всё, что нам ещё следует завершить. Мы получаем подробные отчёты и рассматриваем всё, что входит в проект".
Помимо основной встречи представителей разработчиков, каждая группа проводит свои собственные собрания, поэтому может проводиться до 50 собраний каждый день, на каждом рассматривается конкретный компонент системы. Эти встречи начинаются в 8:00 каждый день. Когда ошибка исправлена, об этом докладывается на совещании Ванке. "Они не приходят в комнату совещаний, пока не исправят ошибки", - сказал Ванке, - "Они должны исправить ошибки". Поскольку решения принимает не один-единственный человек, существует система проверок и сопоставлений, через которую проходит каждое исправление, прежде чем его включат в сборку.
Сложности сборки Windows просто поразительны. "Для упрощения, Windows состоит примерно из 100000 файлов. Обычно существует семь хранилищ исходного кода, каждое содержит точную копию всех исходных кодов, хотя в данный момент их количество сократилось до одного. У каждой группы разработчиков есть своё собственное хранилище, поэтому когда разработчик пишет исправление, он может скомпилировать его в этом хранилище для тестирования. Если сборка компилируется локально с этим исправлением, они могут протестировать его и отправить в основное хранилище главной сборочной лаборатории".
Конечно, не каждая сборка происходит успешно. Иногда Windows Server испытывает то, что в Microsoft называют "фатальная ошибка", когда исправление разрушает другие части системы, приводя её в нерабочее состояние. "Это отвратительно", - сказал Ванке. "Был случай около года назад, когда мы не могли скомпилировать систему в течение семи дней. Нам пришлось отправить электронное письмо исполнительной группе компании, объясняющее возникшую проблему, и компания обнародовала свою закрытую версию продукта Defcon-5. Все были подняты на ноги. Очень важно для разработчиков не прерывать сборки. Они сделали исправление, собрали часть системы и проверили её. Но домой они не пошли. Мы позвонили в 3 часа ночи, когда сборка дала фатальный сбой, нашли разработчика, ответственного за это и вызвали его на работу, чтобы он произвёл исправления немедленно. С разработчиками можно связаться 24 часа в сутки. Это определённо расширяющийся процесс, и сбой в сборке считается критической, самой серьёзной проблемой".
Когда цикл разработки Windows Server 2003 пошёл на спад, количество ошибок стремительно снижалось, и процесс становился проще каждый день. И тогда Microsoft объявила о смене имени. "Нам просто приходилось жить с этим неудачными решением. Они должны были сделать это шесть месяцев назад. В тот момент мы бы все согласились с этим решением. Но на столь позднем этапе... Они попросили Стива Балмера поговорить с командой разработчиков и объяснить причину смены имени. "Сроки, в течение которых команда способна заменить всю графику, содержащую торговые марки, текст, и значения реестра в системе - это проверка динамичности компании во внесении изменений", - сказал Ванке. Задача состояла в том, чтобы внести несколько тысяч изменений, и это могло потребовать исправления нескольких тысяч новых ошибок. "Я пошёл и выбрал трёх лучших разработчиков в команде, и сказал: идите и сделайте это. Один из разработчиков исправил около 7000 ссылок на .NET Server. Есть люди, которым я доверяю, и люди, которым я не доверяю. Я сказал этим парням: не говорите мне, что вы сейчас делаете. Просто сделайте это".
В тот день, когда журналисты собрались в комнате совещаний 21 января 2003 года, Windows Server, по словам Ванке, была с наименьшим количеством ошибок, чем когда либо. "Мы завершаем проект на этой неделе", - сказал он. "Он готов. Мы начинаем продажи". В тот день, система WinServer 2K3 имела всего несколько недоработок, и как минимум четверть, а то и треть, из них просто были связаны с торговыми марками. "Поэтому можно сказать, что существует около 150 требующих внимания вопросов", - сказал Ванке. "Мы исправим около 100. Серьёзность таких ошибок имеет разряд от 1 до 3, кроме того для них установлен разряд очерёдности. Существует несколько ошибок с разрядом значимости 1, и мы должны исправить их перед продажей".
Ванке сказал, что команда разработчиков уже исправила все известные уязвимости в области безопасности. "Мы очень довольны безопасностью системы", - сказал он. "Я лично очень впечатлён проделанной работой. Мы все уверены, что система очень защищена. Прошлый год стал большой вехой в создании заслуживающей доверия компьютерной безопасности, и из-за этого станет проще производить улучшения. Проще для разработчиков, потому что у них одни и те же цели сейчас, те же самые знания об оптимальных методах и приёмах. Обычно используются различные методологии в различных группах. Безопасность даёт толчок к унификации. Сейчас проще для каждого взаимодействовать и видеть конечную цель".
Завершая разработку Windows Server 2003, команда разработчиков вошла в переходный период. Во-первых, продукт войдёт в период испытаний, и сборка версий будет заморожена. Испытательная сборка будет развёрнута по кампусу, включая корпоративную инфраструктуру Microsoft. "Это будет финальная сборка", - заметил Ванке. "Затем мы остановимся на ней в течение некоторого периода времени, когда никакие исправления не будут вноситься в продукт". Финальная сборка также будет выдана тестерам и партнёрам, принимающим участие в отладке.
Если возникнут какие-то проблемы в течение испытательного периода, команда разработчиков примет решения о том, исправлять ли ошибки. Если потребуется исправление ядра, будет создана новая сборка, и процесс испытаний начнётся заново. "Изменения компонентов ядра может повлечь задержку релиза", - сказал Ванке. "Мы запускаем продукт, чтобы узнать мнение покупателей, и нам необходимо несколько дней перед завершением работы над продуктом. Это долгий путь". Каждая команда, работающая над созданием Windows Server 2003, должна эксплуатировать испытательную сборку в течение 21 дня до того, как сборка может быть объявлена окончательной и отправлена на тиражирование.
Но Ванке никогда не беспокоится о точных сроках, так как после нескольких лет работы и так понятно, каков будет итог. Его команда сейчас подготавливает праздник, посвящённый выходу финальной версии - на улице на одном из футбольных полей кампуса в случае благоприятной погоды, в помещении в противном случае, а у Ванке другие заботы, связанные с выпуском продукта, которые он должен решить, включая выпуск продукта на рынок. "Я работаю с командой, чтобы зарегистрировать выпуск продукта на рынок", - сказал он. "Им необходимы даты с точностью 95 процентов". Они также проводят переговоры с OEM-партнёрами, чтобы убедиться в готовности систем к выпуску продукта, с независимыми продавцами программных продуктов, с маркетологами для афиш и рекламы, и так далее. "И я должен быть уверен, что 8000 человек, которые хотят сделать покупку, смогли её сделать", - добавил он.
В конце, все эти усилия приведут к созданию наиболее защищённой и надёжной операционной системы, когда-либо созданной Microsoft, и невозможно переоценить роль Ванке в этом проекте. "Я в основном работал с одной и той же командой в течение полутора лет, с одним выходным, каждый день, шесть дней в неделю к концу проекта. Мы позволяли людям приводить детей по субботам, это семейный день. По субботам не разрешалось ругаться. Но вам всё ещё приходится находиться здесь, а нам всё ещё необходимо производить сборки".
Возглавит ли Ванке команду разработчиков следующих версий Windows?
"Ни за что", - сказал он, смеясь, - "ни за что".