В целом у нашей стратегии было несколько весомых преимуществ. Мы были уверены в том, что можем использовать Konqueror, не нарушая каких-либо положений любой лицензии свободного ПО. Добавление FIXME создавало базу для поиска ошибок после того, как мы скомпилируем программное обеспечение. Первый этап — сборка — не вызывал особых затруднений: нужно уничтожить все ошибки компиляции, вызванные нарушенными перекрестными ссылками. 120 000 строк кода Konqueror были распределены по 300 файлам исходного кода, и мы прикинули, что компиляция каждого файла займет больше месяца, но меньше двух.
В тот момент это звучало неплохо, но мы оказались не готовы к тому, какой утомительной окажется работа по компиляции. Вот как проходили мои дни на этом этапе проекта. Я пытался скомпилировать файл исходного кода Konqueror, у меня ничего не получалось, и сообщение компилятора об ошибке докладывало мне об отсутствующей перекрестной ссылке, о чем-то, что разрушила наша схема с вырванными страницами. Я исправлял проблему и пытался скомпилировать снова. Еще одно сообщение об ошибке. Еще одно исправление. И снова. И снова. Это все продолжалось и продолжалось. Смотрю на экран компьютера в своем кабинете. Компилирую, читаю сообщение об ошибке и разбираюсь с ним. Я уже чувствовал себя героем экзистенциалистской пьесы, приговоренным к без конца повторяющейся беседе с компилятором.
АКТ I. СЦЕНА XXXVI.
Кампус компании Apple Infinite Loop, Купертино. Кабинет Кена.
КОМПИЛЯТОР:
КЕН: Вот тебе, компилятор! Я определил «протокол». Пожалуйста, попробуй еще раз!
КОМПИЛЯТОР:
КЕН: Надо же, я забыл определить идентификатор «хост»! Ну вот он! Попробуем еще раз.
КОМПИЛЯТОР:
Дон и Ричард выдерживали это тяжкое испытание сборки вместе со мной, и во время обеда и перерывов мы сочувствовали друг другу по поводу того, какую скуку навевала эта работа. Мы не могли переложить ее на младших программистов или практикантов. Apple так не работает. Во-первых, проект был секретным, а во-вторых, что куда важнее, Apple не отделяет исследование и разработку от реализации программного обеспечения. Мы были ответственны и за все идеи для нашего браузера, и за написание кода, с которым этот браузер будет поставляться пользователям.
Отдохнуть возможности не было. Мы просто продолжали работу. Как бы то ни было, каждый час монотонного труда был вкладом в портирование, и каждый файл, который мы обрабатывали, позволял лучше изучить используемый нами исходный код. День за днем, неделю за неделей мы медленно продвигались по списку файлов, которые надо было скомпилировать.