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.
I'd agree with the standardized Always On Top feature, plus a snap-to grid that makes for quick window placement/tiling without requiring the user to align the window edges manually. A good example for snapped tiling would be Visual Studio, the IDE shows the drop locations as overlay icons, so the user doesnt have to get the edges in the right place by nudging the mouse carefully.
Can we also have multiple desktop support built-in, as has been standard on Linux distributions for years? I know that there are additional programs that can do it, but making it a Windows standard means you can rely on it being available on someone's PC.
I think the best option would be, if there will be an option (or not option but rather function) to adjust windows sizes to their content. I have seen this function on Mac. For example, when you are using Safari and click green button, Safari window adjust its size to webpage. Other application do it also.
I miss this function on Windows, especially with IE and Windows Media player, because when I play videos in WMP I want to fit WMP windows to video size.
I really don't see why so many people want comiz(fusion) in windows.
On my Q6600 machine, with 4Gb RAM, and a geforce 8800GTS, Compiz struggles at 1920x1200 resolution with even the most modest of transparency enabled.
Aero, however, flies along.
If you people just want Aero to be as modifiable as compiz, well then yeah, that would be pretty cool I guess, but we'd probably have to put up with linux diehards moaning that windows copied linux forevermore >-(
Aengeln, that is a great idea about segregating the desktop into portions.
I'm thinking about 2 things.
First, the Save State idea make me think about a hibernation mode for application. By clicking the X (Close) button while holding Alt key, the application data in memory is recorded somewhere in the HDD and when we re-open the application, it will return in the same state it was when closing, like the Hibernation mode of Windows.
Second, what about a totally programable UI? In Windows XP, there is methods to change skin of UI, but this time, it will be more complete. The programmer can decide to create an UI where the title bar of windows will be on bottom of windows instead of the top. Or make elements of the taskbar undockable and can be dropped anywhere on the screen a little like Windows 3.1. I know this idea is a little crazy but every idea for the UI can be created by every programmer.
Since I won’t have access to Windows 7 for a while, I can’t comment on where you are going, but I have never understood why Microsoft abandoned the desktop itself as a rich, vibrant interface all on its own. I remember screen designs from Microsoft Research years ago that were heading in this direction (I still have some), and they were exciting. It never materialized, though Surface is a start. Why not make the actual desktop active and vibrant and less like a piece of concrete with graffiti? So to address the issue of “forms”, if you abstracted that into the OS and the desktop, developers could avoid writing code to do things that should be automatic: like size, display, behavior, and getting interface clutter out of the way of the users. In my experience with Windows development (since VB1), 80% of code is behavior and 20% is meat. Even with C# and WPF, that number is still high. Forms should not be bolted on the desktop—forms should be integral parts of the desktop.
Firstly, regarding the internet explorer, so called 'bug'. I have experienced this before, but what I do do is set the default setting to maximised on the quick launch and it is solved especially since IE tabs don't require me to multi-task IE windows like in IE6. With Windows taskbar grouping IE6 was a nightmare.
I would like to see tabs used in windows explorer and outlook in the future, since these two programs generate a lot of windows. Tabbed windows should even be a UI element for developers to easily use to display multiple pages of content without the need for new windows.
Secondly, reading the post made me realise why reading view in Office was introduced, and why I dislike it so much. Yes it brings test into easily readable paragraphs in one section of the screen, making it not necessary to scroll your head from side to side of a large widescreen monitor. The reason why I dislike it is that 90% of the time I want to print email attachements, so I want a printable view of the document. Maybe a open or read option should be included here.
Back to tabs: I think I saw this in a windows explorer concept, where with one click you could dock two explorer tabs next to eachother, with each having there own path displayed. I can't remember if the favourites and folder tree were seperate in this case, but I don't see this as a necessity.
I sense an opportunity to make a comment on something slightly related to window management, so hear it goes ...
Another item that generates in some cases alot of windows is file-transfers. Often I start copying or moving something and then see something else to copy or move. Now if the copies are going to take some time I normally check the ETA and leave my PC for the given time. When I initiate the second transfer it generates a new window automatically and the times for both transfers shoot skyward before stabilising. (Note that since in most cases the one transfer will be shorter than the other, the time estimate of the one is inaccurate since once the other transfer completes, the data rate increases for the remaing transfer.) The only reason I do both transfers together is because I can be more efficient leaving my PC for the estimated time.
The following could solve this and result in less windows on the taskbar and less flicking between transfer windows to view transfer progress. Can the file transfer process not pick up that a transfer is in progress and "que" itself as a new process, but within the same transfer window.
From what I have read, seperate processes would result in better stability if one of the transfers stops responding. That is why I suggested it, since it exists in IE8 and Chrome to some unknown degree for each tab.
Changes to the UI are probably one of the most important areas when users move to a newer OS. And although changes are necessary, they’re not always beneficial to all users. So, in my opinion, if you do change the UI, you need to ensure that users can still do things the way they used to in windows XP (not using vista as an example because there were some changes that didn’t meet this criteria). I’ll just give a few examples, even though it may not pertain to your team, but it is part of the UI.
You took away the ability to right click on my network places and select properties to open network connections. You took away the ability to right click the network tray icon and get the status. Now, you may think nobody uses these, but there was no reason to remove them because they didn’t actually hurt anything if they were accidently selected.
Also, changing the time takes more mouse clicks in Vista than in XP.
You also need to ensure that performing these operations takes no more mouse clicks than in the new UI versus windows XP. all of the examples I mention take more clicks.
Network Connections 2 3
Status 2 5
Change Time 2 3
And you may argue that either not everybody uses these options or that they’re not used that often. But that’s no excuse for making the operation harder to access than it was before.
It takes 9 clicks to turn off the details, preview and navigation panes. Why can’t I turn them off in the same UI instead of the menu system closing as soon as I deselect one of them and then have to traversing the entire menu system again?
In folder/details view, I know a lot of people don’t like the fact that the all columns are selected instead of just the file name. when single mouse click is enabled, and you move from one window to another and try to set focus in the window, a file or folder opens. In XP, you could click anything but the file name to get focus. Now I have to increase the width of the folder to have white space, with no columns, and use that as the selectable area. Which leads to my next point.
In XP, opening a folder would show the folder size in the status bar. In vista in take extra keystrokes because the user must first select all of the files to see this value.
Operations should not be made harder or obsolete when creating a new OS.
But these are just my opinions.
Back to tabs: I think I saw this in a windows explorer concept, where with one click you could dock two explorer tabs next to eachother, with each having there own path displayed. I can't remember if the favourites and folder tree were seperate in this case, but I don't see this as a necessity. This would be extremely useful for file transfers between two locations.
@moflaherty : I see what your are talking about, but it looked like users were uninterested. I can imagine easily things like gadgets on the desktop behind icons, but I thinks people don't like to mix functionalities with their favorite wallpaper. If I am wrong or away from your subject, I am sorry about this, English isn't my main language.
Anyway, it's still an idea for a programmable UI. ;-)
In Vista, it's too hard to tell which window is active.
Try this: tile two or more windows on a monitor. Now try to determine which window is active.
On my PC, the title bar of the active window is slightly darker, but the difference is so subtle that I can't use it. Instead I have to look at the close (X) icons on each window until I find the one which has a red background.
Now try this: tile two or more windows on monitor 1, and maximize a window on monitor 2. Now try to determine which window is active. A quick glance would suggest that it is the window with the black title bar. Not necessarily. Again, it's the one with the red background behind the close icon.
Previous versions of windows had this right. I hope Windows 7 gets it right.
Hope this post gets through:
As you wrote, scenarios like watching 2 documents side by side or switching between the desktop and an application can be really difficult. All those functions don't seem to work properly and really need a rework.
I would really like to see tabs in main apps like Windows Explorer (at least optional) because when I have opened 6 folders I always get lost in translation with the grouped task in the taskbar while dragging and dropping. I also would suggest tabs for all multiple document applications (like Word, Excel, ...) to navigate easier.
Another nice addition would be a window instant search in Flip or in an Expose equivalent to easily switch to another window through keyboard input. That would be really useful because mostly I know the name of the window or app I want to switch to but I can't see it immediately.
Besides, switching tabs in tabbed applications should be like Flip with nice Thumbnails of the contents to find the wanted tab easier.
I like your first idea - I can see this being useful, but I disagree with your second one.
IMO programmers should not be able to change window decorations, and by this I mean the window borders (frame), titlebar and window controls (minimize, maximise, close). This is something that should be the same for ALL applications so that novice users at least have consistency in how they manage windows even if programmers create wierd and wonderful UIs within their application's client area.
This is one thing I really hate about Office. They took the titlebar that novice users are familiar and changed it in order to add their Jewel, Quick Access icons and a centre-aligned title when the thing novice users value above all else is consistency in the user interface. In fact Office is a prime example of how not to build a UI - I've configured how I want my windows to look but the Office developers decided to ignore this and make it a 'nice' light blue instead.
I recommend that the Win7 team just steal ideas from OSX and Compiz Fusion. They both offer similar functionality to each other (so it would be hard to figure out which one you stole from - in most cases) and more importantly, they both offer functionality that Windows either currently lacks or has hidden. Both have a neat function that allows users to quickly tile all open windows in a graphically nice way and both have multiple desktops which I find very useful.
Don't be shy, the entire software industry is built upon the theft of ideas, you'd just be upholding tradition! So just steal their ideas, tweak them if you must, and ship Win 7 as soon as you can. I can't wait to see the new GUI!!
I would use the tile windows feature obtained by right-clicking the taskbar except that, as magicalclick implies, the window sometimes saves the new size. I understood that you could SHIFT-click the close button to save a window's size -- why doesn't this become the default method for saving so that it's not done by accident.
Also, the option to ALT-click windows on the taskbar that you wish to select and tile is a bit obscure -- it would never have occurred to me I think!