Holy cow, I wrote a book!
Via the suggestion box, Dominic Self asks
why screen resolution is a global setting rather than a per-user setting.
Well, first of all, it's not even a global setting.
It's a session setting.
That it's not a global setting is not readily apparent most of the time
since only Windows Terminal Server is set up to support multiple
simultaneous interactive sessions.
On Windows Terminal Server, you specify the properties of the virtual
monitor you wish to connect with, including resolution,
and the server accommodates your wishes.
Well, up to a point.
I mean if you ask for a 1,000,000×1,000,000 pixel screen,
the server is probably going to say "As if!"
(The Remote Desktop Connection feature found in, for example,
Windows Vista Ultimate is basically the same thing,
but on a smaller scale.)
You can have ten different people logged on, each using a different
Some users might be running at lowly 640×480, others at 800×600
and still others at 1024×768.
Some of them are running in 16-color mode, others 8-bit color,
and some really adventuresome people with a lot of network bandwidth
running at 24-bit color.
You can even have the same user logged on more than once,
with each session running at a different screen resolution.
If the resolution settings really were per-user, you'd have some
conflict resolution to deal with.
If a user logs on and specifies a resolution different from the one
stored in the user profile, does the new resolution overwrite
the existing one? Or is the new resolution just a temporary resolution
and the original one should stay?
If a user tries to log on a second time with a conflicting resolution,
is the second resolution ignored? Does the second resolution force
the first session to change its resolution?
Do you just get two sessions running with different resolutions?
Which one gets saved as the user's preferred resolution?
You also have to come up with a way to customize the resolution of
the screen when nobody is logged on, a way to reconcile the effect
of roaming profiles, what happens if you do a Run As on a user whose
screen resolution conflicts with the user who opened the session.
I'm not saying that these problems can't be solved.
They probably can, given enough thought, but not all of
the solutions will please everybody all the time,
because no matter what you do,
somebody will tell you that you're an idiot.
And think of all the time and effort necessary to
design how the feature should work,
nail all the boundary conditions
("What happens if
your per-user setting conflicts with an administrative policy?"),
then code it up, write automated tests for it,
run it through usability exercises
("Does the behavior match what users intuitively expect?" The answers
may surprise you.) write up the documentation and help text,
and continue maintaining the code, tests, and documentation for the
feature's anticipated lifetime (which in this case is probably forever).
Could all those resources have been spent on something that would
have a greater total benefit to the customer base?
(The answer to that is always "Yes"—everybody and her sister-in-law
can find a way to finish the sentence, "I can't believe they wasted
all that time on this stupid feature instead of fixing...")
Remember, every feature starts with
minus 100 points.