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 ]
Kinda liked your idea.
Today I saw “moblin.org” website and liked the idea they presented there (Application Switcher).
If we could turn our “Desktop” into an application, as you say here, I think its interface should resemble something like that.
In fact, I liked the whole moblin’s platform work on the UI. As a regular gnome user I think we should take some ideas from them.
Just my 2 Cents.
Comment by TIAGOPRN — November 21, 2008 @ 2:46 pm
A danger with the “workspace” proposal is that the user will have to manage his workspaces. Giving the user something more to manage (create workspace, save workspace, delete workspace) just ups the burden put on him.
Multiple desktops currently are always there. The “managing” part is putting windows in them.
Maybe a solution for the “managing” problem would have to be devised first. PalmOS solved it by not having the user load or save anything, it was done automatically.
Comment by kanenas — November 21, 2008 @ 3:11 pm
@kanenas
I think once you create a workspace it would be saved for the next session, not sure though. Deleting or more likely hiding workspaces in my vision would simply be something you do similarly to minimizing or closing a window. Right now a user first has to understand what is happening when they move to a different workspace (this is helped by animations but even more if the user had to hit a button to add one). And every time you log in you have to reconfigure by going to each workspace and opening up the right windows. Now you would still have to open window in my vision since we all know how gnome-session work out but at least you would only see the files and launchers specific to that workspace’s task.
As for the management argument well, you are already manually managing things, this would be a different set of management items, sure, but it would be a more defined set which would be easy to document. However, except for having to oneoff create workspaces it would be much the same as we have now for people who don’t want to take advantage of task based workspaces. My idea above briefly states that after creating a workspace a user must unstick it from the global state in-order to customize it separately from the main Workspace. Without unsticking the workspace they work how the current workspace proposal works. Create four workspaces and you will always have four workspaces. For those who customize the number of workspaces they have this is the same amount of work. For those who are used to just having them, there is one extra step and you don’t have to touch it any more.
Comment by J5 — November 21, 2008 @ 4:51 pm
Is your vision similar to what KDE has created with their “zooming” user interface? I think the idea there is that you can set up different workspaces with different sets of widgets/taskbar arrangements etc, each with multiple workspaces belonging to each. I guess the idea is that you could have a “work” context and a “play” context, or how ever many other contexts you would like.
Hmm not sure I explained that very well, but I think the ideas are similar. You should take a look at what they’re doing.
Potentially these are cool ideas though. The only other thing I would say though is that although the desktop environment is important, the most important thing IMHO is how good the applications are, and I think this is probably where the free software desktop is lacking a bit at the moment
Comment by JonRob — November 21, 2008 @ 5:00 pm
Taking a more spatial view of workspaces is, IMHO, the way to go. For example, having one actual real desktop directory per workspace would be a first step forward. This way we could actually create a new workspace by using nautilus.
The whole idea of having one session-per-desktop is also something I have been longing for so many time. I would love to see/feel if this experiment holds.
Comment by Tiago — November 21, 2008 @ 5:31 pm
This sounds exactly like ‘activities’ from Plasma. You can create many ‘desktops’ with different setup (wallpaper, widgets, sticky notes, whatever ), easily switch between them and delete when no longer needed. The only thing lacking is store and load – when you create an activity, it stays until you delete it.
Comment by Ane — November 21, 2008 @ 5:38 pm
“Why not make the Desktop and applications one big integrated application (not one big process mind you) for getting work done?”
IMO _this_ is really the way to go.
Comment by Mirsal Ennaime — November 21, 2008 @ 6:43 pm
One thing I would like to add is it is important to get the workflow right here. Allowing people to just go off and rearrange separate workspaces isn’t what I am talking about. The idea is to come from the view that the desktop is an application to organize completion of tasks, not to fiddle with. For instance in eclipse I have different workspaces but I don’t move around items for each workspace I simply set up a new one for each non related project I work on. The only difference between the two are where the file browser is pointing to. So I wouldn’t want this to be practice in creating a Frankenstein desktop but as a way to concentrate on the data and applications needed for my task.
Comment by J5 — November 21, 2008 @ 7:21 pm
I think you are exactly right. I’ve been kicking around this idea.
The trick is making the transition from one to another fluid. I think this is doable by assuming some tasks such as checking email, listening to music, and managing a todo list are tasks that overarch the regular tasks done on a computer. These would have a presence on each workspace and a larger presence on a ‘home’ screen.
This task orientation can combine with a focus on content to abstract the file system away almost entirely. Furthermore, storing temporary files in workspaces could lead to less clutter over time.
Comment by Scott — November 21, 2008 @ 10:12 pm
I love the idea of “the desktop is smarter” and that you can group things together and open/close down workspaces as needed (and that they actually remember what they had open last time I used them).
Really crazy part?
OS/2 did this back in the early 90s.
And it *ROCKED*.
For all that “desktops” have come a long way over the years, from a development perspective, the most productive desktop I’ve had in 25yrs of working with computers was OS/2 2.1, with IBM Workframe/2 as an IDE.
Well, Workframe/2 wasn’t _really_ an IDE, but a set of extra components that integrated into your desktop and that provided you with a set of extra right-click context options for development projects; compile, link, debug, etc.
Although Linux, Gnome, KDE, OS X, and Windows have all come a long way in the 15 years since then, nothing even comes *close* to comparing to the development bliss that was OS/2.
Need a new workspace? Create a folder, and assign it the “Workspace” property. Double/right-click on a file to start any application, and OS/2 remembers that its associated with that Workspace. Need to switch context? Minimize the Workspace folder. *Everything* related to that Workspace minimizes. Switching back? Un-minimize the Workspace folder; everything comes back into view again. Need to log-out/shutdown/reboot? No worries, it remembers Workspaces and sessions across those too.
Sigh…. its been 15yrs, and we *still* haven’t been able to duplicate it…
Comment by Graham — November 22, 2008 @ 3:10 am
/me *whistles* and twiddles his thumbs…
Task is a sucky sucky word… Try TID – A Thing I’m Doing
Comment by Karl Lattimer — November 22, 2008 @ 8:49 am
This was a phenomenal read. If such a thing were available, I would use it nonstop. I manage >50 software projects and being able to store a desktop where I had, for instance, links to terminals in the various directories I needed, quick access to a this-project-specific subset of my evolution folders, etc. would make my life heaven.
Comment by Josh Adams — November 22, 2008 @ 10:15 am
I second this wholeheartedly! I used to do this by hand in Ubuntu Hardy with Gnome Sessions, but with that broken I find myself having to setup all my working environments each time for each task.
A great idea, like Josh Adams proposed is to also have like your terminal history for each desktop saved, I can recall the number of times I try to use Ctrl-R to search the history for a long-ago used command that was very long and very specific to a certain task only to find I didn’t write it down and it wasn’t in my history anymore.
This feature would really enhance productivity!
Comment by Roderik — November 22, 2008 @ 2:01 pm
The idea sounds mostly good – you click the ‘add workspace’ button and it shows you a window where you can select one of the presets (Gnome needs to have 5-7 good presets already shipping with the system) and set a name. Then a new workspace is created and the Desktop of that workspace is shown as a subfolder of the ~/Desktop folder named as the workspace name (it will show up as a regular folder on the ‘main’ Desktop). The new workspace will also have only the default panel applets.
The user would be able to add panel applets, files and launchers to the desktop and open apps. This will be maintained across sessions. The use could save the current workspace to a preset and destroy a workspace. (This should NOT remove files from the desktop subfolder)
Different workspaces MUST be under the same user and use the same home folder so that application setting and user data is shared.
Comment by Aigars Mahinovs — November 23, 2008 @ 3:15 am
Something to that effect, but remember GNOME 3.0 design dictates we no longer have panel applets(though we do have the desktop widget thingamajigs) . I’ve been thinking a little more about it in terms of the 3.0 goals and I think to eliminate a lot of issues such as where did my files go this could be implemented as just a named key (i.e. your Workspace’s name) where applications can key off of that (through a D-Bus call to Metacity) in order to provide per-workspace behaviour. For instance the most used apps app would be populated with the most used apps for that Workspace, the terminal would save history in a dynamic capacity (every time you hit enter a D-Bus call would be made) per workspace and a Desktop widget could become the hit area for dropping files per workspace. This would make it easier to implement and not so magically confusing as it would sort of look like you are dropping files into a folder and there would still be a way to drop files on the global state.
Comment by J5 — November 23, 2008 @ 11:42 am
A few other things to consider for Gnome 3:
- Common dictionary/spell checker API to allow one dictionary to be used for the entire system, with a user applet in the Control Center to backup, merge or install new dictionaries.
- Incorporate XSane, which is already installed by default by many distributions, as part of the Gnome desktop, and make it look like a real Gnome app.
- Work as an organization with companies and projects like the Mozilla Foundation, Adobe, OpenOffice.org to use common spell-checkers, address books, calenders, print dialogs, etc.
- Create Control Center applet for installing/managing fonts
- Encourage distributions to stop using the System ‘Preferences’ and ‘Administration’ menus and just use the Control Center.
Comment by Dylan — November 23, 2008 @ 5:26 pm
Thought of another one:
Install a launcher/shortcut in the Control Center for applications that use a web interface for setup/management.
Knowing that Cups can be configured at http://localhost:631 or Firefly (iTunes server) at http://localhost:3689 is not immediately obvious to some users.
Comment by Dylan — November 23, 2008 @ 5:35 pm
Dylan,
Spell checker – there is already enchant which most gnome apps use or should be using (Mozilla and OpenOffice are supposed to be using hunspell which enchant supports)
XSane – this has been a request from before I remember – not saying it isn’t important but a) no one has stepped up to do this work and b) local scanners aren’t as prevalent especially in offices where you usually scan and e-mail from a networked scanner/copier.
Work with orgs – We do in many capacities such as Freedesktop.org, the Linux Foundation and the GNOME Foundation as well as individual companies doing the work. Mozilla and Open Office have had work done on them to support the same file dialog, spell checking (I’m not sure if Mozilla has switched to hunspell yet but it was on their roadmap) and print. It all depends if your distribution has the patches in it (mozilla and oo have everything you asked for in Fedora 8 that I am running). As for Adobe, they use GTK+ for acrobat but it is most likely an older version and statically compiled. You need to lobby for that (though evince, which is quite good, has the integration you seek). For closed source software it is a pain as one must convince ISV’s which are often set in their old ways (we did get Adobe to turn around a bit though) but for open source software it is as easy as someone doing the work though there is often little interest on certain areas which might not be as good a use of a developers limited time. Some things just are prioritized down the stack so they take time to get done (e.g. scanners). Not that people don’t want to do them but we only have so many productive hours in a year.
Control Center for Fonts – there was one called fontillus or something like that – drag and drop font addition. You can do this by dropping fonts into a directory in your home dir but it isn’t so discoverable – better documentation would help.
Encourage distributions to stop using system pref/admin – This all comes down to preference and philosophy. I’m not sure which is better but Control Center isn’t a panacea either. I think GNOME 3.0 has some good ideas about this though.
Launchers for web config – that is up to the upstream to provide .desktop files – file a bug but really the web interface for cups is wrong for users (might be ok for admins but we have better ones). I’ve never used the iTunes server but short rant bellow about configuration.
Putting on my UI Designer Hat – Configuration is the antithesis to productivity. If the defaults are not sane enough or it requires an admin to setup then the desktop tools are the wrong scope and the casual desktop users should search for another solution (does iTunes need a system configured server to serve music?). If you ask for the Desktop developer to concentrate on such tasks when we already have a number of other desktop apps which will serve up music then you are asking them to waste their time on problems which are already solved or where the solution you require is suboptimal for the desktop. When thinking about design it is important to not look at what is available per say but what do you want to accomplish. “I want to configure my printer or I want to serve songs from my computer even when I am not logged in”. One could always ask for patches to what is already out there – like creating a D-Bus protocol and PolicyKit profile for letting user access a persistent song server. However when there is work to be done we can’t expect it to get done unless we ourselves contribute in some way (file bugs, write a patch, write an app, etc.). Even then you can’t expect it to get done or even be certain that your idea is a good one which will prove to outweigh the costs of developing it. I don’t expect my idea here is going to get done or if the people working on GNOME 3.0 think it is a good idea (or even in practice if it is a good idea). The only expectation I have is someone might read it, like it and implement it, or someone else will find thread of good ideas and come up with better ones or I can squeeze some time out of my busy life and implement it with the feedback I have gotten here.
In any case that is my rant – public requests and designs aren’t about get this done for me – they are more about fleshing out ideas and seeing what sticks.
Comment by J5 — November 24, 2008 @ 10:13 am
I would want the tasks to remember my views and keep certain views of certain apps. For example, if you were using two tasks and had Evolution running on both of them, changing tasks would move Evo over and change the folder I was working in, remembering this info automatically for the next time I used the task. I could shut down, return on Monday, and continue from exactly where I left off.
Comment by Daeng Bo — November 25, 2008 @ 12:39 am
@Daeng Bo,
Unfortunately that feature, session saving, didn’t quite work because it is up to applications to implement that and only a few ever did so it turned out to be one of those nice designs that didn’t work out in the real world (I think you can still invoke it from the command line). Fear not though, suspend/resume/hibernate does work pretty well these days, even on desktops I believe, and that gives you exactly what you are asking for.
Comment by J5 — November 25, 2008 @ 12:21 pm