Since last Akademy, several plasma people have been thinking about activities, and virtual desktops, and What It All Really Means. We had some good discussions at akademy, and at tokamak, and online too. KWin and Nepomuk people were involved as well, although I wish that KWin guy (..mgraesslin? sorry, I suck at names) had been able to stay at tokamak longer. :)
We’ve emerged with a new vision of what activities are all about, and I’d like to share that vision so that I don’t get blank stares when I mention how much I wish I had activities already. ;)
Where We’re Going
See, what we have right now, that we call activities… they’re not what I think of as activities any more. They’re just desktop containments, groups of plasmoids. They can have a name, but nothing makes use of that yet. What I think of as an “activity” is the entirety of what I’m working on at the moment – be it a kde-related project or a university course or just reading lots of comics. :) This activity includes several windows from several applications. It includes files needed for the project. It includes a set of plasmoids, like the one I put my list of math questions on and the calculator plasmoid to go with it. At times it includes only *part* of an application: show me school email folders when I’m doing schoolwork, hide the KDE lists so that I’m less tempted to procrastinate. ;) Some activities have lots of associated windows, and since I can’t carry around a spare monitor with my laptop, I’ll use virtual desktops to have more “space” to lay out my windows for that activity.
When I’m working on one activity, I don’t want to be distracted by other activites. Everything related to the other activities is out of my way, sitting on *those* activities only. If my hardware isn’t up to leaving all my activities running at the same time, or if I just want to pack one away because I won’t be needing it for a while, I can do so, and everything that’s no longer needed will be closed. When I want that activity again I can load it up and return right where I left off.
If I open a document tagged for a certain activity, it’ll be associated with that activity by default; if there’s no obvious association then the new window will be available on all activities until I choose to associate it. Windows can be associated with any number of activities, so I can have anki associated with both of the courses I use it for and still not be bothered by it when I’m hacking on plasma.
Now, that vision is fairly bold. It includes a lot of features that don’t exist at the moment. You will *not* see all these features in KDE 4.4, not by a long shot. However, a lot of the framework already exists. Code was recently committed to Nepomuk to represent activites there; and from there, any program can ask what activity we’re on and update itself to fit. KWin code can be written to hide windows that don’t belong. Plasma will have a new bar (a bit like the new add-widgets bar probably) for managing actvities (not until 4.5 now, I’m afraid). Saving little mini-sessions of windows along with the activity is something I’m going to investigate over christmas (hoping it won’t be too painful :).
There are still details that haven’t been filled in (like, what happens to the activity-per-desktop setting? is it possible to have a mode where activities and virtual desktops act as one?), but we have another tokamak in february, and I’m sure more good ideas will come from that. Once things actually begin to take shape, more of the pieces should fall into place, and in the end we’ll be another step closer to a workspace that enables you to get work done instead of having to be worked around. :)
How We Get There
Here’s a rough roadmap for when I expect these features to show up. It’s not set in stone, of course; we could get an awesome volunteer who goes and does half the work in a few weeks, or we could lose a key person to other commitments and not be able to get it done as fast… but I’m hoping it’ll go somewhat vaguely like this:
Plasma still has a ZUI, although the only feature not reachable from elsewhere is dragging a widget between activities. Nepomuk advertises which activity the user is on, but no applications are listening yet.
Windows can be associated with activities; those windows will only show on the activities they’re associated with. Plasma will have an activity manager instead of a ZUI. Saving and loading the plasma side of activities will work, but windows won’t go with them.
Windows will be saved and restored with the activity. Applications will start offering the ability to show data specific to the current activity. Experiments with automatically associating new windows to the right activity begin.
So, it’s probably going to take a while – but I think it’ll be really cool, and really useful… almost every day now I’m wishing I could organize my stuff by activity instead of having lots of windows all mixed together… even with 6 virtual desktops :P there’s just not enough flexibility in what we have now.