Breach - новий модульний браузер, написаний на Javascript

  1. Коротко про Breach для тих, кому ліньки читати далі
  2. Трішки історії
  3. архітектура ExoBrowser
  4. Може бути вже пора запустити Breach?
  5. Кілька коментарів від розробника
  6. Що в підсумку?

В історії проекту Chromium не так вже й багато подій, які б були гідні особливої ​​уваги з боку аудиторії. Запуск проекту, форк движка Webkit, поява перших дійсно самодостатніх браузерів на його основі ( яндекс.браузер , Opera , Sleipnir , ...), перший досвід використання Хрома не в браузері . У липні такою подією став запуск нового браузера Breach, настільки радикально відрізняється від звичайних (і навіть незвичайних) збірок, що особисто я довго не міг сформулювати свою думку на його рахунок. На щастя, сьогодні, нарешті, розповім вам про Breach і поділюся тією інформацією, що дізнався в результаті особистого досвіду і листування з творцем браузера.

не в браузері

Коротко про Breach для тих, кому ліньки читати далі

Breach - це браузер з відкритим вихідним кодом, який має модульну структуру і побудований на базі Chromium, але від останнього він використовує лише самий фундамент, який відповідає за рендеринг сторінок. Весь інтерфейс і вся функціональність тут пишуться на HTML і Javascript.

Трішки історії

У першій половині минулого року одному, по всій видимості, дуже талановитому розробнику з Сан-Франциско (звуть його, до речі, Stanislas Polu ) Прийшла в голову ідея переглянути стан справ в сучасному браузеростроеніі. А все починалося з звичайних побутових проблем при роботі в браузері. Станіслас дуже активно використовував вкладки в своєму браузері, відкривав їх десятками, заповнював ними все вікно, а потім болісно і довго шукав потрібну вкладку. Чому не можна було спростити пошук вже відкритої вкладки?

Було ще дещо, подразнюючу Станісласа в сучасних браузерах. А саме неможливість перенести повну копію поточного стану браузера, включаючи сесії і куки, на інший комп'ютер, що не належить тобі. Звичайна синхронізація Google Chrome в цьому плані його абсолютно не влаштовувала (думаю, ми всі погодимося, що поточна синхронізація в будь-якому браузері працює досить фрагментарно, щось синхронізуючи, щось ні).

Накопичивши обурення, було вирішено спробувати створити свій новий браузер, який би мав відкритий вихідний код, був досить легкий в експлуатації, але при цьому мав модульну структуру, що дозволяє будь-якому зібрати саме той браузер, який він вважає ідеальним.

І ось з цього і народився експериментальний проект ExoBrowser, який представляє з себе платформу браузера Breach. Основна робота над ним розпочалася в серпні 2013 року. Причому спочатку Станіслас був єдиним розробником цього проекту. І тільки згодом до нього стали приєднуватися сторонні фахівці.

архітектура ExoBrowser

Думаю, багато хто з вас вже розуміють, чому в якості движка був обраний саме Blink. Свій движок для рендеринга вже навіть компанії не пишуть в поодинці через надзвичайно складних цієї справи. А з існуючих цілком логічно вибрати найбільш популярний і швидко розвивається. А де Blink, там і Chromium, як єдина вільна і не менш швидко розвивається основа.

Але тут, як це зазвичай буває, прекрасна ідея зустрілася з нещадною реальністю і поставила розробника перед фактом: поодинці і своїми силами він ніколи не збере свій браузер, використовуючи Chromium. Одна тільки папка chrome / в цьому проекті містить понад 5 тис. Файлів, а це вже майже півтора мільйона рядків коду на C ++. Один розробник просто не зможе розібратися у всьому цьому, підтримувати сумісність кожної нової версії зі своїми правками.

Навіть якщо викинути на смітник абсолютно всі можливості, весь інтерфейс браузера, залишивши лише движок і Chromium Content API (внутрішнє API, яке і відповідає за зв'язок браузера з двигуном для відображення веб-контенту), то перш ніж у вас вийде відтворити необхідний мінімум, буде потрібно написати десятки тисяч рядків коду під кожну платформу. А це складно і довго. Нагадаю, що у нас один розробник з нульовим бюджетом.

Веб-технології (HTML / JS / CSS) не ідеальні і мають свої недоліки, але вони прекрасно підходять для швидкого прототипування і експериментів. Тим більше, що при розробці браузера у нас в розпорядженні вже є движок для роботи з ними. Так чому б не написати всі функції і інтерфейс на javascript? І щоб все це запрацювало, досить було написати лише невеликий прошарок на C ++, яка становить менше 6 тис. Рядків. Плюс інтегрувати Node.JS, який і дозволив створити інтерфейс на HTML. І результат виявився більш-менш простим для підтримки одним розробником.

І результат виявився більш-менш простим для підтримки одним розробником

Може бути вже пора запустити Breach?

Найжахливіше для більшості з тих, хто прочитає цю статтю, в тому, що спробувати Breach можна тільки на OS X і Linux. Так що користувачам Windows поки доведеться зачекати, подивитися на наші скріншоти і відео.

Ніщо так не розкриває перед нами модульну сутність браузера, як його перший запуск. Раптом з'ясовується, що голий Breach неможливо використовувати і потрібно встановити хоча б модуль, який відповідає за універсальне вікно пошуку і вкладки. На щастя, цей модуль (mod_strip) можна встановити в один клік і, якщо нічого не відвалиться, почати користуватися браузером.

На щастя, цей модуль (mod_strip) можна встановити в один клік і, якщо нічого не відвалиться, почати користуватися браузером

Насправді, про всі можливості браузера ви можете дізнатися, просто глянувши на найперший скріншот в цій статті. Просто вікно, вкладки, універсальне вікно пошуку та рудимент у вигляді DevTools, який якимось дивом сюди потрапив з Chromium. Налаштувань, так само як і всіх представлених в налаштуваннях Хрома функцій, тут немає. Навіть на новій вкладці ви побачите лише список встановлених модулів.

Навіть на новій вкладці ви побачите лише список встановлених модулів

Крім очевидних функцій (синхронізація, закладки, історія, менеджер завантажень, ...) браузер Breach на даний момент позбавлений підтримки і багатьох API для веб-сторінок, на зразок геолокації, повідомлень і хто знає чого ще ...

Ось вам відео, в якому можна побачити основні можливості браузера, хоча всі вони, на самій-то справі, підключені саме модулем mod_strip.

Сам браузер ще в стані альфи, тобто все настільки нестабільно, що можна навіть і не озвучувати знайдені помилки. Модулі періодично підвисають або частково перестають працювати.

Модульність в Breach відкриває перед розробниками унікальну можливість створити браузер під себе. Не подобаються вкладки? Перепишіть. Потрібні закладки? Блокнот вам в руки. Потрібні лише знання HTML / JS і трохи часу, щоб розібратися c API. Хоча на даний момент цих самих модулів ще не так вже й багато, та й в масі своїй вони лише замінюють нову вкладку.

Кілька коментарів від розробника

Вирішив поставити Станіслас кілька питань про браузері Breach. Наведемо нижче наш вільний переклад його відповідей.

1. Наскільки складно підтримувати нові версії Chromium, особливо коли є зміни в Content API?

Трохи болісно, ​​але в цілому ОК. Зазвичай це займає 3-4 години в залежності від змін. Це не найбільш трудомістка частина.

2. Чи плануєш ти оновлювати Breach так само, як і Хром, тобто раз в 6 тижнів?

Так, ми постараємося не відставати і оновлюватися якомога швидше.

3. Чи плануєте відправляти свої зміни в Chromium?

На даний момент немає. У нас занадто маленька команда для цього. Але якщо з'являться можливості, то будемо раді.

4. Ти писав, що в браузері найголовніше це контент, вкладки та універсальне вікно пошуку. А що щодо всього іншого?

Для всього іншого є модулі.

5. Коли вийде версія для Windows?

Для цього нам потрібно перейти на Aura замість GTK +, а також дочекатися, коли команда Chromium закінчить роботу над OOPI.

6. Основні проблема і фронт робіт над Breach?

Перехід на OOPI / <exo_frame>

Повноцінна підтримка: Basic auth, HTML5 Permissions, URL Request header injection, ...

Потрібно навчити модулі взаємодіяти разом. Зараз же, наприклад, якщо модуль додає закладки, то він повинен якимось чином примудритися додати кнопку на закладки в ту частину браузера, за яку відповідає вже інший модуль.

Створити новий досвід роботи з браузерами. Заново винайти вкладки, так щоб з ними стало зручніше працювати і при цьому використовувалася ваша історія. Вирішити проблему з перенесенням повної копії поточного стану між комп'ютерами.

Що в підсумку?

Перед нами рання альфа-версія браузера, який однозначно припаде до смаку гікам, які віддають перевагу пересобрать і переписати все під себе. У найближчі N років Breach навряд чи отримає хоча б більшу частину тих можливостей, що є у сучасних браузерів, але вони і не женуться за цим. Якщо у Станісласа і команди вийде створити мінімалістичний, красивий і зручний браузер, то це вже буде перемога, незалежно від того, якими користуються відвідувачі будемо ним користуватися. Як ніяк, це перший браузер-конструктор, який одним своїм існуванням демонструє можливості веб-додатків.

А що скажете ви?

Офіційний сайт Breach

today 02.08.2014

Чому не можна було спростити пошук вже відкритої вкладки?
Так чому б не написати всі функції і інтерфейс на javascript?
Може бути вже пора запустити Breach?
Не подобаються вкладки?
Потрібні закладки?
1. Наскільки складно підтримувати нові версії Chromium, особливо коли є зміни в Content API?
2. Чи плануєш ти оновлювати Breach так само, як і Хром, тобто раз в 6 тижнів?
3. Чи плануєте відправляти свої зміни в Chromium?
А що щодо всього іншого?
5. Коли вийде версія для Windows?