О моратории на новые браузерные функции, предложенном PPK

Перевод статьи On PPK’s moratorium on new browser features с сайта https://dev.opera.com/, с разрешения автора — Брюса Лоусона

Знаменитый разработчик и автор множества статей Питер Пол Кох (PPK) недавно призвал к «мораторию на новые браузерные функции на год или около того». Если вы не читали его статью «Хватит толкать веб вперед», просмотрите ее: он выдвигает интересные тезисы, как всегда.

(Нужно сказать сразу: мы все — большие поклонники таланта PPK: ему достались и личные нападки за ту статью — мы собираемся возразить на его главный тезис, но мы по-прежнему замечательно относимся к нему и благодарим его за начало этого обсуждения.)

Во многом мы, команда Opera по связям с разработчиками, разделяем его боль. Каждому из нас знакомо чувство, когда по возвращении из отпуска мы не можем понять беседы в твиттере о спецификации, появившейся в тот недавний вечер, когда мы нежились у бассейна/покоряли сердца зажигательной бачатой/бродили по древним руинам/отрывались в Магалуфе/выражали смайликами-эмодзи в виде какашки своё сожаление об излишке съеденных накануне U+1F364 (зачеркните нужное в зависимости от того, кто вы — Брюс, Шветанк, Матиас, Вадим или Андреас).

Всегда есть чему учиться, и веб-платформа становится всё сложнее. Даже Иэн Хиксон, редактор HTML5, сказал:

Платформа уже слишком сложна, чтобы один человек долго мог понимать ее полностью. Черт, да у веб-платформы есть части, в которые и я даже не пытался вникнуть — например, WebGL или IndexDB — и части, которые постоянно оказываются невероятно сложными для меня, несмотря на все мои старания их понять

…и это сказано два с половиной года назад!

Но не обязательно помнить все нюансы каждой спецификации. Нужно знать то, что можно, и иметь доступ к поисковику, чтобы находить нужные подробности в спецификациях или обучающих материалах. Многие ли из нас знают наизусть синтаксис CSS-градиентов, или помнят все тонкости синтаксиса Web Audio API? Но это не мешает нам пользоваться этим при необходимости.

Но главная жалоба PPK вовсе не на сложность:

Нам надо бы сосредоточиться на сильных сторонах веба: простоте, ссылках и общедоступности. Машина инноваций на всех парах мчит не туда.

PPK приводит пример:

Для меня переходы между страницами олицетворяют всё то, что сегодня с браузерными функциями не так. Их задача — позволять плавно переходить с одной страницы на другую, вплоть до синхронизации анимаций на исходной и конечной страницах. … Мы годами обходились без этого. Что еще важнее, конечные пользователи годами обходились без этого и вполне привыкли к легкой задержке при загрузке новой страницы… Но зачем это понадобилось веб-разработчикам? Чтобы эмулировать нативные приложения, конечно же. По-моему, этого недостаточно.

Но фокус тут в том, что пользователи хотят подобных штук, потому что уже привыкли к возможностям нативных приложений. И мы знаем, что потребителям нравятся возможности приложений — в апреле 2014-го специализирующаяся на мобильной аналитике фирма Flurry сообщила:

Приложения продолжают укреплять свои ведущие позиции, и занимают 86% активности среднестатистического американского мобильного пользователя, или 2 часа 19 минут в день. Время, проводимое в мобильном вебе, продолжает сокращаться, и в среднем составляет лишь 14% активности американского мобильного пользователя или 22 минуты в день.

Многие из новых «фич», появляющихся в вебе, напр. Service Worker или устанавливаемые веб-приложения, созданы улучшать работу веба для конечных пользователей — улучшать по примеру нативных приложений, которые прежде не были доступны в вебе. Это победа.

Также, при всём уважении, мы не согласны с PPK, что добавление похожего на нативные приложения пользовательского опыта и защита простоты, URL-ов и общедоступности как фундаментальных ценностей веба однозначно противоречат друг другу.

Давайте рассмотрим эти фундаментальные ценности в обратном порядке:

Общедоступность

Всё ближе момент, когда некоторые организации захотят поступиться доступностью веба, потому что хотят возможностей нативных приложений. Например, это уже делает Myntra — и планирует вот-вот сделать их родительская компания Flipkart; они отключили свой сайт для мобильников и убеждают людей пользоваться приложением (хотя сайтом по-прежнему можно пользоваться на компьютерах).

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

Если мы замедлим разработку веба, мы рискуем, что нативные приложения отберут у нас еще больше сервисов, тем самым уменьшая общедоступные возможности веба.

Адреса ссылок

Если взять огромную кастрюлю и кипятить в ней веб все выходные напролет, периодически снимая пену из комментариев с Youtube, порнухи и фоточек мерзких котиков (тавтология?), то, заглянув под крышку в воскресенье вечером, вы найдете в остатке лишь адреса ссылок, т.е. URL (или URI, или URN-ки… да какая разница?).

Он и называется «вебом», т.е. «паутиной», потому что это сеть, связывающая ресурсы воедино, и к каждому ресурсу можно обратиться по своему индивидуальному адресу.

Современные стандарты разрабатываются для сохранения адресов ссылок. Взять Service Worker, например — поясняющий документ для контроллера навигации (старое название того, что позже выросло в Service Worker) говорит:

Это вынуждает вас иметь ссылки! Некоторые современные платформы для приложений поступились этим фундаментальным принципом веба и страдают от этого. Веб никогда не должен повторять той же ошибки.

Аналогично, спецификация Web Manifest определяет начало и область видимости приложения в терминах старых добрых жизненно важных ссылок. Предложенная спецификация апгрейда незащищенных запросов пытается обеспечить непрерывность ссылок при переходе сервера на HTTPS, чтобы пользователям было удобнее и безопаснее.

Веб много чему может научиться у нативных приложений (для этого не нужно рабски эмулировать их), но возможность ссылаться — то, в чем нативным приложениям нужно эмулировать веб. См. смахивающее на «заумную машину Голдберга» предложение App Links — вот как Facebook старается привнести «глубокую линковку контента в ваше мобильное приложение». У нас есть ссылки; PPK прав, что нам нужно беречь их как зеницу ока, что современные стандарты и стараются делать.

Простота

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

Один из примеров — парсинг HTML5. Годами разработчикам приходилось иметь дело с разными вариантами DOM, получавшимися в браузерах из невалидной разметки (которая, как мы знаем, составляет основную массу веба). Это допускалось, поскольку HTML 4 никогда не уточнял, как быть с неправильной разметкой, так что браузеры были вольны делать что им угодно.

HTML5 это изменил, и теперь все браузеры, достойные пожатия угловой скобки, получают одну и ту же DOM вне зависимости от валидности разметки. Это дало колоссальное улучшение совместимости, что радует потребителей и сберегает мегатонны нервных клеток разработчикам.

Более свежий пример — XMLHttpRequest, формальное описание и стандарт для которого появились лишь спустя годы после того, как Microsoft его реализовал, а все остальные разобрали эту реализацию и скопировали ее.

XHR едва ли можно назвать красивым API, и его заменит стандарт Fetch, стремящийся упростить и привести к единому виду сетевые запросы. В его преамбуле сказано:

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

Множество API позволяет загружать ресурсы, напр. элементы img и script в HTML, cursor и list-style-image в CSS, navigator.sendBeacon() и self.importScripts() в JavaScript. Стандарт Fetch предоставляет унифицированную архитектуру для таких функций, чтобы все они стали единообразны в том, что касается различных аспектов загрузки, напр. редиректов и протокола CORS.

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

Всё это строится на философии разработки под названием «Манифест расширяемого веба». Это практически необъятная тема, но глава общественной группы W3C по расширяемому вебу, Брайан Карделл, написал нам статью об этом под названием «Секс, Гудини и расширяемый веб».

Безотлагательность

Центральный столп веба, который PPK не упомянул — то, что я называю «безотлагательностью». Если вы что-то поменяете на сайте, следующий посетитель сразу же получит обновленную версию. С нативными приложениями, которые нужно публиковать через App Store, пользователь лишь получит всплывающее уведомление, что есть свежая версия, и что при подключении к Wi-Fi приложение обновится. Может быть.

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

Заключение

Наши разработчики в Opera много трудятся над тем, чтобы обеспечить доступ к вебу людям, которым он не доступен иначе, либо с Opera Mini, либо путем уменьшения потребления памяти в Chromium, чтобы он работал даже на бюджетных устройствах, которыми пользуется большинство людей в мире.

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

Мы считаем, что дальнейшее существование веба немыслимо без добавления новых функций — вроде Service Workers и устанавливаемых веб-приложений, в точности как мы добавили нативное видео, API аудио, элемент <picture>, API хранилищ — которые раздвигают границы возможного для веба и дают общедоступность, которой жаждет PPK и которая нужна нам.

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

Это написал Брюс Лоусон, при содействии остальных участников команды Opera по связям с разработчиками. Не согласны? Пожалуйста, напишите свой собственный ответ и пришлите нам в Твиттере ссылку!

Другие высказывания по этой теме:

P.S. Это тоже может быть интересно:

2 Комментарии

  1. Пётр Порошенко

    ***[чушь] несут. *** *** [чертовы неудачники] развалили свой движок и перешли на *** [ущербный] блинк, а теперь якобы они что-то там могут ещё. *** [плестись в хвосте] у всего рынка они теперь могут.

    (прим. модер.: извините, пришлось немного подредактировать вашу экспрессию — нас всё-таки и дети читают..:)

  2. Владимир

    Модератор, если бы тут писали бы дети, то вы бы аъуели от написанного.
    С уважением.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.