Мы должны сказать спасибо KDE за современный веб

в 8:57, , рубрики: chromium, Google Chrome, javascript, kde, khtml, konqueror, safari, webkit

Мне всегда нравилась История. История дает понять мотивацию и причины произошедших событий, она срывает покровы, обличая случайные успехи и спланированные крахи. Сегодня я попытаюсь проследить одну ветвь эволюции браузерных движков и показать — насколько велика связь в мире открытых технологий.

ПРИМЕЧАНИЕ: Ссылки в тексте на информацию о названиях и аббревиатурах, употребленных в статье, ведут в основном на русскоязычные страницы сайта Wikipedia, а не оригинальные сайты проектов, чтобы русскоговорящему читателю было проще понять контекст, если данное именование ему незнакомо. Внизу приведены ссылки на оригинальные ресурсы.

От CDE к KDE

Linux появился в нужном месте в нужное время, пока участники проекта GNU пытались спроектировать идеальное ядро для своей операционной системы, простой финский студент сделал как умел, и, сам того не ожидая, перетащил одеяло на себя.

Тогда были XFree86 и twm, и, по существу, все. CDE (для коммерческих Unix) появился лишь в 1993 году. В свободном же мире GNU/Linux балом правили оконные менеджеры, а рабочее окружение каждый собирал сам для себя по кусочкам. Появление закрытого Common Desktop Environment не давало покоя энтузиастам, и в 1996 году, Маттиас Эттрих основывает проект KDE. История и цели самого проекта, а также его влияние на возникновение GNOME - тема для отдельной статьи. Нас же интересует появление в составе KDE в том же 1996 году комбайна под названием Konqueror, который использовался не только в качестве браузера на движке khtmlw, но и как файловый менеджер (те, кто пользовался KDE до появления Dolphin помнят эту боль). Почему нельзя было просто взять Gecko, а не изобретать велосипед? Ответ прост — разработка Gecko началась лишь в 1997.

KHTML/KJS

В ранних версиях Konqueror использовался khtmlw (KDE HTML Widget), ко второй половине 1998 года, в связи с переходом на Qt2, движок попытались освежить и произвести рефакторинг, тогда еще не было поддержи DOM и JavaScript в KHTML. Однако уже в марте 1999 года Ларс Кнолл заявил, что завершил проверку почти полностью переписанной библиотеки KHTML, поддерживающей стандарты w3c. Такие кардинальные изменения позволили Гарри Портену внедрить поддержку JavaScript уже через несколько месяцев (KJS). Спустя год — в марте 2000, благодаря совместной работе Ларса, Антти Койвисто и Дирка Мюллера в HTML появилась поддержка CSS, что сделало KHTML полноценным веб-движком наряду с Gecko и Trident тех лет. Так как KHTML должен был выполнять дополнительные задачи в составе KDE, он обзавелся возможностью запускать полноценные веб-приложения, а не только веб-документы. В данном аспекте, пожалуй, его стоит сравнить со сладкой парочкой Trident и ActiveX.

Safari и WebKit

Из письма Дона Мелтона от 7 января 2003, отправленного Дирку Мюллеру.

Здравствуйте,

Я — технический менеджер Safari, нового веб-браузера Apple Computer, основанного на KHTML и KJS. Я отправляю вам это электронное письмо, чтобы поблагодарить вас за создание такого замечательного проекта с открытым исходным кодом и представить себя и свою команду разработчиков. Я также хочу объяснить, почему и как мы использовали вашу превосходную технологию. Важно, чтобы вы знали, что мы стремимся к открытому исходному коду и вносим свои изменения сейчас и в будущем, обратно к вам, первоначальным разработчикам. Надеюсь, это положит начало диалогу между нами на благо обоих наших проектов.

В письме Дон рассказывает о том, что над Safari работали люди, принявшие участие в создании проекта Mozilla и браузера Chimera (он же Camino). Выбор пал именно на KHTML и KJS в том числе из-за того, что в сумме эти два проекта, имеющие понятную архитектуру, содержали менее 140 000 строк кода. В кратце Дон описывает изменения: багфиксы, некоторое количество улучшений и оптимизаций, а также создание прослойки совместимости KWQ (читается как "кварк"), которая служила для работы KHTML вне библиотек Qt и KDE.

Итоговый код проекта был опубликован под свободной лицензией, KHTML был переименован в WebCore, а KJS — в JavaScriptCore, новый проект получил имя WebKit.

К сожалению, обратного слияния с KHTML/KJS не последовало. Такие попытки изначально предпринимались с обеих сторон, но они провалились. Виной всему стала политика Apple, которая не была заинтересована в поддержке сообщества. Код WebKit существенно отличался от KHTML/KJS, стили были изменены согласно внутренним требованиям к оформлению кода компании, что ликвидировало возможность автоматического слияния изменений. Также руководство Apple давило на разработчиков Safari с тем, чтобы подготавливать новые фичи к следующим релизам, и не выделяло время на работу с командой KDE. Тем не менее, часть изменений все же попала в KHTML, а разработчики Safari в свободное от работы время содействали развитию материнского проекта.

WebKit-based browser by Google

Google наняла нескольких бывших сотрудников Mozilla, которые на основе WebKit и создали проект Chromium, результатом которого стала первая версия Chrome. 2 сентября 2008 года вышла первая публичная бета для Windows. Под капотом трудился WebCore, а вот JavaScriptCore в состав нового браузера не вошел, его место занял разработанный самостоятельно JavaScript-движок V8, ставку на производительность которого и делала Google.

Blink

К 2013 году, по словам представителей Google, количество патчей, которые им приходилось накладывать на WebCore для поддержки совместимости с актуальной версией V8, превысило критическую массу, и было решено сделать официальный форк, получивший имя Blink в честь тега blink, создающего эффект мерцация текста. Впрочем, в сети бытует и альтернативное мнение, мол, Google пожелала уйти в отрыв от конкурента в лице Apple, лишив их своих новых наработок. Так или иначе, истинные причины, скорее всего, навсегда останутся за закрытыми дверями алфавитных офисов.

Забавный факт: поддержка тега blink была упразднена всеми актуальными на тот момент браузерами как раз в 2013 году, а сам Blink и вовсе никогда не поддерживал данный тег.

Заключение

На сегодняшний день разработка KHTML остановлена, в репозитории наблюдаются лишь коммиты, реализующие поддержку современных версий KDE Frameworks. Последняя активность, связанная с улучшением кода, в репозитории KJS датируется июнем 2020 года. Актуальная версия Konqueror поддерживает этот движок, но по умолчанию использует WebKit. Safari сохраняет свою нишу на устройствах Apple. Google Chrome почти полностью захватил рынок настольных и мобильных (Android-) браузеров и уже начинает использовать свое монопольное положение. Такие компании как Microsoft и Opera отказались от разработки своих движков в пользу Chromium. Mozilla Firefox потерял существенную часть рынка и продолжает падение. Несмотря на плачевное состояние разработки собственного браузерного движка проекта KDE, он смог доказать, что небольшая команда увлеченных энтузиастов может создать решение, способное стать отправной точкой глобального изменения мира, сегодня уже не представляющего жизнь без веб-технологий. Кто-то может возразить, что инженеры Apple, не будь в доступе KHTML/KJS могли взять что-то другое или написать с нуля, и будет прав, но история не терпит сослагательного наклонения.

Ссылки
Источники

Автор:
Devoter

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js