Разработка Vivaldi: работа над ошибками

    image

    Всем привет! Разработка программного обеспечения — это сегодня само по себе дело сложное в связи с обилием всевозможных языков программирования, операционных систем, платформ, устройств и прочих факторов. Но, пожалуй, создание браузера — это одна из наиболее трудных задач, требующих особого внимания: всё-таки, браузер — это на сегодняшний день главное приложение, с которым работает ежедневно каждый пользователь Интернета. А учитывая, что контент сегодня представлен в столь сложном динамическом виде, что и не снился разработчикам первых браузеров, при этом принципы работы с этим контентом переросли из «посмотреть — почитать» в полноценную работу с приложениями, задача оказывается совсем не тривиальной. В общем, вывод напрашивается один: браузеры сегодня становятся всё сложнее и, как следствие, в процессе разработки в код проникает всё больше ошибок. Как с этим можно бороться? Как с этим боремся мы в Vivaldi? Вот об этом вкратце и поговорим.

    Итак, начну с главного. Из чего состоит процесс разработки? Он состоит из нескольких важных этапов, включающих собственно написание кода, тестирование и выпуск публичной версии. Так это работает, например, если вы пишете программу уровня «Hello, world!». Впрочем, на самом деле при разработке браузера это работает точно так же, просто на чуть более сложном уровне, включающем несколько релизов разной степени готовности и несколько «фильтров» отлова ошибок. в нашей компании процесс выглядит следующим образом.

    Первый этап


    imageНа первом этапе происходит добавление разработчиками своего кода в браузер, при этом на серверах компании ежедневно идёт процесс компиляции исходников браузера в бинарные пакеты, по несколько версий в день. Это — внутренние сборки, в которых разработчики имеют возможность проверить свои свежие правки, как говорится, в деле — на живом браузере.

    Также на этом этапе происходит и первичный отлов ошибок — здесь разработчики проверяют работоспособность своего кода, всё ли в нём работает так, как было задумано. Кроме того, в данных сборках присутствуют все экспериментальные функции, проходящие процесс создания и отладки — в самом сыром и непригодном к использованию виде. В связи с этим данные внутренние сборки никогда не покидают границ компании (за редким исключением, когда утечка происходит по недосмотру — как, например, это произошло буквально вчера :-) ).

    Отдельные «счастливчики» могли понять это, обнаружив после обновления зелёную иконку браузера (см. слева) — именно она используется для внутренних тестовых сборок. Впрочем, зелёная иконка имеется и у сборки следующего этапа.

    Второй этап


    На этом этапе выпускается сборка для Sopranos — наших добровольных тестеров со всего мира (включая Россию), которые оказывают нам неоценимую и уникальную помощь в создании браузера. Их сборка, выпускаемая ежедневно, также имеет зелёную иконку и все экспериментальные функции, но самые явные ошибки в свежем коде разработчиков там уже отловлены. На этом этапе тестеры (а все они — отличные спецы в программировании и отладке) проверяют, как вновь добавленный код повлиял на уже существующие функции. Это очень важный этап, позволяющий выявить основную массу действительно критичных недочётов. Также можно добавить, что именно Sopranos в первую очередь проверяют и все сообщения об ошибках, ежедневно поступающие в нашу BTS от пользователей, и это уже

    Третий этап


    imageЭто — наши еженедельные публичные тестовые сборки, выходящие с чёрной (на самом деле — с серо-синей) иконкой (см. справа). Данные версии собираются для широкого тестирования и в них отсутствуют многие экспериментальные функции, которые ещё не готовы к столь массовому использованию — мы просто потонем в сообщениях о том, что что-то не работает. Ну, и элемент сюрприза тоже никто не отменял.

    Еженедельные сборки для нас имеют не менее важное значение, чем и внутренние: именно здесь происходит отлов основной массы ошибок и недочётов благодаря тому, что у пользователей данных версий исключительно широкий разброс как по «железу», так и по личным привычкам в работе с браузером. Происходит полноценный тест-драйв браузера в реальных боевых условиях. Пользователи находят такие недочёты, которые оказались скрытыми от глаз как самих разработчиков, так и официальных тестеров Sopranos.

    Главная же цель выпуска подобных тестовых публичных сборок — шлифовка и полировка кода браузера для подготовки уже стабильной версии браузера, которая выходит примерно раз в 6 недель и знаменует собой

    Четвёртый этап


    imageИтак — финальная версия. Привычная красная иконка и сравнительно стабильный, отлаженный код. Почему — «сравнительно»? Потому, что идеал недостижим и полностью избавиться от всех ошибок в коде сегодня практически нереально — слишком сложными стали сегодня программные продукты. Это как с самолётами. Мало кто знает, что абсолютно в каждом самолёте, перевозящем в данную минуту пассажиров из одной географической точки в другую, имеется журнал известных на данный момент неполадок — список недочётов, с которыми самолёт допускается к работе. Другими словами, абсолютно исправными самолёты не бывают никогда в принципе.

    И с браузером — аналогичная история. Он всегда содержит некоторое количество недочётов, не влияющих критически на работу приложения и позволяющих полноценно использовать эту версию в повседневной работе. Часть из них известна разработчикам, часть — нет. И вот именно эту часть находят со временем пользователи уже стабильной версии — о чём нас и уведомляют посредством отправки сообщений об ошибках через соответствующую онлайновую форму. Эти сообщения попадают под контроль Sopranos, проверяются, группируются и докладываются разработчикам с предложением исправить вот прямо сейчас или чуть попозже — в зависимости от критичности ошибки или недочёта.

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

    В качестве итога


    Конечно, весь процесс описан довольно схематично и не включает множества мелких, но важных деталей, но в общем и целом показывает, как всё работает. Что же даёт такой многоуровневый подход? Он даёт равномерность процесса разработки и отладки браузера. Все ошибки фильтруются на каждом этапе в зависимости от критичности, при этом делается это постепенно, с привычной периодичностью. Таким образом разработчики имеют примерно постоянный объём ошибок в процессе исправления и в процессе ожидания очереди, тестеры (как официальные, так и неофициальные — еженедельных сборок) распределяют между собой «обязанности» по отлову ошибок в зависимости от своей квалификации, а конечные пользователи браузера получают достаточно стабильную версию, которая будет надёжно работать в ежедневном режиме. Вот, вкратце, и всё. Если у вас есть вопросы — задавайте их в комментариях, я постараюсь ответить.

    Также не забывайте заглядывать на наш официальный веб-сайт vivaldi.com — там в последнее время происходят интересные изменения и появляется полезная информация, включая приглашение на работу.

    P.S. Да, если вдруг вы забыли, откуда можно загрузить браузер Vivaldi — добро пожаловать!
    Vivaldi Technologies AS
    153.25
    Vivaldi — браузер для наших друзей
    Share post

    Comments 52

      –1
      в общем заметил что почти любая программа начинает глючить под виндой после 2-3 недель непрерывной работы.
      в 2011 году перезагружал комп раз в 3-4 месяца
      теперь все чаще и чаще. раз в неделю а то и два.
      можно повысить стабильность программы до такого уровня что бы ее не нужно было перезапускать каждый день?
        +1
        Невозможно. Это потребует огромных затрат ресурсов на достижение стабильности кода. Ресурсов и времени. И пока вы будете отлаживать свою программу, доводя её до совершенства, ваши конкуренты выпустят 10500 сырых обновлений и перетянут к себе вашу аудиторию.

        Кроме того, учитывая, что все программы сегодня живут не сами по себе, а в связке с другим софтом (включая ОС), вы не сможете отладить свою программу до конца под её окружение — окружение уже изменится.
          +3
          раньше комы, ОС и программы были как маленькое озеро с рыбками
          (впадина — комп, вода — ОС, рыбки — программы)
          теперь это бурлящий горный поток текущий по пересеченной местности а лосось плывет против течения на нерест.
            0
            Причём, это даже не река, а мутный селевый поток, переполненный мусором, камнями, вырванными с корнем деревьями.
              0
              Теперь в воде постоянно меняют кислотно-щелочной баланс
            0
            Может быть это проблема WIN? У меня нормальные uptime 30 дней и браузер не выключается(пользуюсь исключительно vivaldi и это не реклама).
            Закладок и вкладок «немеряно»
            image
            Изредка бывает при загруженной игре. «Изредка» — раз в месяц.
              0
              как часто обновляете саму программу vivaldi?
                0
                За время использования с десяток раз. В портах первая 1.2.490.35_p1, но я их чистил, поэтому более ранних нет.
            +1
            Добрый день.

            В ранних сборках (где-то до 1.1 или 1.2) если открываешь ссылку из стороннего приложения (ну например в жаббере-скайпе клацнул ссылку) — браузер остается фоновым окном и открывает себе ссылку в фоне. Сейчас же браузер становится активным после каждого такого клика. Я так подозреваю, что так для всех платформ, конкретно у меня Linux.
            Можно как-то вернуть/настроить?
              0
              Отправьте баг-репорт и номер сообщите мне.
                +1
                VB-22205.
                Спасибо!
                  0
                  запостил недавно аналогичный репорт и в багтрекер и на форум. в обоих случаях тишина. как список то всех ошибок глянуть, которые добавил? и подтверждены ли они или нужна доп информация?
                    0
                    Я могу посмотреть — скиньте номера.
                  +1
                  Какие ещё браузеры так умеют? И как они различают, в фоне надо показать или нет?
                    0
                    лиса?
                      +1
                      Опера 12.
                        0
                        А второй вопрос?
                          0
                          Никак не различает, всегда открывает ссылку в фоне. Никогда 12ю оперу в глаза не видели?
                            0
                            Никогда не видел, чтоб браузеры открывали в фоне. Опера 12 не исключение.
                    0
                    нет уж извольте…

                    http://i.imgur.com/bqnhUtS.png
                      0
                      А какая версия Firefox?
                        0
                        Тут суть не в FF, а в упавшем установщике (вероятно, вивальди). Хромиум дропнул поддержку XP, вот и браузеры на его основе перестали её поддерживать.
                        Вивальди предлагает какую-то старую версию, и только в 32 битном варианте, что меня, видящего на XP x64, безмерно печалит.
                          0
                          Всё так, но нужно подходить философски: рано или поздно это бы всё равно произошло. Я имею в виду — уход XP в историю.
                            0
                            Да я не беспокоюсь, я прочно сижу на FF, за другими браузерами слежу ради интереса и вдохновения.
                            0
                            Тут суть не в FF, а в упавшем установщике (вероятно, вивальди). Хромиум дропнул поддержку XP, вот и браузеры на его основе перестали её поддерживать.
                            Это не отвечает на мой вопрос.
                            Вообще я спрашивал, думая, что FF уже тоже дропнула поддержку WinXP, но погуглил и не нашёл подобных новостей.
                              0
                              Ну конечно. FF молодец, последний держится. Остальным фу, плохие, негодные браузеры.
                                +1
                                Поддержку XP и Vista дропнут, ориентировочно, в марте 2017. В 53 версии.
                                http://www.ghacks.net/2016/09/27/firefox-53-no-support-for-windows-xp-or-vista/

                                Однако, 52-я версия будет ESR (с длительной поддержкой), а в ней поддержка XP ещё присутствует.
                          –2
                          Компания Opera вместо сборки ещё одного никому не нужного хромиума
                          могла бы запустить краудфандинг для открытия исходников движка Presto.

                          Но… имеем жалкие потуги бывших работников — ещё один никому не нужную сборку Chromium
                            0
                            У нас почти миллион пользователей по всему миру, это по-вашему «никому не нужный браузер»?
                              0
                              Ну так-то Опера единственная из Хромиумных поддерживает Windows XP.
                              http://www.opera.com/blogs/news/2016/04/chrome-alternative-opera-for-windows-xp-vista/
                            0
                            Добрый день.

                            На только что установленной винде не работает проверка обновлений — ни стабильной версии браузера, ни тестовой.

                            Это же происходит в линуксе.

                            Видимо, это у меня какие-то проблемы, раз больше никто не указывал…

                            Написано «Appcast XML data incomplete»
                              0
                              На форуме тоже жалуются.
                              Что происходит, если открывать эти ссылки?
                              https://update.vivaldi.com/update/1.0/win/appcast.xml
                              https://update.vivaldi.com/update/1.0/public/appcast.xml
                                0
                                Соединение не конфиденциальное… не хочет в общем.Собственно, я с браузера Вивальди не могу скачать инсталлятор с их же сайта. И с хрома не могу. Ругается и не дает. С Мозиллы только.
                            0
                            Очень не хватает devtools в окне страницы (а не в отдельном окне, как сейчас).
                              +1
                              Недавно наш Sopranos Денис Порфирьев сделал небольшой хак:

                              https://habrahabr.ru/company/vivaldi/blog/312276/#comment_9853324

                                0
                                Спасибо! Опробую.
                              0
                              Долго держался, целый год, наверное, вернулся снова на Chrome.

                              Ошибки не исправляются, ни косметические (как, например, отсутствие перевода пункта «открыть в фоновой вкладке» контекстного меню), так и showstoppers, такие, как регулярный слет всех открытых окон при перезапуске браузера или отсутствие возможности запустить расширение Google Hangouts.
                                0
                                Недавно поставил вместо Ubuntu 16 другую ОС — Fedora 24. Теперь Vivaldi падает иногда по 2-3 раза в час. Падает, запускаешь его и работаешь дальше. Из расширений было только uBlock и Frigate. Выключил их — все равно падает. Флеша нет, открыто около 10 разных закладок всегда, музыки и видео в фоне нет. Падает при простом чтении новостей.

                                Привык уже к Vivaldi, Хром недавно подвел меня съеданием все памяти и зависом компа во время важного мероприятия.
                                  0
                                  Честное слово, несколько раз пытался перейти на Vivaldi. но каждый раз не задерживаюсь на ней более суток… то пароли из хрома нельзя все вытянуть, то вместо настроек у меня черный экран, то внезапно пропадающие шрифты… но это ладно, на этот раз просидел на вашем замечательном браузере 2 часа, верстал спокойно страничку, жму F12 и в DevTools не нахожу привычной кнопочки переключения Toggle Device Toolbar (хотя она есть в хроме)
                                  image
                                  на крайний случай панель DevTools в хроме можно закрепить справа и таким образом масштабировать ширину окна примеряя верстку под разные экраны (у вас же окно DevTools вынесено отдельным окном)…

                                  Все замечания отправлял куда нужно. Ещё в начале этого года, но ничего не меняется, подожду ещё год, может дойдут руки до этих незначительных правок…

                                  P.S на этот раз меня ещё заманила иконка почты на скриншотах вашего браузера:
                                  image

                                  думал что будет как в старенькой imageпере — встроенный почтовик, ан-нет обознался. ну или сходу не разобрался как установить сие в браузер…

                                  P.P.S хром зараза с каждым днём всё прожорливее и прожорливее… подсасывает порой 700 МБ оперативной памяти для одной вкладки…
                                    +2
                                    DevTools в работе, почтовик тоже.
                                      0
                                      Хорошо, буду ждать.
                                      0
                                      По devtools — можете попробовать самодельный вариант от одного из наших тестеров:

                                      https://github.com/justdanpo/VivaldiHooks

                                      image
                                        0
                                        только вот в 14.04 не завелось оно. браузер просто не видит этих скриптов. у меня либо отдельная специальная сборка, либо даже уже не знаю.
                                          0
                                          либо установлено неправильно или не туда
                                            0
                                            deb пакет с офф сайта. если он установлен не туда, то это опять таки вопрос к браузеру, ибо ставлю как есть штатными средствами. на форуме смотрел, папка установки у меня правильная.
                                              0
                                              я про «эти скрипты»
                                                0
                                                а что там устанавливать? написано копировать файлы, способов это сделать не та много. в репозитарии указана папка, куда все копировать и что куда дописать, ровно так и сделал.
                                                  0
                                                  Были случаи, и копировали не в ту папку, и сохраняли с гитхаба html вместо js. Напишу в личку.
                                          0
                                          кстати, заметил разницу при запуске браузера из консоли и через программы в юнити:

                                          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


                                          это содержимо вкладки о программе. с консоли верно подставляется адрес до плагина с флешем. вот только путь до браузера странный.
                                        0
                                        На макоси очень часто намертво зависает, помогает только перезапуск. Сегодня завис так, что после перезапуска появлялась только иконка без окна.

                                        Помогло только отключения правила в фаерволе для гугланалитикс. Видимо это и есть причина частых зависаний.
                                        Т.е. мало того что гугланалитикс вообще в сборке есть, так и еще и забанить его нормально нельзя.

                                        Спасибо хоть что кейлоггер не суете.

                                        Only users with full accounts can post comments. Log in, please.