Notes on comments.
Welcome to our blog dedicated to the engineering of Microsoft Windows 7
We’ve booted the machine, displayed stuff on the screen, launched programs, so next up we’re going to look at a pretty complex topic that sort of gets to the core role of the graphical user interface—managing windows. Dave Matthews is program manager on the core user experience team who will provide some of the data and insights that are going into engineering Windows 7. --Steven
The namesake of the Windows product line is the simple “window” – the UI concept that keeps related pieces information and controls organized on screen. We’ll use this post to share some of the background thinking and “pm philosophy” behind planning an update to this well established UI feature.
The basic idea of using windows to organize UI isn’t new – it dates back (so I hear) to the first experiments with graphical user interfaces at Stanford over 40 years ago. It’s still used after all this time because it’s a useful way to present content, and people like having control over how their screen space is used. The “moveable windows” feature isn’t absolutely needed in an operating system – most cell phones and media center type devices just show one page of UI at a time – but it’s useful when multi-tasking or working with more than one app at a time. Windows 2.0 was the first Windows release that allowed moveable overlapping windows (in Window 1.0 they were only able to be tiled, not overlapping. This “tiled v. overlapping” debate had famous proponents on each side—on one side was Bill Gates and on the other side was Charles Simonyi). In addition, Windows also has the unique notion of "the multiple document interface” or MDI, which allows one frame window to itself organized multiple windows within it. This is somewhat of a precursor to the tabbed interfaces prevalent in web browsers.
As a side note, one of the earlier debates that accompanied the “tiled v. overlapping” conversations in the early Windows project was over having one menu bar at the top of the screen or a copy of the menu bar for each window (or document or application). Early on this was a big debate because there was such limited screen resolution (VGA, 640x480) that the redundancy of the menu bar was a real-estate problem. In today’s large scale monitors this redundancy is more of an asset as getting to the UI elements with a mouse or just visually identifying elements requires much less movement. Go figure!
From Windows 2.0 to Vista.
An area I’ve been focusing on is in the “window management” part of the system – specifically the features involved in moving and arranging windows on screen (these are different than the window switching controls like the taskbar and alt-tab, but closely related). In general, people expect windows to be moveable, resizable, maximizable, minimizable, closeable; and expect them to be freely arranged and overlapping, with the currently used window sitting on top. These transformations and the supporting tools (caption buttons, resize bars, etc) make up the basic capabilities that let people arrange and organize their workspace to their liking.
In order to improve on a feature area like this we look closely at the current system - what have we got, and what works? This means looking at the way it’s being used in the marketplace by ISVs, and the way it’s used and understood by customers.
Caption buttons give a simple way to minimize, maximize, and close. Resizable windows can be adjusted from any of their 4 edges.
As pointed out in the previous Taskbar post, on average people will have up to 6 – 9 windows open during a session. But from looking at customer data, we find that most time is spent with only one or two windows actually visible on screen at any given time. It’s common to switch around between the various open windows, but for the most part only a few are visible at once.
Windows Feedback Panel data
As part of our planning, we looked at how people spend their time and energy in moving and sizing their windows. This lets us understand what’s working well in the current system, and what could be improved.
For example, we know that maximize is a widely used feature because it optimizes the work space for one window, while still being easy to switch to others. Users respond to that concept and understand it. Since most of the time users just focus on one window, this ends up being very commonly used. We know that for many applications people ask for every single pixel (for example spreadsheets where a few pixels gain a whole extra row of column) and thus the beyond maximize features for “full screen” become common, even for everyday productivity.
An issue we've heard (as recently as the comments on the taskbar post!) with maximize in Vista is that the customized glass color isn’t very visible, because the windows and taskbar become dark when a window is maximized. (In Vista you can customize the glass window color – and in 29% of sessions a custom color has been set). The darker look was used to help make it clear that the window is in the special maximized state. This was important because if you don’t notice that a window is maximized and then try to move it, nothing will happen - and that can be frustrating or confusing. For Windows 7 we’re looking at a different approach so that the customized color can be shown even when a window is maximized.
Interestingly, people don’t always maximize their windows even when they’re only using one window at a time. We believe one important reason is that it’s often more comfortable to read a text document when the window is not too wide. The idea of maximizing is less useful on a wide monitor when it makes the sentences in an email run 20+ inches across the screen; 4 or 5 inches tends to be a more pleasant way to read text. This is important because large desktop monitors are becoming more common, and wide-aspect monitors are gaining popularity even on laptops. Since Windows doesn’t have a maximize mode designed for reading like this, people end up manually resizing their windows to make them as tall as possible, but only somewhat wide. This is one of the areas where a common task like reading a document involves excessive fiddling with window sizes, because the system wasn’t optimized for that scenario on current hardwarwe.
Resolution data suggests wide aspect-ratio monitors will become the norm.
Being able to see two windows side by side is also a fairly common need. There are a variety of reasons why someone may need to do this – comparing documents, referring from one document into another, copying from one document or folder into another, etc. It takes a number of mouse movements to set up two windows side by side – positioning and adjusting the two windows until they are sized to roughly half the screen. We often see this with two applications, such as comparing a document in a word processor with the same document in a portable reader format.
Users with multiple monitors get a general increase in task efficiency because that setup is optimized for the case of using more than one window at once. For example, it’s easy to maximize a window on each of the monitors in order to efficiently use the screen space. In a Microsoft Research study on multi-tasking, it was found that participants who had multiple monitors were able to switch windows more often by directly clicking on a window rather than using the taskbar, implying that the window they want to switch to was already visible. And interestingly, the total number of switches between windows was lower. In terms of task efficiency, the best click is an avoided click.
MSR research report
Single monitor machines are more common than multi-mon machines, but the window managing features aren’t optimized for viewing multiple windows at once on one monitor. The taskbar does has context menu options for cascade, stack, or side-by-side, but we don't believe they're well understood or widely used, so most people end up manually resizing and moving their windows whenever they want to view two windows side by side.
An interesting multiple window scenario occurs when one of the windows is actually the desktop. The desktop is still commonly used as a storage folder for important or recent files, and we believe people fairly often need to drag and drop between the desktop and an explorer window, email, or document. The “Show Desktop” feature gives quick access to the desktop, but also hides the window you're trying to use. This means you either have to find and switch back to the original window, or avoid the Show Desktop feature and minimize everything manually. It’s very interesting to see scenarios like this where the people end up spending a lot of time or effort managing windows in order complete a simple task. This kind of experience comes across in our telemetry when we see complex sequences repeated. It takes further work to see if these are common errors or if people are trying to accomplish a multi-step task.
To find successful designs for the window management system, we explore a number of directions to see which will best help people be productive. From extremes of multi-tasking to focusing on a single item, we look for solutions that scale but that are still optimized for the most common usage. We look at existing approaches such as virtual desktops which can help when using a large number of different windows (especially when they are clustered into related sets), or docking palettes that help efficiently arrange space (as seen in advanced applications such as Visual Studio). And we look at novel solutions tailored to the scenarios we're trying to enable.
We also have to think about the variety of applications that the system needs to support. SDI apps (single document interface) rely heavily on the operating system to provide window management features, while MDI apps (multiple document interface) provide some of the window management controls for themselves (tabbed UI is an increasingly popular approach to MDI applications). And some applications provide their own window sizing and caption controls in order to get a custom appearance or behavior. Each of these approaches is valuable, and the different application styles need to be taken into account in making any changes to the system.
For Window 7 our goal is to reduce the number of clicks and precise movements needed to perform common activities. Based on data and feedback we've gotten from customers, a number of scenarios have been called out as important considerations for the design. As with all the designs we’re talking about—it is important to bring forward the common usage scenarios, make clear decisions on the most widely used usage patterns, address new and “unarticulated needs”, and to also be sure to maintain our philosophy of “in control”. Some of the scenarios that are rising to the top include:
This last point is important because the feeling of responsiveness and control is a key test for whether the design matches the way people really work. We put designs and mockups in the usability lab to watch how people respond, and once we see people smiling and succeeding easily at their task we know we are on the right track. The ultimate success in a design such as this is when it feels so natural that it becomes a muscle memory. This is when people can get the feeling that they’ve mastered a familiar tool, and that the computer is behaving as it should.
This is some of the background on how we think about window management and doing evolutionary design in a very basic piece of UI. We can’t wait to hear feedback and reactions, especially once folks start getting their hands on Windows 7 builds.
About windows arrangements, I have a request. This is not easy to implement, but I need this feature a lot. I wish I have one more caption button, FIXED SIZE. Actually it is a checkbox. When I check the box, it will save the window state for this application. After that, I can resize/move around. When I close window, it will not save the later changes.
This is particularly useful for IE. When I close IE pop-up, it saved the small window size, which is not what I want. A lot of time I have to re-save the size I want, very annoying.
A lot of times I change window size temporarily for specific occasion. But I don't want to save those temporary windows state. This feature allows me to set which application will always launch with consistant size.
I dislike when that one happens! Rather than add another button or space to click, I do the same thing in one click with a "power user" trick which is when you see the small window open don't close it until you first open up another copy of the application with the "normal" window size. Then close the small one and then the normal one.
Of course this is a pain and close to impossible for anyone to find, but likely a better solution than adding a fourth UI affordance on the title bar.
I agree. But I am yet to think of a better solution. >_< I hope someone in your team pop some magic out of their brains.
One thing I'm concerned about though is that if the title bar is glass and transparent, won't that be rather distracting, and possibly hard to see if you have a black background?
In Vista, since it was always a solid color, you always would know what sort of situation you would get in.
However, with Glass / Aero enabled, I can definitely see things getting distracting while working, especially if you have a DreamScene desktop with a video playing in the top of the title bar.
How are you guys planning to work around these issues?
Linux has Compiz(Fusion). What would be cool was if Window Desktop Manager api's allowed for that kind of flexibility.
A very simple feature that I think would be extremely useful is the ability to have windows snap to the edges of the screen similar to the way it is done in the linux Gnome GUI. I frequently find myself trying to position a non-full screen window against the edge of the screen and it's not easy to do without some kind of snapping mechanism.
Arranging windows in a split-window fashion is actually quite easy:
While pressing CTRL select multiple windows in the taskbar. Then right-click them and select one of the tiling options...
You see compiz today?? See longhorn in 2003 4015lab6
Compiz copy Windows !
Why not add an option to "fix window size" as a right click on the application window... bar, for lack of a better term? One more to Restore, Move, Minimize, Maximise, and Close wouldn't hurt, and it would solve the issue without real visual clutter.
In addition to Mysterlee's comments, how about being able to double-click the border of a window which causes that side of the window to snap to the edge of the screen?
I know you can tile windows, however there's no way to just snap a window to the edge of the screen by dragging it there without having to tile them.
I agree, that would be very useful.
I found the issue with dragging objects onto the desktop interesting, as I myself have experienced it on numerous occaisions. I generally have far more than 9 widnows open at a time (right now it's 13, would have been closer to 20 before)
I was thinking perhaps using a solution like this:
The explorer window is on top and has focus; there's a hole bunch of other windows covering the desktop behind it (including, for the sake of argument, a maximized window, so the whole desktop is covered).
There is another explorer window (for example) directly beneath the one that is in focus. The user drags an object from the currently focused window over the second explorer window (he doesn't drop, just hovering at this point)
The window could then highlight itself, or the rest of the windows could dim (kinda like secure desktop in UAC prompts) - not necessary, but i think it would be cool - to show the user clearly what window will receive the object when the release the mouse button.
Then you make it so that if the user hovers over the same window for like 4-5 seconds, all of the windows (except the explorer window we're dragging from) disappear, or even fade to a low opacity level (this would suit Aero nicely!)
Not sure if that's a practical solution, but yeah - that's all I can really think of doing
A very useful feature would be the ability to split the deskotop into separate portions, especially on larger screens.
For example, I might want to maximize my Messenger window to a small part on the right hand side of the desktop and still have the ability to maximize other windows into the remaing space. Non-maximized windows would be able to float across both (all) parts of the desktop.
"Interestingly, people don’t always maximize their windows even when they’re only using one window at a time."
Don't you think it's because the window goes damn ugly (strong black title bar) when maximized? I do everything I can to maximize a window by hand just to prevent from having the black title bar.
I also agree with Ice_Eagle:
"One thing I'm concerned about though is that if the title bar is glass and transparent, won't that be rather distracting, and possibly hard to see if you have a black background?"
Transparency is at most distracting. In fact is has been around since Windows 2000 and I have seen no application use it efficiently.
It would be nice if Windows 7 could go beyond the in-store eye candy (Windows-Flip, Transparency, Animation) and make it a real usable system. The Task Bar is another example, there is a strong reflection in the upper part of the black bar which makes the text in the Task Bar hard to read. Same thing goes for the Windows Mail toolbar.
I actually feel I am loosing productivity while using Vista despite all the new features, just because of the look.
In all the years I've used Windows, one feature I've frequently desired to see is a standardized "always on top" button. This is sometimes implemented in certain applications as a pin icon, but it has never been made a standardized feature common to all resizeable windows.
One use case for this is when I have one focal document (say, a Word Doc), and several other reference documents opened on the screen that I'm cutting and pasting from. Since I'm only cutting and pasting from one region of those documents, the main document often overlaps portions of the reference documents I don't care about. But everytime I change my focus to the reference documents to copy, I have to find and click on the main document to bring it back to the front in order to paste. In this case (and others like it) it would be great if there was a pin icon that I could press on the main document to keep it on top.
This seems to be such a simple thing. There's an API to support it, there is precedent for it, and it would be incredibly useful.