[whatwg] (no subject)

Ric Hardacre ric.hardacre at cyclomedia.co.uk
Tue Jun 9 09:33:59 PDT 2009

This is a proposal that I posted to w3.org a year ago, and it didn't really get
any debate there so I'm hoping to provoke some here, i wont go into too much
detail instead linking to the original posts but i'll give a bit of an overview

Essentially the proposal is for a static DOM object which has read only settings
exposed to javascript (ultimately one day sendable via HTTP to the web server to
superceed UserAgent sniffing), the browser would be left with the task of
presenting the various options to the user (global, per domain, etc.). Javascript
has allowed web sites and applications increased levels of functionality but at
the same time allowed for more possibilities of special effects and multimedia,
these are two seperate sides of the javascript coin and it would be useful to
have the former without being required to witness the latter.

One example I frequently use is google maps, which runs fine with javascript on
my low powered "surfing" laptop - until you change zoom levels - then it takes
over a minute to interpolate to the next zoom level, whilst this probably down to
bad coding (a simple setTimeout for 2 seconds hence could force the interpolation
effect to stop) it's a shame that this one effect brings the entire
web-application of google maps into an unusable state and personally i don't
think that the fact that my laptop doesnt have a GPU should mean i'm relegated to
use the NOSCRIPT version of a site. For the sake of one flashy, un-needed effect. 

AFAIK there is a "light" version of google maps that uses little or no javascript
but apart from the transition effect it runs fine. Which brings me back to the
proposal, if there were an "AllowTransitions" boolean that developers could check
then they would know what experience to present the user with:

function Zoom_In()
	if( window.UserPreferences.AllowTransitions )
		Interpolate_To_Zoom( ++zoom );
		Jump_To_Zoom( ++zoom );

this would still allow me to use the Javacsript map application on my low powered
machine without resorting to a no-script-at-all version. 

Another aspect is rich content, if i'm surfing whilst listening to mp3s i might
not want to be interrupted by sounds or videos playing and might want to turn
web-sounds off, or maybe i'm watching a movie on the train but dont want my web
mail to audibly alert me to a new mail message. Instead i could have a global
volume control (or per tab...) in my browser rather than the curernt situation
where you have to set it for each and every flash applet on each and every web
site. Also I might need roaming profiles, if I'm connected via WiFi i might be
happy to have videos playing, but if I'm out in the countryside, and i have a
limited/expensive GPRS data plan i dont want videos to suck up all my bandwidth
and money - if the browser could itself switch between high and low bandwidth
profiles then this would be a smoother user experience than again having to
bookmark a site's full and lite pages seperately, or have the site try to second
guess my desires through the capabilities my user agent string suggests. 

Example properties might be:

MaxStreamRate (in Kb per seconds - with a popup warning the user if they attempt
to play something wider)
AutoPlayVideo (if false then video content should never start playing without a
direct click on a "play" button)
AutoPlayAudio (as above)
AudioVolume   (0 = mute, 99 = full)

Note that the last two do not crosstalk - AutoPlayAudio may still be true if
AudioVolume is 0.

At the moment the user is at the whim of site builders about how to turn features
on and of, stop and start audio, control volume or switch between lite and full
versions of sites. These sometimes need the user to be logged and/or cookies to
be remembered between sessions or instead the web host will simply attempt to
dictate the version of a site you get depending on your user agent string.
Currently most browsers allow images to be turned on and off very easily (albeit
usually buried deep in a menu tree). By centralising what it is the user wants to
happen we can make the web a much more pleasant and consistent experience and one
that is ready for users who may literally walk from a high bandwidth high
availability connection to a low bandwidth one whilst surfing - if their PDA or
laptop could hook into their connection settings and "see" that the connection
has switched wouldn't it be great if it could automatically tone the richness of
the web experience down with the user not having to lift a finger...

Revised Proposal

Original Proposal

Ric Hardacre
(MCAD, MCP, HTML,CSS & JS hacker since '95)

More information about the whatwg mailing list