I was driving up to work today and thinking about productivity and how I utterly fail when having to switch contexts between say, web programming to desktop programming to filling out status reports (which I avoid for this same reason) to working on finances for the board.  The problem isn’t that I can’t switch contexts fast and effectively.  When there are tools around, say a fairly nice IDE, I can easily jump from hacking on Python TurboGears controllers, to ToscaWidgets to plain old HTML, CSS and JavaScript.  If items are organized properly jumping from task to task, even in the middle of an ongoing task, is pretty much a non-issue.

 The Promise of the Desktop

Computers in general were created to simplify our lives but the Desktop was created to simplify the lives of office workers by taking the papers on a desk metaphor and adapting it to a digital world.  What we ended up with was the same (metaphoric) clutter that happens on any physical desktop, requiring us to manually reorganize our Desktop every once in awhile.  In this scenario we start out very productive but then that productivity starts to decline as the clutter builds up from every day use.

Good applications however have a way of focusing us on the task at hand.  To clean up in an application one can simply start from scratch.  After one task is done a fresh new slate awaits the next task.  Applications for the most part are fairly targeted at doing a specific task well, and if well designed presents the tools you will use for that task in a well organized fashion.  Mind you there are a lot of bad applications out there and the good ones could get much better but we can agree that they are in much better shape in terms of organization and focus then the Desktop.

Traditionally Desktops are places for launchers, various bits of information and a place to stick your most used data for easy access.  This is all well and good, and a tool for organizing oneself but the problem is the Desktop is global so that each task has to deal with the cruft from the last task.  There is no clean slate aside from clearing all of your tasks and with the more tasks a user has to deal with, productivity starts to decelerate at an exponential rate.

If the desktop wants to be smarter it will have to think and present itself as an application which organizes a user based on tasks.  Pagers take a first stab at this by allowing the user to organize open applications per workspace.  Whenever I have a different task - say communications (e-mail, irc, blogging) - I open the applications up on one workspace and then switch to another workspace for say development.  I still however get the same launcher and same files on the desktop, 99% of which I don’t use for this particular task.

I was pretty excited about the GNOME 3.0 mockup for workspaces in which the user had to specifically add a workspace by clicking a button.  By making workspace creation explicit instead of implicit it meant people who don’t need this feature don’t get confused when all of their windows disappeared, but also that the user has a chance at discovering why multiple workspaces are convenient.  The problem is the scope of the workspace changes were targeted at fixing the issue of confusion and not at making the user more organized.  It is a step in the right direction but in my opinion does not go far enough.

If the Desktop was an application to organize the tasks I needed to complete, a created workspace would allow me to first name it for easy reference, un-stick itself from modifying the global Desktop state and let me customize it for the task at hand.  I could then switch between tasks and have only the data I care about and the launcher for applications which would be used for the task at hand, present.  The Desktop would then allow me to delete a workspace when I will no longer be performing the task it was setup for and even save the workspace so it is no longer in my rotation of tasks but still available for recall in the future when I have a similar task come up (e.g. taxes require organization to do effectively but only consume at most a month of my thought each year).

But, but, but, you can do this with fast user switching today.  Well, yes and no.  Completely separate sessions would archive what I am looking for if it were fast and actually worked.  There is a laundry list of other features needed which fast user switching can’t provide:

  • Users would have to be able to be setup and removed on the fly with little fanfare (e.g. the add workspace button in the GNOME 3.0 mockups)
  • I still would want the ability to share a home directory and copy and paste data from one task to another
  • Switching to a “subuser” would need to be as easy and fast as ctrl-alt-arrowkeys are which means a spacial layout and no password dialog every time I switch

With the ability to setup a desktop focused on a task and tear it down or start from a clean slate without effecting other tasks, switching between the many hats one needs to wear in a typical day becomes much less cumbersome.  It also slows down the effects of productivity sapping cruft which will always build up over time.  True there is some overhead in setting up and managing each desktop but I tend to see this happen constantly.  As people switch their task priorities their desktop changes with it.

We use so many external and non-integrated tools to organize ourselves already, wouldn’t it be nice if task organization was built into the desktop and applications such as a todo list could key off the current task without any extra configuration?  Perhaps there is no good UI for this sessions in a session idea and it would in fact make life a lot harder for people.  Think about it anyway - if a Desktop is supposed to make the user more productive by giving them tools to organize their work, why not have that built in?  Why not make the Desktop and applications one big integrated application (not one big process mind you) for getting work done?

[read this post in: ar de es fr it ja ko pt ru zh-CN ]