Interview: Tony Arnold of VirtueDesktops

VirtueDesktopsVirtueDesktops, a virtual desktop manager for OS X, has been around for quite some time. However, with the introduction of Spaces in Leopard, Tony Arnold, creator of VirtueDesktops, decided to stop developing the popular application. We interviewed Tony on creating, developing, and ending VirtueDesktops, as well as what’s coming next.

William: Why did you first decide to create VirtueDesktops? What were some challenges you had to get past to get it working?

Tony: First up – I didn’t create VirtueDesktops. Thomas Staller started the original Virtue project in about August 2004 (at least that’s when the project first appeared on Sourceforge). I picked up the project in late 2005 after tinkering with the source to get it working under Tiger. It had been abandoned for a while. I didn’t originally intend to do any more than get the application working, but I guess I figured that the experience of resurrecting an open source project could be quite a lot of fun (and I felt I needed the experience).

Second question: obviously Thomas faced the harder challenges of getting Virtue off the ground – he based his original work off the work that Rich Wareham (http://filecoreinuse.livejournal.com/) did with DesktopManager. I guess this is a good time to clear that up too – when I say “based off”: Rich did a lot of work reverse engineering the private CoreGraphics calls into a useable header file (CGSPrivate.h), and decoding how the calls actually worked. Virtue uses that header file, and Apple’s private APIs to create and manage virtually created desktops, but Virtue’s actual data model, application flow and features are all it’s own and not based on DesktopManager’s source.

Rich also got involved again when Tiger was released and updated the CGSPrivate header to work properly, as some of the APIs had been changed and removed. There’s a great article on OSNews that outlines how he did this (I don’t have the URL handy).

My work just involved dealing with some issues around mach_inject under 10.4 (which the inimitable Jon Rentzsch helped me understand, and ended up fixing), and then the whole change in security model on Intel-based macs that required mach_inject applications to do extra footwork. The challenges I’ve faced have been more around my own understanding of the tools, APIs and code than actual interesting reverse engineering work!

Interesting fact of the day: Apple has always referred to virtual desktops as “Workspaces” – all of the calls use this terminology, and their preliminary terminology for Spaces does as well. The CoreGraphics calls have been there for at least 2 major revisions, and I had heard unsubstantiated rumours from a very credible source that Apple has had virtual desktops working internally for longer again.

William: You’ve said that you’re “just starting out with mac programming”, yet you’ve created an application that many people swear by. What does that feel like? Did you have any idea that your app would be so well received?

Tony: Well, I guess I addressed that in my answer to the first question: it’s not really my concept or my (original) code, so I don’t feel that I deserve the kudos here – that belongs to Thomas and the original project contributors. It’s great that people find it so useful – that was one of the reasons I wanted to resurrect the project: I personally loved Virtue back under Panther.

Many people count on VirtueDesktops as an integral part of their system, alongside apps like Quicksilver and Growl. Why do you think this is? What apps could you not live without?

I think Mac users are inherently task focused – we put a lot of emphasis on how we do things, and the amount of effort that each task requires. Tools like VirtueDesktops, QuickSilver and Growl all simplify the user’s workflow in some manner, and therefore save us time. While I’m not sure that VirtueDesktops is deserving of the following comment, QuickSilver and Growl both have a certain elegance to them as well – they both address problems in an incredibly intuitive manner. Users like to feel like they’re solving problems intelligently.

What could I not live without? By day, I’m a glasses-wearing programmer for a University – it’s only by night that I put on the CodeCape – so my must have apps are a little webby:

* QuickSilver
* Growl
* CSSEdit
* Mail.app (IMO the simplest, most efficient mail client out there)
* TextMate
* Parallels Desktop
* NetNewsWire

At the very least, those are bound to hotkeys on my keyboard (as well as Xcode, but don’t talk to me about Xcode until version 3 is out!).

William: What do you think of the other Mac virtual desktop apps? (besides Spaces). What makes VirtueDesktops different?

Desktop SwitchingTony: VirtueDesktops takes the kitchen sink approach to virtual desktops. That’s a bit of a double-edged sword, in so much as I think I may have got a little carried away there for a while with superfluous features. The other virtual desktop tools are in my opinion either too simple (DesktopManager), or unpolished. VirtueDesktops addressed this by trying to organise your workflow around the three major objects that you interact with when dealing with virtual desktops: Applications, Desktops and Windows (as opposed to just leaving users with tools that didn’t tie these object together). It also had a philosophy of staying out of your way until you needed it, so aside from the tiny menu icon, you could continue to work as you normally would. VirtueDesktops was also the first to integrate motion and light sensors as triggers. Superfluous features indeed!

I think any person/company that decides to develop a virtual desktop app on the Mac has to be a little bit less than sane, or make a lot of money. There are lots of foibles that you have to deal with in Apple’s implementation, so they all deserve kudos.

William: Did you expect Apple to pull spaces out of their MacWorld hat? What was your initial reaction?

Tony: To be honest, no. I was able to attend WWDC last year (it was a blast), so I was there for the announcement – people were asking me before the keynote whether I thought Apple might do virtual desktops, but it just seemed so contrary to their approach so far. In my opinion, exposé _was_ Apple’s response to virtual desktops.

When they brought the first screen of Leopard up on the stage, I remember noticing the Spaces icon in the dock and thinking to myself “Wow – if that’s what I think it is, I can trash my voodoopad document outlining the next version of Virtue”. I was sitting with Jan Van Boghout and Nick Peelman (hi guys!) and they both thought it was fairly hilarious. I was annoyed for about 30 seconds – at least until they demoed how well Spaces worked – then I was just impressed. It’s nothing new, but it’s got that typical Apple style to it that just works.

William: What had you been planning for VirtueDesktops before the announcement? How would it have progressed had Spaces not come along?

InspectorTony: Well, I was going to rename/rewrite it. “Foci” was at the top of the list (I still like that name – I call dibs on it). I was also going to drop the GPL and replace it with a license that would have allowed the code to be re-used. Plenty of people would like to integrate virtual desktop compatibility into their apps, but unless they too are a GPL app, the license was preventing that. Nick Jitkoff showed me a QuickSilver plugin that interacted directly with the available desktops quite some time ago, but QuickSilver isn’t GPL so releasing it would have been a bad thing.

In terms of features, I had some sketches that looked remarkably like Spaces overview mode – a grid of desktops where you could just drag your stuff about. Also, Virtue was in need of a serious overhaul – the Xcode project was one of the most complicated I had ever worked with (I spent the entire night before the keynote @ WWDC re-arranging a bevy of sub-projects into a single project file), and the application design needed refreshing. I had lots of ideas, but they would have all take quite a while to program and design.

William: What features does it have now that Spaces won’t have? What ways can you just simply not compete?

Tony: Hmmm, I have to be careful how I answer this – Spaces’ feature-set is covered under my NDA with Apple. In terms of what is public – VirtueDesktops has quite a few options that Spaces doesn’t have, especially with regards to the concept of desktop decorations. VirtueDesktops allows you to place images, colours and customised text onto individual desktops to clearly, visually indicate where you are. In the previews that Apple has given publicly so far, Spaces does not allow this – then again, Spaces is not released (or finalised) yet. Apple might decide to take a little inspiration.

In terms of competing, the big issue is likely to be the APIs – there’s every chance that I could make VirtueDesktops run under Leopard (although my NDA prevents me from divulging specifics of whether or not this is actually possible), but the fact is that VirtueDesktops uses private APIs to provide it’s core functionality – Apple can move the goal posts any time they like. Chris Forsythe, also known to the community as The_Tick (and a good friend of mine) said to me after WWDC that he considers Apple bundling any of his programs into the operating system as the entire point of starting projects like Growl, Adium or Virtue. Seriously, if iChat had all of the features that Adium has, I don’t think there be a need for Adium (although it would no longer have the simplicity that iChat is famous for) – same with Growl – I’d love to see an integrated user notification system built into the operating system. So in that light, I feel like I’ve succeeded.

I think there will still be a market for third-party virtual desktop apps under Leopard – iChat vs Adium is the example I’d use. There’s always going to be a market for enhanced versions of Apple’s applications.

Virtue’s code base is also very large, and the design of the application design is somewhat dated in terms of the technology Apple has made available to us in Tiger. It needed a rethink and a rewrite (and I had started one over the last couple of months, but never completed the work).

William: VirtueDesktops was freeware, and now it will be open source. Have you ever thought of making it shareware?

PreferencesTony: I’m not quite sure how the idea that VirtueDesktops was anything but open source got started! VirtueDesktops has always been open source – the source was available back when Thomas worked on it, and there may have been a brief period when I was taking over that it wasn’t, but even now you can go check the latest code out of subversion.

In answer to the question, no, I never considered making VirtueDesktops shareware – it simply wasn’t my call – the license was already in place, and I promised Thomas when I took over that it would remain open for as long as I was running the project. I toyed with the idea of a pay-for version of Foci – given the effort it would have required, I think that would have been fair.

William: What’s next for you? What’s your next app that will embed itself into our Macs?

Tony: Oooh. Well, I’m currently working on two projects – one of them is still under discussion, and hopefully I’ll be talking about that on my blog in the coming month (it’s going to be another “must-have” application if all goes according to plan though). The other is a commercial/shareware app I’m currently designing to help with my day job (and this is the first time I’ve spoken about it publicly). We’re currently going through a major web-site rebuild at the University where I work, and one of the really big time-sucking tasks that you have to do is an audit of what you’ve currently got up there on your site. My app aims to automate this process, report on the outcomes and look all sorts of validity issues. There is simply nothing good and reasonably priced in the application market to do this work. It will all be wrapped up in a hot mac UI, obviously. I’m aiming for a Leopard release with that app.

Other than that, just taking some downtime – running an open source project is a huge undertaking for a single person, and it takes a lot out of you. It’s hard to keep a constant level of enthusiasm for a product going forever, and I’m going to be glad not to see another private CoreGraphics call for a while.

William: Good luck with your future endeavors, and thank you so much for answering my questions!

Tony: You’re very welcome. Thanks for the interest!