Talk:Firefox/Sprints/Perception of Performance

From MozillaWiki
Jump to navigation Jump to search

I'm not sure if this is the right place to discuss current design, but let me try.

In short, I don't believe new behaviour is correct. The problems I see are:

1. It changed scrolling from being a stateless system (response depends on input) to stateful system (response depends on input and past inputs). This is hardly expected imho.

2. Despite its name "acceleration" it doesn't actually implement acceleration (geometric growth) but explosion (exponential growth). It might be why it's so hard to control.

3. The system is unstable: to achieve constant scroll, user has to start scrolling fast, then (after threshold) he needs to slow down. As he slows down enough, acceleration disengages and he needs to scroll fast again, repeating the cycle. Constant output requires oscillating input.

The outcome is that at least for me, this makes controlled scrolling (ie not to the very start or end of document) completely impossible.

Can I please propose a completely different approach, 100% identical design to what "pointer acceleration" is: if the user scrolls at speed X, actual scroll is at speed X+a*X^lambda where lambda>1.

The implementation (for lambda=2) would be:
1. t = get the time between last scroll event and current scroll event;
2. scroll document by base_scroll + (1/t)*acceleration;

This means acceleration kicks in every time user scrolls fast, not scrolls for some time. Nice, predictable, stable memoryless system.