|
Интервью с Robert Norris
Когда вы планируете анонсировать имя вашего проекта?
Прямо здесь и прямо сейчас! Веб-браузер будет носить имя "Traveller" (это английское слово и правописание естественно тоже с двумя «ll»). Прежде всего, я естественно перебрал массу идей и потенциальных названий, но когда все дискуссии были исчерпаны, я остановился на этом названии.
Тут есть три резонных аргумента:
- это хороший компаньон существующему Wanderer.
- просто хорошая традиция продолжает ряд таких названий, связанных с соисканиями, как Navigator, Explorer, Konqueror, Safari и многие другие.
- кроме того, это некий каламбур из имён и фамилий всех членов моей команды, которые трудились, создавая данный проект.
Как вы отреагировали на то, что на вашу просьбу откликнулись сотни людей с предложениями дать имя новому браузеру?
Я даже провёл по этому поводу конференцию и проанализировал сотни названий и идей, так что я доволен своим выбором. Люди высказывали своё мнение на крупнейшем Amiga портале, честно говоря, я не ожидал такой активности, это меня просто поразило, столько внимания к моей скромной персоне?
Вы имели какой-то специальный план по созданию нового Интернет-браузера, или вы просто сконцентрировались над созданием действительно необходимого всем сервиса?
Я разбил свою работу на два этапа. Первый включал в себя портирование WebKit. Это повлекло за собой портирование двух его основных компонентов JavaScriptCore и WebCore. Кроме того, здесь потребовалось написание минимального стартового кода приложений, базирующегося на предоставлении одной тестовой страницы исходному "движку" проекта. Этот этап подразумевал под собой естественное портирование самых разнообразнейших библиотек, являющихся неотъемлемой частью WebKit, что и позволило бы его использование в AROS-среде.
Следующая стадия - интеграция основного ядра и его работоспособность в AROS-среде. Написание новых классов в Zune, дабы обеспечить состыковку с компонентной базой WebKit. Ну и последняя стадия - разработка тела Traveller, которое полностью использовало бы исключительно базу Zune.
Есть ли планы по расширению возможности браузера такими компонентами как метки и закладки?
Пока нет. Мой основной приоритет разработка простого веб-браузера без излишеств, стандартные кнопки управления и всё. Все остальные примочки естественно будут реализованы, но позже.
Я даже не знаю, стоит ли что-либо пока дорабатывать. Основное же сделать так, чтобы именно в твоём браузере людям было интересно работать (я имею ввиду естественно Traveller). Я создаю его не на один день, как и всякий разработчик, я бы хотел создать его на века. Да ещё много чего стоит доработать в AROS, но веб-браузера люди ждут уже сейчас, а люди долго ждать не любят.
Как у вас возникла идея о переносе основного компонента WebKit в качестве ядра веб-браузера под AROS?
Вообще огромная часть моего опыта именно в программировании была посвящена разработке сетевых приложений, так что тут я решил выйти на высокий уровень, и довести дело до ума.
Сетевую работу также много изучал по журналам, специализируемым как раз на работу в сетях. Кроме того, хотелось создать действительно хороший браузер, чтобы отображение сайтов действительно отвечало задумкам и выбору автора.
Оба этих фактора и подтолкнули меня на создание полноценного веб-браузера под AROS. Но тут возникли первые трудности: полное отсутствие среды разработки и необходимой ресурсной базы. Всё приходится писать практически с нуля, тут иного пути нет, если ты хочешь получить хорошую реализацию задуманного. Основной предпосылкой можно считать отсутствие любых браузеров под эту систему.
Поэтому было принято решение найти и воспользоваться уже существующим исходным кодом, идущим с достойным описанием и реализацией. Спустя длительное время, проведённое в поисках, взор пал на реализацию Gecko (открытый движок вывода web-страниц, используемые в ряде браузеров, включая Mozilla Firefox и Netscape). Это был подходящий вариант, но углубившись я понял, что могу создать только что-то подобное и не более (речь о модификациях и быть не могла). Я перебрал множество вариантов, но до реализации изменений так вопрос и не встал. Кроме того, сам автор с каждым днём всё больше и больше склонял меня к использованию нативного Firefox, что делало портирование ещё более сложным процессом.
WebKit это абсолютно новый проект (включающий в себя основы KJS и KHTML, являющийся компонентной базой для KDE Konqueror), что значительно облегчало работу, хотя естественно Apple их не довёл до ума. Они также основывались на открытом исходном коде, просто приложили немного усилий, дабы всё это стало ещё меньше по размеру, быстрым и естественно максимально портируемым. Это меня и купило. Я увидел, что WebKit это нечто иное, как исходный код проекта Safari, столь популярного в OS X (а позднее и в Windows), естественно всё это со временем перекочевало на мобильный рынок, ярым примером в этой сфере можно выделить Nokia. Уже немного позже это было подхвачено iPhone, где применяются те же принципы, да и выглядит ни сколько не хуже. Кстати последнее заявление Google о запуске в производство телефонов Android, тоже идёт с применением технологий WebKit.
Вот почему выбор пал именно на него. Простота портирования ведёт за собой полноценную поддержку и взаимопонимание обеих сторон, выбор был сделан.
WebKit уже портирован под AROS, чего же не хватает веб-браузеру на сегодняшний день для полноценного использования? Может каких-то спецификаций, да и вообще в чём принципиальное отличие между непосредственно ядром веб-браузера и самим искомым?
Во-первых, WebKit ещё не портирован в полной мере, я только работаю над этим проектом. Уже работоспособен Javascript, но до полноценного ядра ещё довольно далеко, работы невпроворот.
А самый лучший путь анализа ядра - это просмотр уже конечного продукта. Реализация всех столь необходимых функций, таких как контекстное меню, вперёд\назад\домашняя страница, банк ввода адреса, строка статуса и так далее, всё это ещё будет требовать доработок. WebKit (или Gecko) очень легко модернизируются. Так что конечным заданием естественно будет реализация, а точнее интеграция самого исходного кода ядра обработки веб-страниц в операционную среду, по подобию проекта "chrome".
Но для этого естественно будет необходимо реализовать весь WebKit в рамках веб-браузера, вот тогда мы сможем действительно заговорить о реализации Traveller.
Это выглядит намного легче, нежели писать всё самому с нуля?
Абсолютно так. Надо просто взять WebKit и реализовать его на AROS-библиотеках, но это к сожалению легче сказать чем сделать, это вообще может вылезти тем, что придётся всё разрабатывать почти с самого начала.
Как мне кажется, мы бы могли уже пользоваться FireFox под AROS, имея реализацию WebKit. Но FireFox же не использует код WebKit, он написан на ядре Gecko. Хотя веб-браузер Safari (Mac) построен на WebKit. Вы согласны со мной? Что вы скажете по этому поводу?
Вы полностью правы. Firefox не основан на WebKit, и порт никак не подвинет нас на использование Firefox (хотя это и дало бы повод к разработке новых вспомогательных библиотек, а также к доработке компилятора, тогда можно было бы говорить о порте Firefox, но только потенциально).
А вообще, если быть честным, то я не вижу особой надобности в использовании Firefox на AROS. Так же как и портировать Gecko (это бы никак не приблизило нас к поставленной цели), к тому же Firefox система полностью чуждая приложениям AROS.
Как вы думаете, этот новый AROS веб-браузер будет совместим с прочими веб-браузерами под AmigaOS и MorphOS. Так например, Sputnik базирующийся на KHTML, уже написан под MorphOS. А IBrowse и AWeb доступны для всех систем.
Я никогда не пользовался вышеперечисленными веб-браузерами, только читал о них, ну и видел картинки, хотя возможно это будет довольно смелое заявление, но Traveller будет намного привлекательней.
IBrowse и AWeb выглядят очень функционально при работе с малыми скоростями передачи, то есть при модемных соединений. Может я делаю поспешные выводы, но мне кажется, что они будут не способны управлять большими Javascript приложениями (тут стоит упомянуть небезызвестный Gmail).
Что касается Sputnik, то он в действительности базируется на S60 WebKit, Nokia применяет в мобильных решениях. В отличие от них Traveller основывается на новом исходнике, усовершенствованном WebKit, а не на его первоначальной версии, что сделает работу намного быстрее.
С какими сложностями вы столкнулись так сказать лицом к лицу при создании проекта?
Тут образовались две основные стороны, которые ещё требуют доработки, процесс продолжается.
Первая проблема - это можно сказать глюк в самой структуре AROS. Для примера, портирую JavaScriptCore, который требует системного вызова posix_memalign(), который постоянно захватывает память по-разному, но всё время не так как надо. AROS просто этого не понимает, поэтому мне пришлось проследить всю цепочку вызовов и обращений AROS в память до того как делать саму реализацию, пришлось его исправлять. JavaScriptCore так же требует для себя некоторые функции системы, напрямую связанные с математическими библиотеками, которые просто отсутствуют, решение этой проблемы я нашёл в исходниках (FreeBSD). Правда эта процедура заняла у меня практически неделю времени, и ещё неделю на доработку. Я не брал существующие сетевые библиотеки за основу, так как полной интеграции в ядро всё равно бы не вышло. Вот вам и ещё большой кусок работы.
Приходилось крутиться, то и дело перебирая разные части кода, но к счастью AROS гибкая система.
Ещё одна проблема это портирование WebCore, который занимался именно я. Это также вызвало целый ряд казусов при состыковке с AROS, так как практически каждую часть приходилось перебирать вручную, особенно такие структуры, как вывод на экран, опрос, прорисовка шрифтов и изображений, и многое-многое другое. Я знаю основу структуры со стороны AROS, но не всё, вот и приходилось по ходу учить всё остальное. Также стоит упомянуть, что сам процесс внедрения WebCore с минимальными функциональными преобразованиями – около 70 файлов. Я естественно не заглядывал внутрь каждого, но я знаю, что всё ещё впереди и это будет не так легко, хотя если потребуется пересмотреть каждый для корректной работы в AROS я обязательно это сделаю, заодно лишний раз подучу C++.
Знания, которые я тут получил, просто бесценны, так как я учусь в процессе работы над любимым делом. Поэтому особых проблем не вижу, просто займёт ещё немного времени.
Я читал ваш блог относительно реализации ядра JavaScriptCore в WebKit. Проделывали ли вы какие-то дополнительные действия при создании поддержки JavaScript когда портировали проект? Использовали ли вы при этом компилятор gcc, или всё делалось вручную?
JavaScriptCore это ни что иное, как Javascript интерпретатор. Он осуществляет запуск кода Javascript, при этом не требует дополнительных компиляций Javascript, всё это написано на C++.
Сам процесс портирования показался мне довольно интересным. Во-первых, мне естественно понадобился компилятор. WebKit компилируется с помощью GCC v4. Нам пришлось немного доработать GCC, дабы продукт был работоспособен в AROS-среде. Последняя версия C++ полностью поддерживает в GCC v3, а патч для v4 был только с работоспособным C (C++ не было). Поэтому мне пришлось взять свежий GCC v4.2.2, и заставить работать C++.
Теперь я имел компилятор. Модифицировав WebKit, я проделал кое-какую работу над его запуском. При этом каждый шаг пришлось прокручивать по нескольку раз, чтобы добиться работоспособности. Каждое вложение требовало некой корректировки в коде WebKit, ну и в AROS кое-что изменялось, например, математические библиотеки.
Наконец, компиляция закончена, и мы перешли к процессу тестирования JavaScriptCore. Тут мы уже подсовывали самые разные Javascript исходники, чтобы протестировать результат
Тесты не выявили, каких-либо больших проблем, но некоторые мелкие детали пришлось таки доработать. Огромное спасибо за это людям, помогавшим мне на IRC-канале #webkit, они также меня научили разным премудростям и решениям проблем.
Это кстати было интереснее любого процесса портирования, создания библиотек и приложений под них. Изучая строение системы я узнал много нового относительно особенностей компиляции под AROS, как и где применяется специфический код, а также отчего возникли некоторые глюки, и пути их решения.
Это действительно грандиозный проект! Я очень рад за вас! Буду счастлив, если пользователи оценят его по достоинству, и ваша работа не пропадёт даром. Я верю в это!
Большое спасибо! Я тоже в это верю! Хочу вас поблагодарить за интересные вопросы, которые действительно помогли мне понять, что наша работа проделана не зря. Ещё раз огромное спасибо. :)
Перевод -= / amif1team / =- © 12/2007
|
|
|