Why new Firefox 13 'load tabs on demand' is bad UX.
renesd.blogspot.co.uk
renesd.blogspot.co.uk
The loading of a page hardly takes any time at all, and I generally have to reload the page when I finally get to older tabs anyways. And, this is silly, but it feels wasteful to have all tabs loaded all the time when I'm only using one or a few at any given moment.
Also I wouldn't mind if someone invented the "next great thing" to get us away from tabs. They are unwieldy, encourage tab-hoarding, and it is difficult to quickly locate a specific tab within a nontrivial number of open tabs. My overloaded tab bar causes more anguish than my email inbox.
Putting in the work to just improve the speed is the hard fix usually. But I guess firefox and chrome are fairly optimized for loading already.
However, some good heuristics might help. Things like number of tabs, most common tabs used, active tab, time to load and responsiveness(frame rate, latency etc) would be good indicators.
I'm not sure how good hard coding stuff in like number of tabs would be. Whilst just loading up to 8 tabs would probably work, these numbers seem to change over time. Like the oldIE 4 connections limit for example. But! With frequent automatic updates, this value could be tweaked later if needed.
Cpu, and IO could be set based on the indicators as well.
If *n* tabs >= x
Load tabs on demand
Else
Load tabs in background
x can be set by default at some arbitrary number and also be changed.We could use much more subtle algorithms - what about loading visible page, then queuing up X background tabs to concurrently load (based tab order)? What about a logarithmic backoff (ie, load up visible and several background pages, then slowly load others)?
Fact is, user-time is valuable, compute time (and for most users) bandwidth is not. What's valuable should be prioritized.
I've said it times and again: Chrome is optimized for a single use case (i.e. few tab users) at which it excels but tends to break down quickly once you leave its comfort zone, unless you have a fairly powerful system. Maybe the project leader nudge, nudge could divert some resources to make Chrome scale better. ;-)
Plus, it is much better for over-all performance since some websites switched to an interface that polls for updates in the background.
Of course I know I'm not a typical user, so I wouldn't really argue against this being an option that is off by default. But it would very much hurt my user experience if it weren't available at all.
I just wanted to mention my viewpoint (started writing it before I saw the other replies), since I find it an important improvement. For example, I won't use Chromium regularly besides testing things in it, because it would be way too painful for me.
In the "General" preferences in Firefox 13, if you have "Show my tabs from last time" selected, there's a checkbox for "Don't load tabs until selected".
In Firefox 15 and later, the checkbox is in the "Tabs" pane so it's always accessible: http://zpao.com/posts/making-restore-on-demand-accessible/
However, I'm of the opinion that options are bad UX too (until you find them :). It's better when the experience is just good. I know that's asking a lot... but I think it's possible with some combination of the ideas mentioned in this discussion to automatically do the right thing for most users.
[1] It would be interesting to define a heuristic for what qualifies as a "simple" webpage. Perhaps anything that doesn't do any JS setTimeouts or websocket connection creation would count? It'd likely be best to just leave it to the web server to declare "simplicity" of a page as a header, the same way companies can declare "recyclable" on boxes. One would wonder if any company would bother to use this if it meant their own tab would seem slower-to-reload than their competitors', though...
Might have to look into trying something like that out; I work on Gecko, but in totally different parts of the code, so it'd be a fun little experiment if nothing else.
Edit for @barrkel: you can also do more advanced resource shaping on some OSen. Like limiting the number of network connections per second, and limiting the bandwidth. There are also cpu throttling possibilities where you can make sure a process only runs max 10% of cpu. Or as you say, putting scheduling into the app is another possibility.
For a thread, that's best done with explicit coding; for a process that isn't sharing resources with other processes, you can get away with more invasive freezing from the outside.
However, with that being said, I'm not a big fan. I think agumonkey's throttled loading is a nice idea though.
The new change helps out the 50-400 tab people a lot. Each group could all do with a good UX though.