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.
One thing that I've always wanted is sticky windows. If your moving a window it should loosely 'stick' to other windows already around, and screen edges. Also when expanding windows, dragging a window down should stick when it gets to the bottom of the window next to it.
Winamp has done this wonderfully well for ages.
Another option would be a 'sticky' grid, optional of course (maybe by two button dragging, or a key).
A lot of commenters seem to be asking for features for Windows 7. I think the Windows 7 planning was completed a long long time ago. Vista shipped at the end of 2006. What do you think they have been doing during all of 2007 and most of 2008 ? It seems unrealistic to assume that in October of 2008, the Windows 7 team is saying "What features should Windows 7 have ? I don't know, let's look at the comments on our blog, maybe we'll get some ideas."
I would love to see something like Mac OS's Springloaded folders. Drag something over a folder and hover, it pops up, drag over to the next folder, drop it.
Something I would love to see integrated into Windows is the Virtual Desktop concept from Linux. Even in a multi-monitor environment it has it's uses, and in a single monitor environment it's invaluable. The Virtual Desktop Manager that's part of powertoys is a start, but it's no where near as seemless and well organised as that under Linux (understandable as it's trying to shoehorn a feature in, instead of being integrated in the UI itself)
Great article! One of the things you mention is my major beef with Excel 2007: MDI/SDI interfaces.
In Excel 2007, if you open up two spreadsheets, the taskbar displays two instances of Excel. However, they are open in the same window, maximised. In order to copy data between them, one must un-maximise their MDI instance and arrange/compare as necessary.
It would be MUCH nicer if the two taskbar instances reflected two separate, ACTUAL windows of Excel, allowing me to move, resize, visually compare, copy & paste as necessary. To me, it would be a much more natural process.
There is some really good stuff here! Some more stuff:
1. Windows needs an Exposé-like feature. I want to see all of my windows at once.
2. Window isolation mode. Let me isolate a window or several windows without minimizing or maximizing so I can drown out the distractions. Example: Isolator (http://willmore.eu/software/isolator/)
3. Related/group windows. Think IE8's tab groups.
Yes we expect windows to be resizeable etc... Are we going to see the command prompt window follow suite?
I agree with Ted Howard but I would like to go further.
I often start a long-running process, whether installing updates, opening a web site that can take over a minute to come up, or whatever. At the time I start the process, the relevant window has the focus.
Then while I'm waiting I deliberately switch to a new window. Maybe it's Visual Studio, maybe it's Word so I can update some notes, or maybe it's IE so I can read a news article. It's a time saving technique so I can accomplish something instead of just staring at the screen while my original activity finishes.
My problem is that when the background process is done or gets an error, it pops up into the foreground and steals focus. If I'm reading a news article or writing a paragraph, I'm in the middle of a thought and I do NOT want a window to pop up on its own initiative and cover what I was doing. And if I'm typing it's even worse - my typing goes to the wrong window.
I do want to know when the background process is done, so flashing the taskbar icon (which you also do sometimes) seems like a fine way to let me know that another window is ready for attention without stealing focus.
Some web sites are particularly bad - IE will pop to the front and steal focus even though the site isn't completely loaded - some will pop to the front falsely 3 or 4 times and I have to re-select the window I'm really using each time. What a pain.
And as others have pointed out, if the window that pops up unexpectedly is "updates have been installed - do you want to restart now?" then something I'm typing into Word can initiate a restart of Windows without my permission which can cause lost work and is completely unacceptable.
There are a few warnings like "your battery is discharged - shut down immediately or you will lose your work" that I could accept popping up, but otherwise a window should NEVER steal focus. I deliberately opened the window I wish to work with, and Windows should respect my choice!
I think this happened rarely if at all in Win95, and it's been getting worse every Windows release ever since. It's time for you guys to address this once and for all.
I agree with some of the other comments like it takes a lot more clicks to open Network Connections than it did in XP, but having my working window frequently vanish under others is my pet peeve each and every day!
I will grant that having to dig through a dozen windows to get to my desktop can be VERY annoying. Thanks to the way that VPC drags items out of a VM (and the fact that you can't drag from 1 VPC directly to another VPC), digging for your desktop is practically a must.
That said, the one feature I really **REALLY** wish I had was the ability to quickly fire a window from 1 monitor to another (maximized or not) just to get it out of my way. Some times this is because I am digging, some times its just because the primary monitor is my primary work space. If I am focusing on something, it goes up on the primary display. Once I am done, it can usually be closed - some times I need it for reference tho, and firing it to another monitor to keep it visible but no longer the primary focus of my attention is a must. Currently that involves a lot of dragging (and if its maximized, multiple clicks as well)
As for the window reorder buttons on the taskbar -> I've known they were there since Win95, but I never use them. They never do what I want. If they even get close to the right layout, its the wrong window order. Since I have to drag stuff around anyways, its just easier to get exactly what I want the first time. You could drop this feature out of the taskbar, and I suspect the 5 people who still use the feature wouldn't even bother to bitch much.
Mikejng has a great point about IE's focus stealing -> It is a huge pain not because it does it, but because it does it so often for no reason. This is by no means the only problem IE has so I suspect this is more about IE's design than windows. Still, it would be nice if windows could remember to forbid letting a single app do certain things rather than an all or nothing sort of deal.
That said, Windows seems to suffer from the same settings-amnesia problem Windows has in Explorer and volume, so perhaps hoping for windows to remember something might be too ambitious.
What about retractile title bar (Mask Automatically)? We can save space on windows.
It looks from these posts that the shell or whatever team is giving importance to minor details for this Windows release. Overall, managing windows is pretty easy for me using a combination of mouse dragging, Alt-Tab and Win-D. My feature request is only and only: Please make all the apps shipping out of the box (including IE, Paint, Calc) remember their window size, window position, window state (maximized or restored), and include unlimited number of undos to tile horizotally, vertically or cascade. Also, apps like Magnifier that resize running windows should resize them back exactly to their original state when they exit. Include an option for some important apps like IE and Windows Explorer to always always and always launch new windows in maximized mode and not make us use specialized window managers and IE maximizers. Make some solid differentiation between active and inactive windows (something which is horribly lacking in your latest OS). Add the much overdue "Always on top" and "Fixed size" as a checkmark to the context menu that appears when right clicking a window. For snapping, take a look at allsnap. Can you implement some sort of parallel simultaneous scrolling for 2 horizontally or vertically tiled scrollable windows? Make websites which use scripts and DHTML behaviors stop stealing focus when we are reading in another window. And finally, can we have 'Maximize all' as a menu item AND a keyboard shortcut without requiring Task manager to maximize all windows? That'll take the pain out of windows, I mean Windows. As a bonus, spring loaded folders would be awesome, though that feature is only remotely related to this topic.
After seeing Vista's overall graphical user interface (and gkeramidas's comments), I feel Microsoft has become incompetent to fix these problems.
I would like to see more APIs for developers to leverage the power of the window manager.
I would really like to see something similar to compiz fusion. It would be really nice to have all those features and eye candy. The most important part is that it is fully customizable and divided into separate components. Each feature can be independently activated or deactivated and customized.
I have seen several people mentioned Virtual Desktop. Tab Groups is an alternative. Instead of automatically create tab groups, we can manually do it. For example,
1) There is an empty box on taskbar with pop-up description "Drop task here to make a group."
2) You drag and drop it onto the empty box, you created a custom task group at left of the empty box. Empty box is also used to separate tasks and task groups.
3) You can drag more tasks into the new group. You can drag task out of task group as well.
Pros and Cons.
Con - Virtual Desktop has longer history. Supports Multi-backgrounds extremely useful for workspace identification.
Pro - Custom Task Group is an extension to XP existing task group. Change is more subtle and less intrusive.
Pro - Custom Task Group is more flexible. You can show/hide more than one tab groups on the same desktop. No need to merge/split virtual desktops. No more confusing virtual desktop management.
Pro/Con - If needed, the feature can be configured to IE8 like tab group behavior. This is both pro/con as I am yet to think a better way to say what should be launched directly into task group.
I hope MS team could invest some time on this issue. Virtual Desktop is certainly a growing demand. BTW, if you guys doing a virtual desktop, please have some mouse out of screen desktop switcher; I can switch to other desktop when someone budge in, hehe.
More thoughts on the TopMost and FixedSize requests. This is something I think will be really useful on many occasions, but it is not as easy as it sound.
For example, Window Explore has array of Window Size on different path. Some app didn't implement Window Size, so it will always opens up in the same size. And there is a management issue. Certainly I would require a management software to tell me what app/window has been set with such property.
This is not only make Windows bloated with optional features. But will introduce many usage problems when casual users have no idea what happens. Like "omg, why is it always open IE in small 10x10 size. I already resize it and close it."
Certainly such feature has to be off by default. It has to be a module installed by user request. Then, the argument arise. How much time should MS spend on this project when only few people have the knowledge to use it?
All in all, I still want the feature. Make it an ultimate extra? I would love to help out too.