В тот день, когда нас с Доном взяли в Apple, нашей работой стала подготовка этой замены. Перед нами стояли две взаимосвязанные задачи. Во-первых, сделать приложение браузера. Во-вторых, создать пакет инструментов для разработки веб-приложений, с помощью которого сторонние разработчики ПО для Apple могли бы легко включать в свой софт различные функции: от загрузки текстов и изображений до отображения целых веб-страниц. Обо всем этом легче рассказать, чем сделать, хотя людям, зависающим в интернете, браузеры кажутся чем-то простым.
С точки зрения программиста, веб-браузеры чертовски сложны. Поскольку ранее я с ними никогда не работал, Дон устроил для меня небольшой курс молодого бойца, чтобы я мог поддерживать заданную скорость.
Когда мы в семь часов утра встречались в кафе в кампусе, чтобы выпить кофе, мы «пробегались» по основным подсистемам веб-браузера: контент (текст и графика), стили (шрифты, цвета и положение) и скрипты (динамическое поведение, например проверка формы до того, как вы запустите ее). Дон рассказывал о длинном списке аббревиатур существующих стандартов, описывающих соответствующие технические элементы: гипертекстовый высокоуровневый язык разметки (Hypertext Markup Language, HTML), каскадные таблицы стилей (Cascading Style Sheets, CSS) и язык программирования JavaScript. Также он рассказывал, как эти отдельные части программного обеспечения сочетаются друг с другом, чтобы получались сложные веб-страницы.
Пока я слушал и учился, мне начинало казаться, что создание браузера — это задание, которое не по зубам двум людям, особенно после того, как Дон упомянул большие команды, которые работали в Netscape. Без сомнения, то же самое было и в Microsoft. А мы были командой из двух человек. Как мы могли с ними тягаться?
Дон велел мне не беспокоиться. У него наготове был один трюк. Мы не станем начинать с чистого листа, как это приходилось делать таким первопроходцам, как Netscape. Благодаря движению за свободное программное обеспечение и войне браузеров Netscape опубликовала исходный код для Mozilla. Это означало, что мы с Доном можем воспользоваться открытыми исходниками. Мы можем загрузить и оценить ПО на любом уровне, на каком только пожелаем, и лицензия Mozilla означала, что мы сможем взять этот код для нашего проекта.
Также в интернете были доступны и еще несколько браузеров с открытым кодом, и мы включили исследование этих проектов в список того, что предстояло сделать. Кроме того, имелось и несколько коммерческих вариантов. Но, несмотря на эти планы предварительного исследования, Mozilla на тот момент была нашим главным кандидатом, в основном потому, что Дону уже приходилось работать с этим кодом. Он был полностью уверен в том, что мы сможем использовать по максимуму работу, проделанную большими командами Netscape. Тем не менее, чем больше мы говорили, тем яснее я понимал, что у Дона с Mozilla сложились противоречивые отношения. Положительной стороной было то, что Mozilla представлял собой огромный вклад в веб-технологии, поэтому мы могли использовать код, чтобы Apple не пришлось заново изобретать колесо. Но обратной стороной медали оказалось то, что с исходниками было трудно работать, потому что база данных была огромной, во много раз больше, чем то, с чем нам с Доном приходилось иметь дело в Eazel. Принимая во внимание вводные технические лекции Дона, я понял, что создание веб-браузера — это огромный программистский проект, и мне нужно понимать весь этот новый код.
В самом деле, когда я скачал Mozilla из интернета, моим первым впечатлением от исходного кода были его размеры — около полутора миллионов строк. Я никогда раньше не участвовал в проекте, который составлял хотя бы четверть от этого количества. Если код Mozilla распечатать по тридцать строк на страницу, он составил бы пятьдесят тысяч страниц. Только представьте, что вам предстоит прочитать такую пачку книг, а затем сдать экзамен, где могут спросить про любую произвольно выбранную строку.