Всем привет! Разработка программного обеспечения — это сегодня само по себе дело сложное в связи с обилием всевозможных языков программирования, операционных систем, платформ, устройств и прочих факторов. Но, пожалуй, создание браузера — это одна из наиболее трудных задач, требующих особого внимания: всё-таки, браузер — это на сегодняшний день главное приложение, с которым работает ежедневно каждый пользователь Интернета. А учитывая, что контент сегодня представлен в столь сложном динамическом виде, что и не снился разработчикам первых браузеров, при этом принципы работы с этим контентом переросли из «посмотреть — почитать» в полноценную работу с приложениями, задача оказывается совсем не тривиальной. В общем, вывод напрашивается один: браузеры сегодня становятся всё сложнее и, как следствие, в процессе разработки в код проникает всё больше ошибок. Как с этим можно бороться? Как с этим боремся мы в Vivaldi? Вот об этом вкратце и поговорим.
Итак, начну с главного. Из чего состоит процесс разработки? Он состоит из нескольких важных этапов, включающих собственно написание кода, тестирование и выпуск публичной версии. Так это работает, например, если вы пишете программу уровня «Hello, world!». Впрочем, на самом деле при разработке браузера это работает точно так же, просто на чуть более сложном уровне, включающем несколько релизов разной степени готовности и несколько «фильтров» отлова ошибок. в нашей компании процесс выглядит следующим образом.
Первый этап
На первом этапе происходит добавление разработчиками своего кода в браузер, при этом на серверах компании ежедневно идёт процесс компиляции исходников браузера в бинарные пакеты, по несколько версий в день. Это — внутренние сборки, в которых разработчики имеют возможность проверить свои свежие правки, как говорится, в деле — на живом браузере.
Также на этом этапе происходит и первичный отлов ошибок — здесь разработчики проверяют работоспособность своего кода, всё ли в нём работает так, как было задумано. Кроме того, в данных сборках присутствуют все экспериментальные функции, проходящие процесс создания и отладки — в самом сыром и непригодном к использованию виде. В связи с этим данные внутренние сборки никогда не покидают границ компании (за редким исключением, когда утечка происходит по недосмотру — как, например, это произошло буквально вчера :-) ).
Отдельные «счастливчики» могли понять это, обнаружив после обновления зелёную иконку браузера (см. слева) — именно она используется для внутренних тестовых сборок. Впрочем, зелёная иконка имеется и у сборки следующего этапа.
Второй этап
На этом этапе выпускается сборка для Sopranos — наших добровольных тестеров со всего мира (включая Россию), которые оказывают нам неоценимую и уникальную помощь в создании браузера. Их сборка, выпускаемая ежедневно, также имеет зелёную иконку и все экспериментальные функции, но самые явные ошибки в свежем коде разработчиков там уже отловлены. На этом этапе тестеры (а все они — отличные спецы в программировании и отладке) проверяют, как вновь добавленный код повлиял на уже существующие функции. Это очень важный этап, позволяющий выявить основную массу действительно критичных недочётов. Также можно добавить, что именно Sopranos в первую очередь проверяют и все сообщения об ошибках, ежедневно поступающие в нашу BTS от пользователей, и это уже
Третий этап
Это — наши еженедельные публичные тестовые сборки, выходящие с чёрной (на самом деле — с серо-синей) иконкой (см. справа). Данные версии собираются для широкого тестирования и в них отсутствуют многие экспериментальные функции, которые ещё не готовы к столь массовому использованию — мы просто потонем в сообщениях о том, что что-то не работает. Ну, и элемент сюрприза тоже никто не отменял.
Еженедельные сборки для нас имеют не менее важное значение, чем и внутренние: именно здесь происходит отлов основной массы ошибок и недочётов благодаря тому, что у пользователей данных версий исключительно широкий разброс как по «железу», так и по личным привычкам в работе с браузером. Происходит полноценный тест-драйв браузера в реальных боевых условиях. Пользователи находят такие недочёты, которые оказались скрытыми от глаз как самих разработчиков, так и официальных тестеров Sopranos.
Главная же цель выпуска подобных тестовых публичных сборок — шлифовка и полировка кода браузера для подготовки уже стабильной версии браузера, которая выходит примерно раз в 6 недель и знаменует собой
Четвёртый этап
Итак — финальная версия. Привычная красная иконка и сравнительно стабильный, отлаженный код. Почему — «сравнительно»? Потому, что идеал недостижим и полностью избавиться от всех ошибок в коде сегодня практически нереально — слишком сложными стали сегодня программные продукты. Это как с самолётами. Мало кто знает, что абсолютно в каждом самолёте, перевозящем в данную минуту пассажиров из одной географической точки в другую, имеется журнал известных на данный момент неполадок — список недочётов, с которыми самолёт допускается к работе. Другими словами, абсолютно исправными самолёты не бывают никогда в принципе.
И с браузером — аналогичная история. Он всегда содержит некоторое количество недочётов, не влияющих критически на работу приложения и позволяющих полноценно использовать эту версию в повседневной работе. Часть из них известна разработчикам, часть — нет. И вот именно эту часть находят со временем пользователи уже стабильной версии — о чём нас и уведомляют посредством отправки сообщений об ошибках через соответствующую онлайновую форму. Эти сообщения попадают под контроль Sopranos, проверяются, группируются и докладываются разработчикам с предложением исправить вот прямо сейчас или чуть попозже — в зависимости от критичности ошибки или недочёта.
Чаще всего найденные на данном этапе недочёты являются довольно специфичными, редкими или малосущественными, что приводит к довольно долгому сроку их исправления, но если сообщений от пользователей много и проблема носит явно не единичный характер — разработчики повышают приоритет этой проблемы и передвигают в очереди ближе к моменту исправления.
В качестве итога
Конечно, весь процесс описан довольно схематично и не включает множества мелких, но важных деталей, но в общем и целом показывает, как всё работает. Что же даёт такой многоуровневый подход? Он даёт равномерность процесса разработки и отладки браузера. Все ошибки фильтруются на каждом этапе в зависимости от критичности, при этом делается это постепенно, с привычной периодичностью. Таким образом разработчики имеют примерно постоянный объём ошибок в процессе исправления и в процессе ожидания очереди, тестеры (как официальные, так и неофициальные — еженедельных сборок) распределяют между собой «обязанности» по отлову ошибок в зависимости от своей квалификации, а конечные пользователи браузера получают достаточно стабильную версию, которая будет надёжно работать в ежедневном режиме. Вот, вкратце, и всё. Если у вас есть вопросы — задавайте их в комментариях, я постараюсь ответить.
Также не забывайте заглядывать на наш официальный веб-сайт vivaldi.com — там в последнее время происходят интересные изменения и появляется полезная информация, включая приглашение на работу.
P.S. Да, если вдруг вы забыли, откуда можно загрузить браузер Vivaldi — добро пожаловать!
Комментарии (50)
aenoki
15.10.2016 14:05+1Добрый день.
В ранних сборках (где-то до 1.1 или 1.2) если открываешь ссылку из стороннего приложения (ну например в жаббере-скайпе клацнул ссылку) — браузер остается фоновым окном и открывает себе ссылку в фоне. Сейчас же браузер становится активным после каждого такого клика. Я так подозреваю, что так для всех платформ, конкретно у меня Linux.
Можно как-то вернуть/настроить?den_po
16.10.2016 01:29+1Какие ещё браузеры так умеют? И как они различают, в фоне надо показать или нет?
VGrabko
15.10.2016 15:28нет уж извольте…
http://i.imgur.com/bqnhUtS.png23rd
15.10.2016 17:42А какая версия Firefox?
sumanai
15.10.2016 17:52Тут суть не в FF, а в упавшем установщике (вероятно, вивальди). Хромиум дропнул поддержку XP, вот и браузеры на его основе перестали её поддерживать.
Вивальди предлагает какую-то старую версию, и только в 32 битном варианте, что меня, видящего на XP x64, безмерно печалит.23rd
15.10.2016 19:27Тут суть не в FF, а в упавшем установщике (вероятно, вивальди). Хромиум дропнул поддержку XP, вот и браузеры на его основе перестали её поддерживать.
Это не отвечает на мой вопрос.
Вообще я спрашивал, думая, что FF уже тоже дропнула поддержку WinXP, но погуглил и не нашёл подобных новостей.sumanai
15.10.2016 23:21Ну конечно. FF молодец, последний держится. Остальным фу, плохие, негодные браузеры.
dartraiden
17.10.2016 13:20+1Поддержку XP и Vista дропнут, ориентировочно, в марте 2017. В 53 версии.
http://www.ghacks.net/2016/09/27/firefox-53-no-support-for-windows-xp-or-vista/
Однако, 52-я версия будет ESR (с длительной поддержкой), а в ней поддержка XP ещё присутствует.
TLT-IX
15.10.2016 18:45-2Компания Opera вместо сборки ещё одного никому не нужного хромиума
могла бы запустить краудфандинг для открытия исходников движка Presto.
Но… имеем жалкие потуги бывших работников — ещё один никому не нужную сборку ChromiumShpankov
15.10.2016 18:49У нас почти миллион пользователей по всему миру, это по-вашему «никому не нужный браузер»?
23rd
15.10.2016 19:30Ну так-то Опера единственная из Хромиумных поддерживает Windows XP.
http://www.opera.com/blogs/news/2016/04/chrome-alternative-opera-for-windows-xp-vista/sumanai
15.10.2016 23:24В прошедшем времени. 36 последняя, пока ещё получает обновления безопасности, но новых фич уже не будет.
Ajvan
15.10.2016 18:45Добрый день.
На только что установленной винде не работает проверка обновлений — ни стабильной версии браузера, ни тестовой.
Это же происходит в линуксе.
Видимо, это у меня какие-то проблемы, раз больше никто не указывал…
Написано «Appcast XML data incomplete»den_po
16.10.2016 00:46На форуме тоже жалуются.
Что происходит, если открывать эти ссылки?
https://update.vivaldi.com/update/1.0/win/appcast.xml
https://update.vivaldi.com/update/1.0/public/appcast.xmlAjvan
16.10.2016 08:00Соединение не конфиденциальное… не хочет в общем.Собственно, я с браузера Вивальди не могу скачать инсталлятор с их же сайта. И с хрома не могу. Ругается и не дает. С Мозиллы только.
den_po
16.10.2016 11:09Проблема у GlobalSign. Попробуйте очистить список отозванных сертификатов.
https://support.globalsign.com/customer/portal/articles/1353318-view-and-or-delete-crl-ocsp-cache
AhJong
16.10.2016 18:24Долго держался, целый год, наверное, вернулся снова на Chrome.
Ошибки не исправляются, ни косметические (как, например, отсутствие перевода пункта «открыть в фоновой вкладке» контекстного меню), так и showstoppers, такие, как регулярный слет всех открытых окон при перезапуске браузера или отсутствие возможности запустить расширение Google Hangouts.
MasMaX
19.10.2016 15:58Недавно поставил вместо Ubuntu 16 другую ОС — Fedora 24. Теперь Vivaldi падает иногда по 2-3 раза в час. Падает, запускаешь его и работаешь дальше. Из расширений было только uBlock и Frigate. Выключил их — все равно падает. Флеша нет, открыто около 10 разных закладок всегда, музыки и видео в фоне нет. Падает при простом чтении новостей.
Привык уже к Vivaldi, Хром недавно подвел меня съеданием все памяти и зависом компа во время важного мероприятия.
funnybanana
19.10.2016 17:07Честное слово, несколько раз пытался перейти на Vivaldi. но каждый раз не задерживаюсь на ней более суток… то пароли из хрома нельзя все вытянуть, то вместо настроек у меня черный экран, то внезапно пропадающие шрифты… но это ладно, на этот раз просидел на вашем замечательном браузере 2 часа, верстал спокойно страничку, жму F12 и в DevTools не нахожу привычной кнопочки переключения Toggle Device Toolbar (хотя она есть в хроме)
на крайний случай панель DevTools в хроме можно закрепить справа и таким образом масштабировать ширину окна примеряя верстку под разные экраны (у вас же окно DevTools вынесено отдельным окном)…
Все замечания отправлял куда нужно. Ещё в начале этого года, но ничего не меняется, подожду ещё год, может дойдут руки до этих незначительных правок…
P.S на этот раз меня ещё заманила иконка почты на скриншотах вашего браузера:
думал что будет как в старенькой пере — встроенный почтовик, ан-нет обознался. ну или сходу не разобрался как установить сие в браузер…
P.P.S хром зараза с каждым днём всё прожорливее и прожорливее… подсасывает порой 700 МБ оперативной памяти для одной вкладки…Shpankov
20.10.2016 01:57По devtools — можете попробовать самодельный вариант от одного из наших тестеров:
https://github.com/justdanpo/VivaldiHooks
reimax
23.10.2016 15:39только вот в 14.04 не завелось оно. браузер просто не видит этих скриптов. у меня либо отдельная специальная сборка, либо даже уже не знаю.
den_po
23.10.2016 18:02либо установлено неправильно или не туда
reimax
23.10.2016 18:11deb пакет с офф сайта. если он установлен не туда, то это опять таки вопрос к браузеру, ибо ставлю как есть штатными средствами. на форуме смотрел, папка установки у меня правильная.
den_po
23.10.2016 20:41я про «эти скрипты»
reimax
23.10.2016 21:34а что там устанавливать? написано копировать файлы, способов это сделать не та много. в репозитарии указана папка, куда все копировать и что куда дописать, ровно так и сделал.
den_po
23.10.2016 23:01Были случаи, и копировали не в ту папку, и сохраняли с гитхаба html вместо js. Напишу в личку.
reimax
23.10.2016 15:44кстати, заметил разницу при запуске браузера из консоли и через программы в юнити:
Flash (отключено)
User Agent Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.148 Safari/537.36 Vivaldi/1.4.589.38
Командная строка /opt/vivaldi/vivaldi-bin --ppapi-flash-path --ppapi-flash-version --always-authorize-plugins --disable-translate --window-depth=24 --x11-visual-id=32 --wm-user-time-ms=26798629 --flag-switches-begin --flag-switches-end
а так с консоли
Flash 23.0.0.162
User Agent Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.148 Safari/537.36 Vivaldi/1.4.589.38
Командная строка /usr/bin/vivaldi --ppapi-flash-path=/usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so --ppapi-flash-version=23.0.0.162 --always-authorize-plugins --disable-translate --window-depth=24 --x11-visual-id=32 --wm-user-time-ms=26979537 --flag-switches-begin --flag-switches-end
это содержимо вкладки о программе. с консоли верно подставляется адрес до плагина с флешем. вот только путь до браузера странный.
zigrus
в общем заметил что почти любая программа начинает глючить под виндой после 2-3 недель непрерывной работы.
в 2011 году перезагружал комп раз в 3-4 месяца
теперь все чаще и чаще. раз в неделю а то и два.
можно повысить стабильность программы до такого уровня что бы ее не нужно было перезапускать каждый день?
Shpankov
Невозможно. Это потребует огромных затрат ресурсов на достижение стабильности кода. Ресурсов и времени. И пока вы будете отлаживать свою программу, доводя её до совершенства, ваши конкуренты выпустят 10500 сырых обновлений и перетянут к себе вашу аудиторию.
Кроме того, учитывая, что все программы сегодня живут не сами по себе, а в связке с другим софтом (включая ОС), вы не сможете отладить свою программу до конца под её окружение — окружение уже изменится.
zigrus
раньше комы, ОС и программы были как маленькое озеро с рыбками
(впадина — комп, вода — ОС, рыбки — программы)
теперь это бурлящий горный поток текущий по пересеченной местности а лосось плывет против течения на нерест.
Shpankov
Причём, это даже не река, а мутный селевый поток, переполненный мусором, камнями, вырванными с корнем деревьями.
delvin-fil
Может быть это проблема WIN? У меня нормальные uptime 30 дней и браузер не выключается(пользуюсь исключительно vivaldi и это не реклама).
Закладок и вкладок «немеряно»
Изредка бывает при загруженной игре. «Изредка» — раз в месяц.
zigrus
как часто обновляете саму программу vivaldi?
delvin-fil
За время использования с десяток раз. В портах первая 1.2.490.35_p1, но я их чистил, поэтому более ранних нет.