?

Log in

No account? Create an account
звук на веб-страницах и будущее веб-платформы - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

звук на веб-страницах и будущее веб-платформы [июн. 14, 2018|07:26 pm]
Anatoly Vorobey
[Tags|, ]

Allow audio to autoplay, but optionally mute output

Внимательное прочтение этого бага (а также блог-записи, на которую он ссылается) полезно, мне кажется, для понимания важных проблем веб-девелопмента и веба как платформы. Прочитал, и, как говорили в давние времена, "долго думал".

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

Казалось бы, все хорошо и правильно, и не на что жаловаться. Но автор этого баг-репорта утверждает (и довольно убедительно аргументирует), что технический способ, которым это было сделано, неверный. Вместо того, чтобы заглушить (mute) звук до тех пор, пока пользователь не проявит какой-то интерес к странице, браузер возвращает ошибку, когда код на джаваскрипте пытается что-то проиграть. Но проблема в том, что огромное количество сайтов уже написаны таким образом, что они эту ошибку не понимают и все приложение перестает работать после нее. Если посмореть на комментарии в баг-репорте, там разработчики Хрома просят привести примеры и их просто забрасывают примерами. Тут и игры всякие на HTML5, и мультимедийные приложения разного рода, и целые фреймворки, и всякие утилиты для голосового общения, и арт-проекты, и что угодно еще. Возможно, некоторые из них можно счесть нелегитимно пытающимися что-то немедленно проигрывать при открытии; а про другие можно сказать, что это явно заложено в их цель существования и это то, что пользователь хочет. Так или иначе, все они продолжали бы работать без проблем, если бы браузер делал "заглушку", а не "ошибку", и все они теперь сломаны этим изменением и требуют починки. Естественно, в куче случаев эта починка просто невозможна - у данного проекта нет больше разработчиков, и сайт/страница просто перестают работать, например.

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

Действительно, посмотрите, как это выглядит с точки зрения веба как платформы. Современные HTML/JS развились до такой степени, что можно строить на них действительно сложные и богатые приложения, но как эти приложения выглядят с точки зрения стабильности интерфейсов? На примере этого бага мы видим, что можно написать "программу" под "операционной системой" веба (т.е. веб-сайт), она будет прекрасно работать, потом пройдет год-два, что-то изменят в браузере, и она перестанет работать. Причем пусть не у всех сразу, если один браузер изменили, но у очень многих или даже большинства. Причем нет такого, как в обычных ОС, что если вы не переходите на новую версию ОС (новый Windows, скажем), то как минимум те программу, что у вас уже есть, продолжают работать. Нет, браузеры само-апдейтятся все время у всех, и практически никто не остается со старыми версиями, поэтому платформа все время находится в движении. И из-за того, что набор интерфейсов феноменально сложный и запутанный (в сравнении, скажем, с Win32 или POSIX), мы получаем ситуацию, при которой:

1) все нетривиальные приложения нужно вручную тестировать на всех главных браузерах, а потом периодически тестировать снова на новых версиях
2) изменения в браузере, которые могут сломать ваше приложение, вообще могут никак не касаться "официального" стандарта. Скажем, это изменение со звуком в Хроме никак не относится к стандарту, это типичное "внутреннее" решение, деталь имплементации. Но из-за вышеупомянутых особенностей платформы оно легко может повалить огромное количество "программ".

В итоге мы получаем платформу, на которой, чтобы остаться на месте, нужно постоянно бежать вперед. Если вы "просто" сделали что-то очень крутое HTML5, и запустили сайт, вы не можете просто забыть про него и надеяться, что он будет работать через год и два и три. Если это не сайт, а UI-библиотека на гитхабе, и не получала коммитов последние три года, можно ожидать, что она просто не будет работать в последних Хромах/Сафари/Эджах (я преувеличиваю? осадите меня, если так; но два-три примера такого мне точно недавно попадались).

— У нас, — сказала Алиса, с трудом переводя дух, — когда долго бежишь со всех ног, непременно попадёшь в другое место.
— Какая медлительная страна! — вскричала Королева. — Ну а здесь, знаешь ли, приходится бежать со всех ног, чтобы только остаться на том же месте.

Не очень знаю, что можно с этим сделать; и пришли мы к этому, по сути дела, в результате того, что все занимались хорошим и правильным, казалось бы, продвижением веб-платформы. Но конечный результат кажется мне немного тревожным. Подумайте хотя бы об архивации и истории. Мы можем сегодня запускать ДОС-приложения 1990 года через DosBox, или игры для разных приставок 90-х через эмуляторы. На чем вы сможете запустить веб-приложение 2015 года в 2030-м? Вы думаете, оно будет работать на браузере 2030-го? Нет. Вы думаете, браузер 2015-го сохранится и вы сможете легко его запустить в 2030-м? Тоже не факт (технологические условия для этого есть уже и сейчас, но квест "найди Хром 2011-го года, запусти его в виртуальной машине и посмотри через него снимок такого-то сайте в archive.org" доступен только продвинутым пользователям, полагаю, а чрезвычайная сложность и фрагментация платформы, меняющейся от года к году, затрудняет это все больше и больше со временем).

И еще такая мысль. Сравните эту ситуацию с Flash-приложениями, от которых мы в основном избавились в последние годы, и веб-разработчики в целом этому радовались. Действительно, Flash-проприетарный формат, плохо поддерживался Adobe, куча проблем с секьюрити, трудно интегрировать с окружающим HTMLем и современной мобильной реальностью... насколько лучше уметь все то же самое делать в HTML5, правда? Ладно, забудем про миллион существующих игр/приложений и перепишем их в HTML5, ладно. Я это говорю без сарказма, я сам в общем рад был забыть о Флеше и его глюках и не тыкать больше в его бесконечно раздражающий интерфейс. Но если подумать, Флеш как минимум был стабильным стандартом. Как минимум, игры, написанные на нем в 2011-м, без проблем работали в 2015-м, без всяких изменений. Можем ли мы надеяться на то же самое в случае таких прекрасных, богатых и сложных HTML5-приложений?
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: kuzh
2018-06-14 04:40 pm
Мне кажется, есть глобальная проблема: много программистов, которым постоянно нужно показывать, что им не зря деньги платят. Отсюда - нестабильность и излишняя волатильносто всего.
(Ответить) (Thread)
[User Picture]From: nihao_62
2018-06-14 06:19 pm
много программистов, которым постоянно нужно показывать, что им не зря деньги платят.

Много программистов, которые считают, что им деньги платят, чтоб вот сейчас - работало. а дальше трава не расти.
(Ответить) (Parent) (Thread) (Развернуть)
From: babior
2018-06-14 04:51 pm
Флеш, по моему мнению, пострадал именно из-за своей независимости. По сути, это интерактивное кино и ему, кроме плейера, ничего не надо. Игры работают до сих пор и делаются до сих пор. И эта его долговечность и всеядность просто была невыгодна, потому что именно изменяемость приносит деньги. Все проблемы программы, которые вы упоминаете, легко могли бы быть решены, если бы это было нужно, а проблемы с секьюрити вообще были сильно преувеличены и с HTML их не меньше.
(Ответить) (Thread)
[User Picture]From: f137
2018-06-14 07:14 pm
+500

Зачем Г и Э бесплатные и общедоступные конкуренты играм в сторах?

Я никогда не верил, что Джобс убивал флеш из-за его недостатков. Только из-за достоинств.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: vels
2018-06-14 05:05 pm
Если честно, не вижу проблемы.
За активное развитие технологий приходится платить отсутствием общепринятых стандартов. Это просто факт. Можно грустить, можно радоваться, но такова стоимость быстрого роста.

Если проект некому переписать под новый стандарт, значит у проекта недостаточная коммюнити разработчиков и пользователей. Значит он выпадает из быстро растущего рынка. Или на его место придёт другой, с новой командой и новой коммюнити. Собственно, именно этот переход и позволяет веб рынку так развиваться.

Лично я не вижу смысла тормозить рынок из-за слабых и никому не нужных проектов.
(Ответить) (Thread)
[User Picture]From: kuzh
2018-06-14 07:01 pm
Я как пользователь, никакого особого развития не вижу.
Но вам конечно, виднее

И всё же, с точки зрения пользователя веб на компьютере, что появилось принципиально нового и функционального лет за 5-10?

Edited at 2018-06-14 19:13 (UTC)
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: webface
2018-06-14 05:06 pm
У Гугла вообще плохо с концепцией "обмануть, а не сломать" в том что касается кода. К примеру даже в последней версии Андроида нет кнопки "обмануть приложение, сделав вид что получено разрешение считать контакты/камеру/смс". В итоге несмотря на фрагментарность пользовательских прав невозможно пользоваться кучей приложений не предоставив им доступ к настоящим данным.
(Ответить) (Thread)
[User Picture]From: pargentum
2018-06-14 05:57 pm
А хорошая идея была бы с такой кнопкой. Правда, обмануть - а что ему вместо камеры показать?
(Ответить) (Parent) (Thread) (Развернуть)
From: (Anonymous)
2018-06-14 05:08 pm
Это особенность уеб-бизнеса и уеб-десигнеров - они живут буквально одним днём. Долгосрочные инвестиции в веб-сайт как правило не окупаются и поэтому их никто не делает: нанимают самых дешёвых программистов, принимают их работу (проверяют сайт в текущих браузерах), после чего дают им пинка, а дальше наполнением сайта (если требуется) занимается девочка-редактор.
(Ответить) (Thread)
[User Picture]From: ulrith
2018-06-14 05:22 pm
это где такое - в рф? :)

"девочка-редактор" прямо вот бросилась в глаза, что-то из прошлого века
(Ответить) (Parent) (Thread)
From: algotua
2018-06-14 05:55 pm
Недавно наткнулся, что 10 летние mht файлы уже ничем не открываются. Вот и поддержка стандарта от MS
(Ответить) (Thread)
[User Picture]From: agathis
2018-06-14 07:42 pm
Если что, они как-то очень тривиально устроены, чуть ли не html упакованный в zip.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: gul_kiev
2018-06-14 06:44 pm
Где-то я недавно видел пометку "приложение не обновлялось больше двух месяцев", подразумевающую "не загружайте его".
Чуть ли не в google play.

Это старая тенденция, просто жизнь продолжает ускоряться.

У меня есть старый macbook pro, ещё вполне живой и устраивает по ресурсам. Но gmail не работает с устаревшей версией firefox, для firefox нет обновлений под эту версию macos, а macos не обновляется на этом железе (причём чуть ли не из-за драйвера touchpad).
(Ответить) (Thread)
[User Picture]From: mux22
2018-06-14 11:19 pm
из этого следует, что вашему компьютеру не менее восьми лет (потому что мбп 2011-го года выпуска до сих пор получают абсолютно все обновления, и отвалятся только на новой ос "Мохаве", которая выйдет осенью).

Если бы вы попробовали что-нибудь поделать в 2000м году на компьютере из 1992-го, у вас были бы проблемы посерьезнее, чем устаревшая версия файерфокса.

Не думаю, что применительно к железу жизнь продолжает ускоряться. К вебу - возможно, но аналогия не верная.

Edited at 2018-06-14 23:20 (UTC)
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: max630
2018-06-14 07:15 pm
А потому что "мусор на входе - мусор на выходе", что вы хотите? Если производители браузеров подлаживаются под сломанные сайты - в итоге весь интернет будет из сломаных сайтов.

У флеша на самом деле преимущество было не "стандард", а то что его можно было спокойно отключить на всех сайтах кроме ютуба. А если какой сайт начал бы предъявлять претензии, сразу было ясно - туда просто не ходить.
(Ответить) (Thread)
[User Picture]From: vyhuhol
2018-06-15 03:17 pm
Я подозреваю, что вы живёте не в Израиле. В Израиле в какой-то момент (в середине 2000-х) ВСЕ сайты были написаны на флеше, из-за проблем с биди. Причём, насколько я понимаю, можно было написать нормально, браузеры и фреймворки всё в основном поддерживали, но все решили, что зачем такой геморрой -- выяснять, как правильно, тестировать. Каждый блок текста -- отдельный апплет. Каждый рекламный баннер -- отдельный апплет.
Я раз в полгода-год ставил эксперимент -- включал FlashBlock, который заменял апплеты на статическую иконку флеша. Большинство сайтов выглядели как одна белая страница, по которой были разбросаны эти самые иконки.
Я помню, что в Рамат-Гане был sushi joint, у которого был неожиданно прекрасный сайт для заказов -- красиво свёрстанный, функциональный, шустрый, а главное -- на чистом html-е. Я суши заказывал почти исключительно оттуда, из принципа. (Вот такой идиотский прицип, да).
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: f137
2018-06-14 07:20 pm
Флеш как платформа для онлайн игр не имеет адекватной замены. И не видно пока, из чего такая замена может вырасти.

Вообще, меня поражает религиозная ненависть к флешу в "ай-ти" местах типа hackernews. Редко можно прочитать вменяемое мнение.

Edited at 2018-06-14 19:20 (UTC)
(Ответить) (Thread)
[User Picture]From: avnik
2018-06-14 11:41 pm
интерфейс между флешом и браузером (по крайней мере на линуксе и маке) придуман в 97м что ли году, Когда не было ни много-табов, ни флеш-баннера на каждой второй странице. Он просто не расчитан на современные условия и паттерны использования. Передизайнить его когда было еще можно -- адоб почему-то отказывался, проще похоронить.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: gianthare
2018-06-14 07:47 pm

А я вот хотел сказать, что с моей точки зрения у autoplay нет legitimate use cases, так что все правильно

(Ответить) (Thread)
From: (Anonymous)
2018-06-14 10:43 pm
+100500
(Ответить) (Parent) (Thread)
From: Alexey Meshkov
2018-06-14 08:27 pm

Flash

Не далее как неделю назад Adobe выпустили обновление флэша, которое ломает часть Flash-приложений(небольшую часть) в рамках борьбы с Meltdown/Spectre. В результате наша игра перестала запускаться сначала в Хроме, а потом везде. В течении пары часов мы подготовили обновление, которое заработало, но игра стала загружаться с разы дольше(20 секунд вместо 5).

Edit: Причём под игра перестала запускаться подразумевается, что один из методов был объявлен deprecated и начал внезапно(!) кидать исключение.

Edited at 2018-06-14 20:32 (UTC)
(Ответить) (Thread)
[User Picture]From: fedor_s
2018-06-17 08:18 pm

Re: Flash

Можете поподробнее: Что за метод?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: strangerdiary
2018-06-14 08:39 pm
квест "найди Хром 2011-го года
Это нынче проблема почти всех клиент-банков после запрета Java апплетов.
Кое-как работает в ИЕ, в хроме с файрфоксом поддержка официально рекомендует найти версии ранее такой-то иначе беда.
(Ответить) (Thread)
From: dmpogo
2018-06-14 09:55 pm
Делать mute на браузере - это что, трафик будет продолжать идти ?
(Ответить) (Thread)
From: (Anonymous)
2018-06-15 05:03 am
Сейчас средняя страница 5 метров весит без всякого звука и активно грузит аяксом всякое гавно по метру в минуту - нашли время по волосам плакать.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: digest
2018-06-14 10:25 pm
есть и другие убедительные аргументы в пользу "ошибки", а не "заглушки"

Есть, конечно. Заглушка продолжает съедать ресурсы клиента, ведь отключается только самый выход в звуковом драйвере, а декодер и D2A продолжают работать.

все занимались хорошим и правильным, казалось бы, продвижением веб-платформы

Не хорошим и не правильным. Не слежу за вебом последнее время, возможно, сейчас там все в порядке (сильно сомневаюсь), но когда-то это был ужас-ужас. Было такое ощущение, что веб забил на все наработки, теории и методологии программирования, создал WWW (в смысле Wild Wild West) с дикими по синтаксису, мешающими данные с их представлением, с отсутствием типов и минимальных средств отладки/тестирования, с жуткими костылями и бесконечными ключевыми словами, которые добавлялись и добавлялись в html/dhtml/css и в браузеры в тщетной попытке "напеть Рабиновичем" десктопные приложения.
(Ответить) (Thread)
[User Picture]From: veefore
2018-06-14 10:46 pm
У меня так в какой-то момент в хроме (и хромиуме) перестал выделяться текст пером графического планшета. Мышкой выделяется, пером нет. В более свежих драйверах есть какая-то настройка, которая помогает, но планшет старый, свежие драйвера его не поддерживают. Взял попробовать новый планшет, так из-за его драйверов кое-какие программы вообще не запускались, пришлось снести и вернуться к старому. Так и живем.
(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>