Hi,

I was the one who originally implemented scroll anchoring in Firefox and just
want to say that I agree with Emilio here.

Scroll anchoring is a cool feature and would be great to have, but these
difficulties that Emilio has mentioned have been here since day-1.

It would be great to find a path forward here, but so far I haven't seen a
clear option that avoids the need for heuristics (hacks).

If it's decided to remove this feature from Gecko, it might be worth taking a
step back and trying to finding an alternative way to reduce layout jank.

Thanks,
Ryan


On Fri, Sep 27, 2019, at 8:08 AM, Emilio Cobos Álvarez wrote:
> And, to be clear, we _can_ fix these compat issues, some way or another.
> 
> One thought is to limit the amount of scroll adjustments without user 
> scrolling or stuff like that, which would prevent the "you get stuck on 
> the page".
> 
> Making anchoring opt-in rather than opt-out is another option, but that 
> defeats most of the purpose of the feature, I guess.
> 
> See also some of the Chromium docs on the compat issues they found[1] 
> and how were they trying to fix them before adding the 
> "layout-affecting-property changed" heuristic, which is what is on the 
> spec right now and what they implement.
> 
> I just think that these are very hacky heuristics that are just going to 
> bring a lot of compat pain and developer confusion.
> 
> It doesn't help that all these things can break or not depending on the 
> speed at which the user scrolls, the amount of scroll events that the 
> user dispatches, the timing of these events relative to other events, etc...
> 
>   -- Emilio
> 
> [1]: 
> https://docs.google.com/document/d/1nQAO4MYCDMn0rTkn_-WI6gjumk3Qi2Bn-MGuB3NlVxE/edit
> 
> On 9/27/19 2:23 PM, Emilio Cobos Álvarez wrote:
> > Hi,
> > 
> > (cc'ing webkit-dev@ and blink-dev@ in case they have feedback or 
> > opinions, as WebKit is the only engine which does not implement scroll 
> > anchoring, though I don't know if they plan to, and Blink is the only 
> > other engine that does implement it. Please reply to dev-platform@ though.)
> > 
> > TLDR: Scroll anchoring is really a mess.
> > 
> > I didn't do the initial implementation of the feature in Gecko, but I've 
> > done a ton of work over the last few months to fix compat issues in our 
> > implementation (see all the bugs blocking [1]).
> > 
> > At this point, our implementation is mostly compatible with Blink, but 
> > even with a bug-for-bug compatible implementation, we did get compat 
> > issues because of different content being served for different browsers, 
> > or because our anti-tracking protections changing the final content of 
> > the page slightly ([2] is an example of bug which only reproduces with 
> > ETP enabled only, but whose reduced test-case renders the site unusable 
> > in Chrome as well).
> > 
> > If you hit one of the broken cases as a user you think the browser is 
> > completely broken, and the site is just unusable.
> > 
> > I've fixed those by tweaking the heuristics Gecko uses. Those extra 
> > heuristics have also caused other compat issues, like [3], reported 
> > today, which will require other adjustments to the heuristics, etc...
> > 
> > On top of that, the spec is not in a good state, with ton of open issues 
> > without feedback from the editors [4].
> > 
> > So right now I'm at a stage where I think that the feature is just not 
> > worth it. It doesn't behave predictably enough for developers, and you 
> > have no guarantee of it behaving consistently unless you test a 
> > particular browser, with a particular content in a particular viewport 
> > size... That's not great given the current dominant position of 
> > Chromium-based browsers.
> > 
> > On top, issues with scroll anchoring are pretty hard to diagnose unless 
> > you're aware of the feature.
> > 
> > All in all, it doesn't seem like the kind of feature that benefits a 
> > diverse web (nor web developers for that matter), and I think we should 
> > remove the feature from Gecko.
> > 
> > Does anyone have strong opinions against removing scroll anchoring from 
> > Gecko, based on the above?
> > 
> > Thanks,
> > 
> >   -- Emilio
> > 
> > [1]: https://bugzilla.mozilla.org/show_bug.cgi?id=1519644
> > [2]: https://bugzilla.mozilla.org/show_bug.cgi?id=1561450
> > [3]: https://bugzilla.mozilla.org/show_bug.cgi?id=1584499
> > [4]: https://github.com/w3c/csswg-drafts/labels/css-scroll-anchoring-1
> > _______________________________________________
> > dev-platform mailing list
> > dev-platform@lists.mozilla.org
> > https://lists.mozilla.org/listinfo/dev-platform
> _______________________________________________
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
>
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to