Лаборатория Mozilla представила проект Chromeless


Лаборатория Mozilla представила проект Chromeless, нацеленный на упрощение разработки альтернативных пользовательских интерфейсов для web-браузера. Chromeless представляет собой лишь основной костяк надстроек над браузерным движком Gecko, лишенный подсистемы "сhrome" (не путать с браузером Chrome), ответственной за формирование пользовательской оболочки для вывода web-страницы на экран (набор XUL-виджетов в Firefox). Вместо пользовательского интерфейса в Chromeless представлен специальный API для быстрого создания собственных интерфейсов, используя стандартные web-технологии - HTML, CSS и JavaScript.

По задумке разработчиков технология XUL достаточно сложна и требует дополнительного изучения многих технологий, что замедляет подключение новых разработчиков к развитию браузера. Построив интерфейс на базе всем известных web-технологий, круг лиц способных начать эксперименты по улучшению интерфейса существенно расширяется и снижается порог вхождения разработчика в проект. В итоге, представители Mozilla надеются, что благодаря своей простоте Chromeless будет способствовать апробированию новых концепций построения интерфейса, создать макет которого теперь можно сосредоточив усилия на развитии творческой мысли, без углубления в тонкости XUL.

Цель проекта именно создание макетов и эксперименты, удачные идеи из которых впоследствии могут быть перенесены в базовый интерфейс Firefox, в котором пока не планируется уходить от использования XUL. В настоящий момент проект находится на стадии создания начального прототипа фреймворка, способного загружать HTML-страницы и формировать пользовательский интерфейс.

Прототип базируется на комбинации XULRunner с Jetpack SDK. Вместо загрузки XUL осуществляется запуск HTML-файла, которому предоставляются дополнительные привилегии, такие как доступ к модулю CommonJS из состава платформы Jetpack (пример кода для создания интерфейса на базе табов, изображенного на скриншоте). CommonJS позволяет добраться до элементов в самом верху DOM-дерева, устанавливать обработчики для специфичных для операционной системы меню или обращаться к функциям системы нотификации. В ближайшие месяцы будет подготовлен специальный API для создания более содержательных браузерных конструкций, будет обеспечен режим изоляции подсистем обработки web-контента и прорисовки интерфейса.