@Rumpelstilzchen

Rumpelstilzchen

Румпельштильцхен
Rumpelstilzchen

Дата рождения: 21.01.1924

0 я читаю 32 меня читают
1211 постов
3030 комментариев
Rumpelstilzchen
25 Jun 2017

Вот есть просто отличный пост касательно ситуации с ФФ, который почти во всем прав (кроме мелких деталей). Осторожно - многобукв.
"Расширения имеют полный доступ к внутренностям браузера. Они могут изменить всё что угодно, но при этом очень чувствительны к любым внутренним изменениям. Представьте, нет никакой инкапсуляции. Расширения имеют доступ абсолютно ко всему. В самых плохих случаях расширения могут патчить код некоторых функций UI браузера на лету. Малейшие изменения в этом ломают те или иные расширения. Причём расширения могут не просто ломаться, а продолжать работать неправильно, с утечками памяти, тормозить и т.д. Авторы расширений часто не следят пристально за своими расширениями, часто забрасывают. В итоге — при обновлениях браузера у пользователей часто случаются проблемы с расширениями, что часто проявляется в виде нестабильности или тормозов, что сильно портит репутацию браузеру. Мало кто из пользователей готов снисходительно относиться к подобным проблемам в обмен на максимальную гибкость. По этой же причине у разработчиков связаны руки. Они не могут позволить себе вносить серьёзные изменения в браузер.

Исторически Firefox всегда работал в один поток. Все вкладки, код всех расширений, код главного окна — всё в один поток (и всё на JS). И просто так это не изменить — все расширения, которые хоть как-то обращались с контентом вкладок, опирались на простой синхронный способ доступа к контенту вкладки. Это нельзя просто так разнести на потоки или процессы. Соответственно: А. Оно работает медленно; Б. Оно небезопасно (вкладки выполняются в процессе с обычными правами); В. Падает вкладка — падает всё. Последние несколько лет они это меняли, ввели многопроцессность и всё такое. Но до сих пор большинство расширений не поддерживают это, до сих пор большинство расширений опирается compatibility shims, которые разработчики добавили для совместимости, но эти заглушки делают браузер даже ещё медленнее, потому что добавилось взаимодействие между процессами. Расширения должны быть переписаны, скрипты для интерфейса и контента должны быть строго разделены, и должны общаться через механизм сообщений, то есть если раньше основной скрипт прямо из интерфейса мог обратиться к документу и наделать кучу работы, то сейчас всю работу должен делать отдельный контент-скрипт, который отдаст результат основному скрипту через установленный канал. Но авторы расширений не спешат с переписыванием. Как результат — внедрение многопроцессности много лет переносилось, дорабатывалось, перерабатывалось, и внедрили это совсем недавно, с толстым слоем совместимости, который делает всё ещё хуже (в плане производительности).

Mozilla уже несколько лет пишет новый движок Servo. Но пока расширения так сильно завязаны на внутренности браузера, о таких переменах в Firefox говорить не приходится. У разработчиков связаны руки.

Отказом от старых расширений и переходом на WebExtensions Mozilla решает сразу несколько критичных проблем:
1. Расширения больше не будут иметь доступ к внутренностям. Это развяжет руки разработчикам и они наконец смогут вносить существенные изменения в архитектуру браузера.
2. Расширения не будут ломаться после каждого обновления. У них будет узкое специализированное API, которое будет стабильно.
3. Многопроцессность сможет работать в полную силу. Вы сами назвали браузер «тормозиллой» не просто так. У Firefox действительно такая репутация. Ну а что вы хотите, в один поток много работы быстро не сделаешь, а внедрять многопроцессность они начали недавно, и то она много у кого не работает как надо из-за расширений.
4. Соответственно это и попытка исправить репутацию браузера, который воспринимается людьми как «тормозной», «глючный», с «регулярно отваливающимися расширениями».

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

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

Я объясняю, почему разработчики Firefox решились на этот тяжёлый шаг. Но я не рад, что они идут на этот шаг. У меня Firefox увешан расширениями с ног до головы и очень тонко настроен под мои нужды, что не может предложить ни один другой браузер. И я очень привык ко всем добавленным расширениями фишкам GUI, что делали мой сёрфинг гораздо приятнее. Я сам поддерживаю несколько расширений, и 3 из 4 не смогут быть перенесены на WebExtensions. И по этой причине я принял решение оставаться на Firefox 52 ESR так долго как это будет возможно.

Я сижу на Firefox с самой первой версии, а до этого был ещё и на Mozilla Suite. При этом всё это время я наблюдал полный спектр проблем с Firefox. Расширения отваливались. Иногда не целиком, иногда — частично, ломая попутно что-нибудь малосвязанное с этим. Расширения, которыми я пользовался, забрасывались авторами (и 2 из них мне пришлось самому форкнуть, доработать и поддерживать). Мои кастомные стили также иногда ломались, и их тоже приходилось иногда дописывать. Я программист, я могу себе это позволить. Я понимаю, почему оно так, принимаю это и не жалуюсь. Но что тут говорить об обычных пользователях, когда даже большинство других программистов точно так как и обычные пользователи жалуются на описанные выше проблемы?

Я мог быть снисходительным к описанным проблемам из-за тех безграничных возможностей кастомизации, что даёт уже устаревшая система расширений. Но 99% других пользователей это не волнует. Они хотят просто браузер, который работает быстро, стабильно, и не требует внимания на очередную починку очередной поломки. Тех, кто готов возиться с браузером для решения проблем даже раз в полгода или в год — ничтожно мало.

По сути, они это делают для всех ругающихся на Mozilla из-за проблем совместимости расширений между разными версиями Firefox. То есть если раньше перманентно ругались по чуть-чуть на пути Firefox 1.0 → Firefox 56, то после релиза Firefox 57 будет большой взрыв ругани, недели которого которого хватит на 3 года вперёд. А вот следом — проблема будет по сути решена. Нет полного доступа к внутренностям браузера → нет расширений, которые будут ломаться при изменении внутренностей → нет нытья о том, что «злая Mozilla всё опять поломала».

Я ещё в 2013 году (когда Opera отказалась от Presto) писал, что нужно быть благодарным Mozilla за то, что они упорно поддерживают свой гиковский подход, хоть он и проблемный и регулярно портит им репутацию. Вот, ещё 4 года продержались. Все 4 года кто-нибудь обязательно поливал их помоями из-за поломки очередного расширения или других связанных проблем. Хорошая демонстрация того, как сложно им было решиться на такой радикальный шаг по решению обозначенной проблемы. Очень уж не хотелось потерять свои уникальные расширения. Потратили уйму времени на внедрение многопроцессности в текущую архитектуру, только-только успели внедрить это в браузер, да и то не успели полностью перейти (и многие расширения до сих пор не адаптированы), слой совместимости, который сильно тормозит браузер, если расширения опираются на этот слой, всё ещё включен. Но в итоге исправление репутации «глючного и постоянно ломающегося браузера» перевесило и оказалось более важным. Разработчики в блоге говорят что ни при каких обстоятельствах они не будут переносить момент отказа от XUL, хотя некоторые на это и надеются (и я тоже сразу надеялся, что сроки перенесут)."
https://habrahabr.ru/post/329780/#comment_10242468

Тут все верно кроме разве что заявления о "толстом наборе shim-ов", в действительности это не совсем так, CPOW (врапперы) были изначально, но из повыносили уже пару релизов как, шимы если и есть то лишь кое где - смотрите сами http://arewee10syet.com/
Да и как я уже писал в Ночнушке шимы уже и так запрещены.
Проблема "аддоны имеют полный доступ к внутренностям браузера" - сииильно преувеличина. Да, последнее время я даже встречало пару постов о том, что "ололо, аддон может намалварить в ФФ, как же так". Ага, новость. А все годы до этого никто не знал об этом?
И то что "ололо, расширения могут сломать браузер" - тоже сгущение красок. Могут, да. И ломались и ломали после обновления браузера. Хотя темы скажем ломали куда чаще. И решалось это либо 1) обновление расширений либо 2) сносом протухших.
Почему все годы до этого это было нормой, а сейчас вдруг стало проблемой?
Что действительно печально - "Я мог быть снисходительным к описанным проблемам из-за тех безграничных возможностей кастомизации, что даёт уже устаревшая система расширений. Но 99% других пользователей это не волнует. Они хотят просто браузер, который работает быстро, стабильно, и не требует внимания на очередную починку очередной поломки. Тех, кто готов возиться с браузером для решения проблем даже раз в полгода или в год — ничтожно мало."
Вот это, бро, реально беда. Напомню, неоднократно утверждалось инженерами Мозиллы, что ~60% юзеров ФФ ВООБЩЕ не используют никакие аддоны. И они, ес-но, не почувствуют никаких неудобств.
так что, это не Хром победил. Это тупая масса "не хочу ничего настраивать мне и так хорошо победила.

25 Jun 2017

Кстати о. А нормальная документация у нового API существует или опять в хром глядеть надо?

25 Jun 2017

Вроде как есть. Но вот что пишут на Опеннете
"Активно читаю рассылки разработчиков аддонов которые пока не перешли, им тупо не хватает функционала api WE для реализации хотя бы основных функций своих аддонов.
А мозилла не может/не хочет их реализовывать, потому что без согласия с хромогуглом никак не выйдет. А гугл никогда не согласится, потому что самая частая причина закрытия всех багов в их трекере это пометка WONTFIX, типа шли бы вы все в баню... "

#ojtly/2 в ответ на /1
25 Jun 2017

Они там себе «неймспейс» сделать не могут отдельный?

#ojtly/3 в ответ на /2
25 Jun 2017

Хз, само не понимаю. Сколько лет жили со своим API и как ни как было нормально. Теперь вынуждены догонять будет Хром вечно. Через год Хром решил что-то в корне поменять и опять начинай с начала.
С чего-то вдруг совместимость с Хромом стала высшей целью. Вот только как всегда не там где надо, ага.

#ojtly/4 в ответ на /3
26 Jun 2017

Они же там понимают, что 60% - это те юзеры, которым лису посоветовали/поставили остальные 40 (наверное даже меньше, просто кому-то кроме лисы добавили ещё и всякие необходимые вещи вроде AdBlock'а)?

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

26 Jun 2017

А еще интересно понимают ли они что юзеров без аддонов ничего на ФФ не держит? Завтра они легко уйдут на Вивальди или еще что.
А вообще, имхо, они там давно уже ничего не понимают.

#ojtly/6 в ответ на /5

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.