Вообще, если вы следите за новостями веба, то могли заметить, что вокруг PWA кипят настоящие страсти. 👇
Самое интересное, на мой взгляд, происходит вокруг инициативы под названием Web Capabilities (кодовое название — Project Fugu 🐡):
chromium.org/teams/web-capa…
Это инициатива проекта Chromium по сокращению разрыва между возможностями, которые доступны нативным приложениям и которые доступны веб-приложениями.
Project Fugu поддерживают многие компании, включая Google, Microsoft, Intel, Samsung и др.
Safari и Firefox могли бы организовать подобные инициативы, но не стали этого делать.
С Apple всё более-менее понятно.
Кажется, что команда браузера Safari и движка WebKit намеренно не улучшает поддержку прогрессивных веб-приложений, так как PWA представляют конкуренцию App Store, который приносит значительный доход Apple.
Так, например, в ходе WWDC 2020 компания Apple объявила, что не будет реализовывать в Safari поддержку целых 16 Web API для создания прогрессивных веб-приложений, сославшись на проблемы с конфиденциальностью пользователей:
digitalinformationworld.com/2020/06/apple-…
Я считаю, что проблемы нужно решать, а не бежать от них. Тем более, что у Apple есть на это ресурсы.
It looks like Apple has used the term PWA for the first time, in the evidence to the Australian Competition and Consumer Commission (ACCC). 👀 accc.gov.au/system/files/A… /cc @firt @slightlylate #PWA #ProgressiveWebApps pic.twitter.com/BSyyvYmm6J
На фоне этого особенно иронично смотрится предложение Apple обходить правила App Store при помощи PWA:
twitter.com/alexey_rodiono…
Ситуация обостряется ещё и тем, что на iOS, согласно требованиям всё того же App Store, все браузеры без исключения, включая Google Chrome, Mozilla Firefox и др., вынуждены использовать движок WebKit вместо своего собственного движка — Blink, Gecko и др.
Примечательно также и то, что это первый раз, когда Apple использовала термин PWA с момента его появления.
Fifty-one minutes in 2020 with a browser team and not one mention to PWAs. In the end, "home screen web apps" are discussed with a definition from 10 years ago (bookmarking your favorite sites). Safari team: it's so childish to act as if the term PWA does not exist. Really. twitter.com/firt/status/12…
До этого Apple всячески избегала этого термина, называя прогрессивные веб-приложения либо просто "web apps" — веб-приложениями, либо "home screen web apps" — веб-приложениями, которые можно добавить на главный экран:
twitter.com/firt/status/12…
А вот с Firefox интереснее. Буквально через несколько дней после заявления Apple команда Firefox объявила, что тоже не будет реализовывать эти Web API.
Всё это приводит к расколу и фрагментации веба как платформы.
Именно Firefox ещё до появления термина PWA заложил многие концепции и прототипы Web API, например, для работы с аппаратными возможностями устройств в Firefox OS, где все приложения являлись по сути веб-приложениями:
medium.com/@bfrancis/the-…
Всё намного прозаичнее:
habr.ru/p/521248
habr.ru/p/515534
Но не стоит думать, что Google и Microsoft такие белые и пушистые. У каждой компании свои собственные цели и мотивы.
В отличие от Apple, большая часть бизнеса Google строится так и иначе вокруг веба (Поиск, Gmail, YouTube, ChromeOS и т.д.). И Google просто вынуждена инвестировать в развитие веб-платформы.
С Microsoft всё тоже более-менее понятно. Её платформа Windows Phone умерла. Никто не хотел писать приложения под эту платформу, когда есть Android и iOS. Нужно что-то кроссплатформенное.
После того, как Microsoft Edge переехал на Chromium, Chromium получил доминирующее положение в вебе.
Почему это плохо:
medium.com/samsung-intern…
Пользуясь доминантным положением, Google ни раз была замечена в пропихивании стандартов в вебе.
То есть, по сути, у пользователя есть выбор между Safari и Safari.
С одной стороны, если выйти на улицу и спросить первого встречного, нужно ли ему, например, Web USB API или Web HID API в вебе, он, скорее всего, ответит, что нет.
С другой стороны, Chromium заявляет, что не добавляет никакие API просто так от нечего делать (это, на самом деле, очень дорого!), на каждое API им поступают просьбы от пользователей, и в зависимости от количества таких просьб, они приоритезируют их:
fugu-tracker.web.app
Разгадка кроется в том, кого понимать под "пользователями".
Кто эти пользователи, которые просят Web API?
Разработчики!
Конечным пользователям и бизнесу в целом всё равно, что под капотом у приложения, на каких технологиях оно написано. Им главное, чтобы оно хорошо работало, выполняло свою функцию, будь то нативное приложение или PWA.
PWA — это вообще про разработчиков и developer experience (DX).
Подумайте сами: основные идеи PWA были заложены инженерами, термин PWA был придуман инженером, PWA продвигаются DevRel'ами (от англ. Developer Relations — взаимодействие с разработчиками). Конечными пользователями технологии являются разработчики.
Это мы, как разработчики, хотим писать на веб-технологиях и иметь все эти API, как у других платформ, в веб-платформе.
PWA — это инструмент разработчика.
Это объясняет различия в политике команд Google Chrome, Microsoft Edge и Samsung Internet, у которых есть целая армия DevRel'ов, которая собирает обратную связь и запросы от разработчиков, и команды Safari, которая больше сфокусирована на обычных конечных пользователях.
При этом нельзя отрицать пользу Project Fugu для конечных пользователей.
Во время пандемии многие пользовались видеозвонками в браузере, но мало кто задумывался, что изначально веб представлял из себя набор отформатированных страничек и не имел доступа к камере и микрофону.
Так в чём же принципиальная разница между Web API для доступа к камере и микрофону и Web API для других аппаратных возможностей устройств (Bluetooth, USB, HID, NFC и т.д.)?