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.
GRiNSER said "this specifically is not really useful when having grouped tasks in the taskbar - you have to wait until the grouped tasks show up and then you have to find the right one... really annoying... Flicking away Windows with a special gesture would be really helpful!"
The menu for grouped window show up instantly. The windows can't because then the first menu item you hit would pop open, so there's a delay.
Maybe I'm misunderstanding your suggesstion, but with your gesture idea, you'd need to perform this gesture while holding onto an item (or do it as a two step process), and you'd have to root through a pile of windows looking for the one to drop on instead of scanning a nice orderly list like in the current solution. I don't see the advantage.
Also, my Alt+Tab suggestion avoids the grouping problem as well.
Niklas (MS): That's kind of where you guys are not getting it. The UI could be enhanced quite a bit to make it much easier to do things. It's not just about how easy it is but it's also about how smoothly the user transitions between common UI workflows and tasks. This is a bit like explaining the difference between a Ferrari and a Toyota to someone that has never driven a Ferrari though, so I don't know if it will ever happen.
Please consider providing the following shortcuts for windows 7 -
<windows-key>+x to maximize the current window
<win>+n to minimize the current window
<win>+t to tile the windows currently not minimized
<win>+c to cascade the windows currently not minimized
and may be <win>+s to save the current window state that will be used to open it the next time it's launched?
I think a multi-desktop concept is pretty worth to think about and windows need to adopt it.
The best way to minimize switching is to put more focus on MDI. The most switching is done to copy and move files around with Windows Explorer. I use QTTabBar (excellent software, you guys could buy them) to turn Explorer into a tabbed interface. I think the Windows team could implement this much better.
On another note, the Office team should really consider tabs or some other MDI for their applications.. they're the main reason taskbar grouping was invented. If we didn't have to manage so many Office document windows at a time in the course of work, this post might not have been as necessary.
I have one more thing to say about managing windows and the whole issue of focus and being on top: sometimes transparency can really help, if applied correctly.
@Triple, @aaronsteers, @GRiNSER, @ddahlstrom et al.
Windowspace 1.01 adds "Always On Top" to every windows's control menu. It also has snap to grid plus other sizing/movement facilities. I find the keyboard shortcuts to move windows are particularly useful.
Works in 2000, XP and Vista.
Does no-one else find the 'Distribution of native monitor resolution 2005-2010 est.' graph incredible? (Incidentally, would it be possible to use higher resolution images in this blog? They always seem to be tiny...)
If I'm reading it correctly, it's suggesting that 75% of users are running at resolutions of 1024x768 ('XGA') and 800x600 ('SVGA') in the year 2008. That's completely out of line with my experience. It also seems to conflict with a table posted on this blog a few weeks ago: http://blogs.msdn.com/blogfiles/e7/WindowsLiveWriter/TheWindowsFeedbackProgram_14CFB/image_8.png
The graph also puts 'WXGA' at about 15% in 2008 - just how much of this sample was made up of laptops? Is there such thing as a WXGA desktop-monitor? (Because I haven't seen it.)
I would like to see a feature where you can snap two window together and the copy/move files between. This Ctrl+C, ALT+Tab, CTRL+V is five key presses more than comfortable. In this "dual" mode a Ctrl+C (or F5) would copy the file(s) to the target window. In general you have to reduce the key presses and clicks. Also I would like to see a "mass rename" tool. Try to rename 40000 files with sequential serial numbers and pre-, post-fixes. Also a nice compare and directory synchronization feature would be nice. File aliases too.
I'd like to see an alterante/advanced version of "show desktop". Instead of minimizing all windows, it would be great if all windows became 90% transparent and inactive (i.e. I can select icons on the desktop through the transparent windows). As soon as I drag a file and I pass over a window, this window should become active so I can drop the file. For me this would be the best solution to the desktop switching problem.
The basic problem with managing Windows on Vista/XP/Etc is that the model it is based on is broken. I didn't always think this, but once you use OSX you see a huge difference, just more simple.
The main difference is in what the windows are, in Vista, a window can be a Application, it can be a document, it can be a application hosting multiple documents, often times if you have two of the same type of document open, you have two instances of the same executable running.
In OSX, it is stricktly, or least appears to be, a document window manager. Applications normally only run one instance. In fact, it seems the whole notion of "is this program open" is transparent on OSX, which I think is a good thing.
Because OSX is a document manager, things like Expose work very very well. On Windows, you see several applications trying to mimic this functionality, Word and Excel both try hard to fake the user out of MDI, and god only knows what goes on under the hood to acomplish this. When you try to do Expose on Windows, how do you show MDI windows? What would excel do if you had multiple books open? Its quite a mess.
If I am looking at 10 text documents, I will have 10 copies of notepad running, seems dumb to me.
Anyway to really fix what is broken, I think we need to move closer to this model, its simpler, simply makes more sense. MDI (at least how it is implemented) is just to windows 3.1. One Document, One window is the way to go.
I hate to bring it up again, if you want proof, look at OSX, very good window management becuase it folows the above principle.
With respect to using the taskbar, I would have to agree that whenever I use multiple monitors I can't be bothered with the taskbar. In fact, I probably wouldn't mind a single sidebar with all my icons and widgets that would run in the taskbar on one monitor, with a clean look everywhere else.
Please, please, please, document whatever interface you come up with. It's great to have documentation for all the visual style API's but developers need to know how the controls are composed. This is a great example: http://shellrevealed.com/photos/blog_images/images/4538/original.aspx
>.> The main comment was not to be deleted... Posting it again.
I'm somewhat disappointed when I realized there was nothing about the more advanced caption bar features which have appeared in many other OSes: most notably I was looking for transparency and stay-on-top features. Also, there was nothing about rearranging the caption bu770ns.
These are some of the features I would REALLY like to see in Windows 7. Though even if adding them may seem like copying the other OSes, they still are pretty useful features. I know there are third-party applications to achieve these things, but they tend to slow the system down while running in the background.
The new caption bu770ns could not be taken into use without first implementing the possibility of rearranging, hiding and displaying caption bu770ns. Some users (for example Linux users) may prefer to have one or more of the three default bu770ns on the left side of the title bar. I'd use this because of I like having the task bar on the top of the screen and therefore all the tray icon pop-ups appear on the top of the caption bu770ns of maximized windows (which I use often) - and I have first to close them. That makes one more, virtually useless click.
Also, this feature, as already said, could make it possible to have even more caption bar bu770ns. Of course, you should make it that by default everything looked like the same it looked like in Vista, so you wouldn't scare off the more inexperienced users.
Stay-on-top feature could really make it easier to use multiple windows at the same time. You had less trouble thinking which window goes to the top and when.
Another thing, especially combined with Stay-on-top is the complete transparency of the whole window. Whether you needed to see a glimpse of a window behind that maximized window or you just wanted to make a window shine through, this feature could be handy.
The new aspects you brought on the table (for example just maximizing the window height) could as well really make use of customizable caption bars - just make the common ones visible by default and more advanced ones available through customization.
I actually think the worst aspect of Windows is at the moment the level of customization features and the number of power-user tools. Why to allow only Microsoft-made themes? I've patched my uxtheme.dll with VistaGlazz and randomly use a fan-made Metal Luna theme (I tried to find an authentic blue Luna but didn't find) - I think you should really think in a more open way. bu770ns should be possible to be dragged around and reordered anywhere as well as any text field etc. - but in most cases they are not. Also, while Vista was in many ways user-friendlier than XP or earlier systems, it removed or made many good features worse, and I'm going to shortly say my opinion about a few of them.
Where is my "Go up one level" button? I know that you can click the name of the previous folder on the navigation bar, but especially with long folder names I have to open the menu which contains the higher-level folders. This is very irritating at times.
Why is this defragment program like this? No progress bar, no anything! When it comes to tools like this, people actually WANT to see how long the process has taken and preferably an estimate of how much they still possibly have to wait after they've finished with anything else and are going to shut the computer down as soon as that defragment tool finishes.
Why there is no tool to monitor the network activity? I know there is a kind in the MMC but in my opinion that's quite hard to find, and even if you happen to find it, it's still clumsy and in my opinion not very usable.
There are dozens of other "incomplete" or missing features I'd find useful as well. You probably can name a few too yourself.
Please think a second time and ponder if you could in one way or another add these features into your OS. I've been always using Windows - Win95 was the first one we had, now I have Vista Home Premium - and while I am quite a MS fanboy, I've began using Linux too, though at least now I use it quite seldom. Please let your OS evolve so people like me would not have to leave Windows in the future because of its stalling with old, stub and worn-out feature setups.
Any response to this message is appreciated. If there are any grammar errors, they are most probably because of English is not my native language - please do not mind them.
If you want to fiddle with the UI how about some things that have been missing for a while?
1. File lists.
It would be good to be able to cut-and-paste & drag-and-drop the left hand folder list or the right hand file list into text editors, to help with documentation issues.
Notepad would get a plain text representation, Word a structured, editable, representation of the window.
Dragging to the icon for a printer would print the list.
2. Customisable views
It should be possible to save the current view, with its selected location and the expansions in the folder view
Instead of saving view settings as desktop.ini on a folder by folder basis, they should be named, so that in effect they are saved back to the desktop or quicklaunch icon that opened that instance of explorer
Although a file menu option for saving such sets will logically be required, we won't need a save dialogue on exit - changes should just be saved.
3. Preview size and location
The preview in the left hand pane is lost when folder view is used. A third pane for previews, positionable under the folder list or to the right of the files would be good.
4. Mouseless operation
When cursoring up an down the folder list the cursor sometimes has to cross a removable device. The error box that results if no media is mounted is a real irritation.
5. Hiding file types
The saveable view settings should include the ability to hide a user selection of file types, with a show/hide toggle somewhere in the frame.
6. List older than/newer than
A simple way to separate files on date - for archiving or deleting, perhaps, or just for auditing - would be useful.
date/time to be entered by hand or by using a file as an example.
7. Bulk options
A simple form-filling option for all the files listed/selected would be good. This could be as simple as bulk renaming, or simple processing in turn (conversion with lame or image magic, for example)
8. Robocopy-like copy by drag-and-drop
I use robocopy to update my mirrored backups of e.g. audio or CAD files. I know that there are complex things for synchronising folders, but why can't we simply have a version of the file explorer's drag-and-drop copy that skips matching or newer files?
You could even, with the named saved views, save a default set of robocopy-like parameters for a particular icon invoking explorer.
9. Retries/resume on drag-and-drop copy
I have to archive my work files over a VPN to a remote server. I have to use robocopy (see above) because the windows explorer drag-and-drop copy crashes out at the slightest problem. Why not allow retries, or resumption of interrupted copies?
10. File associations
The method of making file associations is rather scattered and clumsy. How about making it accessible from any file by right-clicking on it? I can imagine a list of executables and a list of file types, and using drag-and-plug type graphical interface to set them up.
It should also be possible to associate a type with more than one applicaiton, and have a simple chooser pop up when one tries to open the data file.
Ooo, virtual desktops... Yes please! It's really amazing how much time that can save you. In some ways, it even beats multi-mon (that gives you precisely two monitors, and if for whatever reason you want something on one specific monitor, you still have to fiddle with dragging windows around between monitors. Virtual desktops just let you swap out windows in sets, which is often extremely convenient, because you often want specific windows to go together. In fact I've noticed that on systems with virtual desktops, the amount of time I spend moving or resizing windows is essentially zero. I don't need to. Even multi-mon can't beat that.
Anyway, as others have said, I think the entire windowing model on Windows is broken. You have MDI and SDI and tabbed windows and multiple instances of Notepad, and in a way, every single Windows application tries to play OS and window manager. There's no clear definition of what a window is, or what it contains.
The result is that the OS can assume basically nothing about a window. Nothing about its size or shape, nothing about how many documents it contains, or about what should be shown as a preview/thumbnail (just taking a scaled-down screenshot may not be optimal for complex MDI apps). Alt-tabbing gets screwed too, because it doesn't let me go through all the individual documents in a MDI app.
On a side note, one thing I really miss in Windows is better integration of a command line. It would eliminate a lot of the need for window management. I wouldn't need to line up two explorer windows side-by-side, if I could just easily copy the file in a command line (without having to start a command line, cd to one dir, copy to the other, close the command line). Perhaps even integrate it into the file explorer window somewhere. Perhaps a toolbar at the top, with a small command line interface. Anything to avoid the excessive drag&dropping and moving/resizing windows when dealing with file explorer...