Thursday Nov 08, 2007

Why Apple Spaces is broken

Space: they way I would like to set up my workspaces

I have been using virtual desktops, what Apple now calls Spaces™, since 1995 on X11 Unix. So I have quite good experience with this feature. I know what it needs, and I can tell very clearly that although Apple's implementations is the most beautiful version available, it clearly has not been thought through correctly. As a lot of Apple users will be novel to this, they may not quite understand what is broken immediately, but may come to the conclusion that it is not very useful. So first we have to explain why virtual desktops are useful. Then I can explain why Apple's implementation is broken.

The use case

The reason for developing multiple spaces is to be able to clearly separate one's work. I for example, have one desktop for Mail and other communication related activities, one for programming, one for blogging, and one for other tasks such as giving a presentation.

When I read mail, I sometimes need to browse the web to check up on links that people may have sent me. I don't want that to make me jump over to the browser I opened in my development space where I was reading javadoc. That would both mess up my development environment, and switch the context I was in. If no browser is open in my mail environment I would like to just be able to hit ⌘-N and have a new browser open up there. Then pressing ⌘-⇥ (command-tab) - which should only list applications available in that space or at least offer those applications available there in priority - I should be able to switch between my mail and the browser instances open in that space.

Having read my mail, especially the mail by my manager, telling me to stop helping Apple improve its copy of something that was available over 12 years ago on unix, and to get working on the next great ideas, I switch back to my NetBeans space, where I am developing a Semantic Address Book. Here I would like to switch quickly between the applications that are open in that space: Netbeans, my AddressBook, the shell, Safari and Firefox. So at the minimum, I would like the applications that are present in that space again to be the first in the ⌘-⇥ list. And! I would like it that when I switch to Safari to read the docs, I don't get thrown into my communications space.

There is no way I can have only one browser open for all of my work. I need different browsers open for different purposes in each spaces. The same is true with the shell. Sometimes it may even be true with Mail. Perhaps someone sends me an email relating to a piece of code I am working on. I would like to move that window to my editing environment (easy using F8 of course), in order to be able to switch between it and my editor with ease.

What's broken

So currently it is not possible to work like this with Apple's Spaces™. When switching between applications using ⌘-⇥, Spaces™ throws you across virtual desktops without any check to see if a window of that application is not already open in your space. Spaces™ always switches one to the virtual desktop that an application was first opened in, or where the first opened window from that application actually is. One cannot use the F9 or F10 Exposé keys either. Even though they only show the applications open in one space, they will still in some unpredictable way, switch you to a different space. They do this even if you clearly select a window from the space you are working in. So there is no way to switch reliably between applications open in one virtual desktop space, and so there really is no way to separate your different work related tasks. The way it is set up you need to have all your browsers in the same space, all your shells in the same space, etc... etc... So really these Spaces™ are not designed around a person's work habits, but around software components. That is the most basic of all User Interface failings.


30 May, 2008 Many, if not most, of the issues I complained of in this post have been fixed with release 10.5.3 of OSX. It seems useable now. ⌘-⇥ no longer randomly switches between workspaces, which was the biggest problem. John Gruber explains how 10.5.3 fixes spaces in detail on his blog.

Nov 20, 2007 eliottcable proposes a solution on quintessentially open. I am not convinced that ⌘-⇥ should create new windows on a space by default if there is non there. It should certainly not switch to another space if there is a window on the current space. In any case I find that the F9-F10 expose keys are clearly broken, since they do have me jump across spaces, when they never should.

This post received a huge number of readers from daring fireball. Thanks. Dave Dribin has a good write-up on this issue. Some further discussion is developing on the reddit discussion forum.




« June 2016