Road to Mac OS X Leopard: Spaces

By Prince McLean

Spaces is an entirely new feature in Mac OS X Leopard, but the idea of virtual desktops -- and multiple desktops -- has been around for a long time. Here's a look at what's new and different about Apple's approach with Spaces, why virtual desktops have run into problems before, and how well Leopard's Spaces actually works in practice.This report goes to great lengths to provide an understanding of the origins, history, and maturity of virtual desktops (Spaces). For those readers with limited time or who are only interested in what's due in Leopard, you can skip to the bottom of page 2 of this report.

The Origins of Spaces: Xerox Rooms

The idea of using multiple graphical desktops on a single system for a single user dates back into the mid 80s. It's probably not surprising that the first implementation of virtual desktops originated at Xerox PARC, the Mesopotamia of graphical computing. Xerox patented the idea in 1986 under the name "Rooms." The idea of Rooms was to allow the user to expand their view of the graphical desktop into off-screen areas, and call up specific "Rooms," or regions of the virtual desktop, in screen-sized chunks.

In the early 80s, Apple brought elements of Xerox's graphical desktop computing to the consumer market for office and home users. It described the Mac's graphical environment as a "desktop," and used office jargon to represent the computing ideas of executables, files, and subdirectories as 'applications, documents, and folders.' Limitations of the Mac operating system -- largely constrained by the high cost of RAM -- meant the Mac couldn't support multiple concurrent applications as its more expensive predecessor the Lisa could, as noted in the article Office Wars 3 - How Microsoft Got Its Office Monopoly. That limitation gave early Mac users little reason to need multiple desktops; there was really nothing to do in them.

The Mac Switcher and Multiple Desktops

The rapid pace of technology continuously inspired new applications and demands for new functionality, however. Within a year, Andy Hertzfeld delivered his 1985 Switcher, inspired by a text based DOS utility. A couple years before Switcher Ellen Feiss was even born, Hertzfeld's Switcher allowed Macs to shuffle applications in and out of the limited RAM available, sliding one application off the screen and another into view at the press of a key. Hertzfield related the story of its development at Folklore.org: Switcher.

Switcher was succeeded by the MultiFinder in 1987, which allowed Mac users to switch between multiple applications all running together within the same desktop. That same year, Apple released the Macintosh II and the Mac SE/30, two new systems that introduced color graphics support and the first Mac architecture for using independently upgradable graphics cards. Along with that new hardware came new software: Color QuickDraw.

Color QuickDraw also delivered the industry's first support for multiple monitors. With more than one video card installed, users could plug in multiple displays, with each showing an independent chunk of desktop space. Since the displays were stitched together as part of a large virtual desktop area, windows could be dragged from one screen to another, or even sit on the border spanning two displays. Some applications needed to be updated to support multiple monitors, because they made assumptions about a single display, including where notifications should be placed on the screen.

As the Mac entrenched into desktop publishing and graphic design, this unique capacity to effortlessly use multiple displays became a key feature. Multiple monitor support was particularly useful because buying two standard displays was much less expensive than buying one large monitor with of the same total resolution. Apple's graphic designer user base didn't demand virtual desktops on the Mac because they wanted to see those multiple desktops at once on real displays.

Multiple Screens on the Amiga

Other companies developing graphical desktops took different approaches to serve the different needs of their users. Commodore's Amiga in 1985 followed a unique path in referring to its graphical environment (and Finder analog) as the "Workbench" rather than using an office desktop metaphor, as Apple did with the Mac. The Amiga similarly used workshop jargon for its executables, files, and subdirectories, calling them 'tools, projects, and drawers.'

The Amiga also pioneered the use of specialized hardware for graphics acceleration common to video games. This positioned the Amiga as ideal for use in video and color graphics work, as its video output could be synced or overlaid on top of a video signal. While the Mac was performing desktop publishing to laser printers, the Amiga was cranking out photorealistic color graphics and video content.

The Amiga's unique needs for targeting different resolutions of video inspired the development of 'multiple screens,' which could display multiple concurrent applications running at different resolution and color settings, switch between them instantly, and even display them simultaneously on portions of the same screen. Because Amiga users worked from a single monitor, the idea of multiple virtual displays on that screen -- taking advantage of the hardware's ability to render multiple resolutions at once -- made sense.

On page 2: Virtual Desktops of the X Window System; Windows' Virtual Desktop Problems; and Mac OS X's new Spaces.

Virtual Desktops of the X Window System

In academia, much of the computing work was being done on Unix workstations, which commonly used MIT's X Window System to supply a graphical desktop. By 1989, elements of Apple's virtual desktop space underlying multiple monitor support were exposed to X Windows users by the Solbourne Window Manager, which ran X Window applications in large virtual desktop space. The user could select specific regions of that virtual desktop to view on their monitor, similar to Xerox's Rooms, or Apple's multiple monitor support in reverse; rather than expanding the desktop across multiple screens, it gave one screen the ability to look at multiple areas of the off-screen desktop world.

There are some downsides to virtual desktops as popularized by X Window which prevented them from becoming popular on common desktop systems such as the Mac or Windows. The first is that applications have to be aware of virtual desktops, because they need to compensate for the possibility that they are not in view and can't update the screen or pop up a notification. X Window apps were already designed to be used in a window client/server system and subsequently make fewer assumptions about the display compared to consumer software titles. The result is that third party virtual desktop utilities for the Mac and PC commonly didn't work flawlessly with existing software.

The second barrier to virtual desktops is that they are a complication for users. Non technical users can get lost when their work is shuffled out of view if there are not obvious ways to get it back. The concepts of multiple users and file permissions are difficult enough; using a KVM switch to move between multiple computers on the same screen, or using an emulator to run multiple systems on the same PC can also be a source of confusion. The similarly complex idea of multiple desktops can quickly become more of a mystifying hassle for users than a benefit.

Virtual desktops have long been popular among Unix users; the feature was prominently built into the CDE taskbar (above; the four numbered buttons select between virtual desktops), which served as the standard Unix desktop through the 90s. Their Linux-using counterparts today similarly find virtual desktops second nature. CDE has been largely replaced by GNOME (below top) and KDE (below bottom), both of which similarly feature virtual desktop switching in their main taskbars.

At the same time however, Unix and Linux users also typically have the technical savvy and inclination to conceptually understand and keep track of what's going on in multiple desktops. Casual desktop PC users who don't live in front of their computers frequently don't see the benefit of virtual desktops. And those that do, run into the problem of virtual desktop solutions that don't work very well.

Windows' Virtual Desktop Problems

Microsoft has never implemented virtual desktops as a supported feature for Windows users. Adding virtual desktop features is certainly not impossible, and there are many third party hacks that add those features to Windows. However, since there is no standard mechanism for virtual desktops in Windows, apps aren't designed to use them, so they frequently don't work properly when one is installed. This makes virtual desktops unappealing for many Windows users, and further sets up a catch-22 by preventing any market for encouraging application vendors to adjust their apps to work properly.

Microsoft did deliver an experimental, unsupported Virtual Desktop Manager 'PowerToy' for Windows XP, artfully called MSVDM (an acronym Microsoft has already used for its Virtual DOS Machine, oddly enough). It simulates multiple desktops by minimizing and maximizing windows in groups, making each group a different virtual desktop with its own wallpaper background.

MSVDM lacks the functionality of virtual desktops for X Window managers, however. For example, it can't move windows from one desktop to another, or maintain a window in a given desktop when its TaskBar button flashes. As Wikipedia notes, "Application compatibility problems are common, because application developers do not expect virtual desktops to be in use on the Windows platform."

Even Microsoft's own Internet Explorer isn't MSVDM savvy. If you have multiple browsers open in multiple desktops, closing one unceremoniously wipes them all out. Microsoft's Visual Basic and Virtual Studio .Net also freak out when MSVDM is used, and if the PC is under any processing load, MSVDM occasionally falls into limbo mid-switch, leaving the user hanging in purgatory with no one to pray for them. Switching between Word and Excel can similarly cause their toolbars to disappear with no obvious solution. MSVDM is no equivalent to Spaces.

Interestingly, Microsoft delivered its first support for multiple physical monitors in 2001 with Windows XP, fifteen years after Apple delivered it on the Mac. That suggests that Microsoft may deliver support for multiple desktops like Leopard's new Spaces at some point in the future, perhaps in the early 2020s.

Mac OS X's new Spaces

Spaces in Leopard -- like any virtual desktop system -- allows the user more room for their windows to live in. As with any other platform, Apple had to address two inherent problems with virtual desktops: third party developer support and user complexity. If it failed to execute either goal, Spaces wouldn't be much beyond a curiosity. If it can deliver both, it will solve a variety of problems, including the one alluded to in the article on the Leopard Dock: too many minimized windows clogging up the right end of the Dock. See Road to Mac OS X Leopard: Dock 1.6.

Mac OS X encourages users to open multiple windows in multiple applications; it provides mechanisms for switching between applications (using the Command+Tab convention borrowed from Windows, which uses Alt-Tab) or between a specific applications' windows (using Command+tilde, something Windows can't really do because it doesn't define a clear and consistent boundary between an application and an open window; in Windows, sometimes an open window is a document, other times a window is a collection of documents inside an app. In Office for Windows, an open window can be either one, depending on how it was opened.)

Apple also provides Exposé for graphically selecting between open windows. These mechanisms encourage users to work with lots of open, overlapping windows. In contrast, Windows users are stymied by the constraints of the TaskBar and are trained by the window maximize button to blow up every application to take up the full screen, a holdover mentality from the text-based DOS, where every application was a full screen of text. The Windows environment discourages an effective use of many open windows sharing the screen and all visible at once.

The Mac OS X Dock allows users to minimize open windows into a proxy icon, but the system begs for a way to leave more windows open at once, and to allow rapid switching between functional sets of windows. That's the problem virtual desktops were designed to solve. As the Mac user base migrates from a static population of mostly desktop users of Quark and Photoshop to a growing iLife population represented by a majority of notebook users, the concept of virtual desktops begins to make more sense than the former ideal of being content with multiple monitor support.

On page 3: Third Party Support for Spaces; User Accessibility for Spaces; Everything in its Space; Trading Spaces; and The Outer Reaches of Spaces.

Third Party Support for Spaces

As mentioned, the first problem inherent with virtual desktops is making them easy for developers to support. Adding Spaces to Leopard as a prominent feature will help in this regard, but much of the groundwork has already been laid. Apple earlier added Exposé and Fast User Switching to Mac OS X, both of which detangled applications from making assumptions they shouldn't about their windows. That means most applications will work with Spaces without any problem, and those that need some work will have had a year-long head start in getting prepared for Leopard.

User Accessibility for Spaces

The second problem is making Spaces easy enough to understand and use productively. Spaces builds upon the idea of Exposé, except that instead of zooming out to give the user a bird's eye view all of their open windows, it backs up to showoff all their existing virtual desktops.

Spaces even dovetails into the Exposé System Preferences. After enabling it, users select how many individual Spaces they want to set up. There's room to set up a matrix of 4 x 4, multiplying the desktop by 16 virtual desktops and evoking the opening credits of the Muppet Show. That many virtual desktops might get difficult to manage in one's own head, however. A more likely starting point might be two rows of two, for a total of four. That's what X Window systems typically provide.

Everything in its Space

Each Space is numbered (as Apple's System Preferences graphic above indicates), and can be called up in a variety of ways. By default, Control+number jumps to a given Space, and Control+arrow key slides up, down, and across between the grid of Spaces. An optional Menu Bar Extra can also be enabled to provide a drop down list of Spaces by number.

If you have trouble keeping track of your Spaces by their numbers, you can alternatively bring up an Exposé-esque, graphical overview of the Spaces grid either by clicking on the Spaces icon in the Dock, by hitting the assigned hot key (which is F8 by default), or by triggering the assigned mouse button. If you have a multi-button mouse, Apple offers to use the nonsensical "secondary" right mouse button or the more sensible "middle button," which mapped to the scroll wheel button of the common mouse I used.

When triggered in any of these ways, the Spaces grid pops up with a full screen display of the scaled down contents of the windows in each Space. In this view, there's no Dock, no menu bar, nor any background images (below). Clicking in a Space makes it the active desktop, but you can also freely drag windows from one Space to another as desired in this mode (iWeb is mid-move between Spaces below). This highly intuitive interface makes it very easy to bounce between virtual desktops and set them up as desired with an omniscient, big picture view.

Trading Spaces

Once set up, a Space can be assigned specific apps. In Apple's System Preferences graphic above, iChat, iTunes, Mail and Safari are each assigned to different Spaces by number. This sort of organization allows you to sequester specific types of applications together, so that, for example, all your messaging goes on independent of your Photoshopping.

What if you want to browse the web in one Space related to your research project, while also having a browser window open next to Mail in another? You can do that too, by simply creating a new window of whatever application you want to live in multiple Spaces. In the case of multiple browser windows, you can select New Window from Safari's Dock icon, although not every app supports this. This creates a new window for that app in the current Space, even if it has windows in another Space already.

In addition to Spaces' "Exposé mode," you can also move existing windows around between Spaces by selecting a window's title bar, then changing the Space using a control+number or arrow key combination. This pulls the window you have in mid-drag from the old Space to the new one. You can even drag and drop between Spaces (I dragged the title bar proxy icon of my document to Mail in another Space to copy the file in as an attachment), although it requires some finger orchestration to hit a key combo with one hand with mouse dragging with the other. Spaces seems to do everything one might imagine it could or should.

The subtle slide transitions -- accompanied by a bezel graphic (below) indicating which Space you're in and where you're going -- provide wayfinding feedback without being egregiously animated in an obnoxious, candy-coated way. There's no spinning cube animation to wait for, it just snaps into place. Anyone complaining that Spaces is nothing new because virtual desktops have been around for years as a feature needs to consider that an implementation of an idea is often much more important than the idea itself. This is one sharp Lamborghini, even if the Model T first rolled off assembly lines a very long time ago.

The Outer Reaches of Spaces

Once you have windows scattered all over your various Spaces, you can select a given Space by clicking on a Dock icon; if you've tied that app to a specific Space, you are taken there. If you have multiple windows for that app scattered across multiple Spaces, each click on its Dock icon will cycle through the various Spaces. This is brilliant.

Spaces doesn't interfere with Exposé (or Dashboard); all actions are encapsulated within the current Space. That means Exposé will only "show all windows" related to the Space you are currently viewing. I also couldn't confuse it by trying to Space walk while either Time Machine or Front Row were running full screen. Both appear to block the Spaces hotkeys. Other full screen-applications, including the Finder's Quick Look (formerly slideshow) feature, do not block you from changing the Space, but if you fly out to the Spaces grid view, you see the Finder window, not the full screen Quick Look panel. Click to zoom in, and you're taken back to your Quick Look view. It just works as you would expect.

Further, if you have multiple monitors on your system, the combined desktop acts as one Space. If you set up four virtual desktop Spaces, each one will represent the combined viewable desktop area (depicted below). Clearly, a lot of thought was given to the implementation of Spaces; this isn't just a group minimizing hack like MSVDM.

Having used virtual desktops before under CDE in my former life as a Solaris admin, I have to admit that I assumed Spaces wouldn't be too useful. Stuff that falls out of view tends to fall out of my sphere of attention. However, Spaces works so transparently, and offers so many options for organizing things just as you'd like, and makes moving windows around so effortless and intuitive, that I've grown quite attached to it. Now, instead of sorting through piles of open windows or minimizing so many browser windows that my Dock shrinks down into pebbles of icons, I can leave my windows all open, strewn across a universe of wide open Spaces, hopping around between them like Arthur Dent.