{November 28, 2009}   The Future of Activities

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.


Profit! ;)

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.

Tim says:

While this sounds great I worry that UI which makes it easy and fun to use for everybody willl be very hard to do.

Sure KDE can use it, but people outside of KDE … I don’t think so.
Polish and feature complete what you have right now before chasing the next 5 year plan.

Less is more

carlo says:

the “one activity per virtual desktop” is the only feature that might bring me to spend the time to set up activities on my pc…

Fri13 says:

You can do that right now with 4.3, you know that?

the_madman says:

Will this tie into the new Geolocation engine that’s been developed? Having one of these different, “activities” load automatically when I’m in College to when I’m at home would be pretty awesome, on the netbook side of things.
I guess another way to do it would be getting Solid to recognize different, separate wireless network connections, announce them, and have activities switch depending on wireless connection. That would be pretty cool too.

With me always looking forward to what’s coming, I find myself not appreciating what I have nearly enough – curse you KDE! :D

Mark says:

I wanted to ask something similar. It would be really usefull if activities depend on time, location (detected by the network environment or other indicators), a website I open or a message from specific person I read. At the moment (with 4.3 running) activities seem not really usable yet. But the feature looks bright :-) I hope, it will work out fine.

Chani says:

yes, location is another aspect of Context that was being worked on. I haven’t seen much activity recently but I’m sure it’ll come up at tokamak. :) the “I walk into a lecture hall and my activity switches to school/presentation stuff” use-case has been mentioned several times. :)

DanaKil says:

hello :)

“If I open a document tagged for a certain activity, it’ll be associated with that activity by default…”

It’s not entirely related but I was wondering : if I tag a folder (“Work” for my professional folder for example), is there a mechanism so that all files or subfolders in this folder inherits from this tag ?

With this, I can simply assign a tag in some root folders and all files inside will automatically be assigned to this tag

Chani says:

I’ve been wondering that myself. I guess one of us shold ask a nepomuk person. :)

nikos says:

If Windows are associated with plasmoids to make those (the plasmoids) visible/hidable, i think it would be better for users that don’t have a complicated computer life. (like me)

Nothing constructive to say, but I always think that having a “Productive” activity means it should turn off my computer immediately.

Yes. I’m not meant to be reading this blog right now either.

Chani says:

hehe :) but I can’t turn off my computer if my homework involves writing code. activites will let me shut out all the other stuff; I don’t want to *close* the plasma stuff I was working on because then I’d have to waste time setting it up again later, so with activities I can just stash it away and have only school-related things visible.

hmm, I wonder if the security stuff could someday be used like parental controls to not let me out of the activity until I get my work done… ;)

The Ffejery says:

“hmm, I wonder if the security stuff could someday be used like parental controls to not let me out of the activity until I get my work done… ;)”
Two words: Root Access

…that kind of spoils any plans to be productive by making your computer force you to. :P

Chani says:

but I have to make a conscious decision to use root. I can’t just absentmindedly wander over to plasma or my webcomics.

it’s kinda like the locks on bathroom doors – by design they’re easy to pick, but you wouldn’t actually do so unless there was a good reason.

Crvena Zvezda says:

Yes! Finaly Activities makes full sense to me :) This is what I’ve been missing all the time!

Keep up the good work! (Oh so I hope for some company to hire the resources needed for all of this to go in to KDE SC 4.5 :) )

Luke Chatburn says:

Heya :)

That’s a great idea… I’ve been thinking about something similar for several years. If you can get it running, it would be wonderful!

The snag in my thought process was that I’m interested in the next part that comes after what you’ve described… Networking. It would be lovely if you could designate a network location for all of your activity metadata, with locations of files, etc. and then have any of your machines connect to it and pull the current components that they wanted. Think about mobile phones, VOIP phones, media centers, tablets, network-connected picture frames, media extenders…

If you can get some of your project working (and Nepomuk makes it all possible), you’ve got a killer app. Extending it from there will be truly profound. It’s a better solution than desktop search, in terms of resolving current data dispersion/heterogeneity problems.


Jan Schulz says:

This will be a great addition to “Getting Things Done”: you get tasks sorted into Context like “at work”, “at home” or “at phone” (and others like “errands”, “waiting for” and so on. It would be great if korganizer also gainssuch support.

vespas says:

I can’t help but think that the separation between activities and virtual desktops complicates things. ATM I am using different activity per desktop and I think that for a lot of people there shouldn’t be a distinction between the two: maybe we can hide the internals and present an option to the user to either make all desktops identical (the default) or customise each with different plasmoids, wallpapers etc. The word “activities” is not shown to the user (they are still desktops, hiding an element of confusion, I mean how do you explain the distinction to a newbie? many people have trouble using virtual desktops as they are) but all the features you describe are there. The only downside to this I can think of is that you can’t have multiple virtual desktops per activity (but if you can easily clone activities with a simple interface this should be less important).
I hope this is clear. What do you think?

binarylooks says:

Wow, this is great. I also have been thinking about all this recently. Actually added a DOT idea about all this on just 2 days ago and now you write. I SO want to help you out. (Am compiling trunk right now)
I am going to write some activity ideas tomorrow and send them to the kde-usability list. Maybe we can get people together to colaborate on te nex interface.


+1 on activity per virtual desktop.
I’ve sort of got that in my personal setup, which I recently switched to awesomeWM away from Fluxbox.

Lots of virtual desktops, on two physical screens, each independently switched, and self-enforced activity per desktop.

Andrij says:

I think that these ideas in the article above are quite good.
But majority of users are not using even virtual desktops. So, activities – even one more layer of abstraction makes sense for quite a small minority of geeky people.
It is not that I want to tell that innovations in this field are not necessary – I think they are very useful and I will start using activities as they grow more mature.

trollicon says:

Your ideas are coming close to my wishes. But real separation of activities requires a lot of work.

I am right now trying to use my computer at work with different activities/sessions. For me one activity is an independant X session with an independant $HOME diretory as a subfolder of my user account. For example, I have defined 3 activites(projectA, projectB and relax) with 4 different $HOMEs pointing to the folders :

In each of those folders, one will find all the usual setup files, like .kde4 and co.

To start the sessions “projectA” for example, I use nomachine nxclient which executes a script, setting the user $HOME variable to /home/user/sessions/projectA and some other variables. I can start the session remotely or from within another session. I used to have a special activity “session management”, which would be a very limited X session running the real activities.

The benefits are that I can right now completely separate my activities. This works whatever program I use, be it a kde program or a non kde program
When I read some pdfs with okular from within one activity, the list of recently read pdf does not get deleted by me reading other pdf for another activity. I can work with octave/matlab in project A and B without having to hack octave matlab in order to make them support session management….

I see many advantages with my setup.

But there are many problems/difficulties:
– memory
– cut and paste between nx sessions
– kwin and X composite extension
– emails management, PIM (how to centralize/decentralize PIM information)
– file indexing
– keyboard layout problems with nx
– …
– passwords management

I setup kde globally for all my sessions using an additional kdeConfig activity and pointing the /etc/kde4rc file to the .kde4 of this KdeConfig session. Like this I can have a unified desktop feeling + specific activity settings. One nice detail which used to work (but not anymore) was that the Folder-plasmoid for each activity was pointing to the activty corresponding folder $HOME/Documents. And the title of the plasmoid would reflect the name of the folder and so the name of the session I was running.
As a conclusion, after some months of use, I still am working with this kind of setup. But it requires quite some efforts and compromises.
Nepomuk and the concepts you are presenting are very interesting.

For nepomuk to work with my setup, there should be a nepomuk database/session for each activity and the possibility to allow one nepomuk session to communicate with other sessions, a bit like beagle is able to query different databases of indexed files for example.
The final goal should be that :
– I can backup/copy one activity without the fear that I give someone confidential informations from another project.
– I can comeback to an activity after some months and everything is exactly as it was when I stoped working on this activity 2 months ago.
– it must be stable. Waht if nepomuk stops working ?

Whatever, I wonder if someone tried something similar to what I have tried, and if you and the other kde-guys consider this attempt as a completely crazy way of managing activities.

Chani says:

wow. yeah, I wouldn’t be willing to put that much effort into setting up separate activities… cool that you can do that, though.
I want to be able to just click a button and have another activity available, and switch back and forth easily…

hrm. the “recent documents” issue is a good point, though. I have the same thing in Qt Designer; I’m working on one project for a while, then I switch to another project and start opening ui files for that, but now all the “recent” stuff is useless; I end up using Places and bookmarked folders instead of anything “recent”

redsteakraw says:

This is good, because I like using the activities but the ZUI is way to slow for my EEE pc. I now put a side panel that is set to autohide with the activity switching plasmoid. How I see things are like this: Virtual desktops should merge with activities to the point where they become one. The name virtual desktops should be dropped and the new and improved activities should continue. Activities is a good name it gets the user into thinking about what they are doing. I think that you could have two types of activities Active, and Unused. The four most used and currently openend Activities are the active ones and are the running activities. If the activity is open it becomes active and is loaded into memory, on startup of an activity you get a session manegment of the previous opened windows and saved activity. This makes it easy to get back to work and helps to associate an Activity with what documents and applications you were working with last. when switching activities you can use the present windows and activities kwin effect to furter associate windows with the activities. More can be debated and worked out, this is just my idea.

here is the new kwin effect

Thanks to all the Kwin and plasma devs. Looking forward to the new plasma netbook edition. I love the new add plasmoids bar, it’s a huge improvement from the last plasmoid launcher.

Chani says:

the thing is… ignoring for the moment the question of whether we *should* merge activities and virtual desktops, there’s a question of whether we *can*. virtual desktops are very inflexible. a window is either on all of them or one of them. I’ve heard rumours that this assumption is built into any places – along with an assumption that there can’t be more than 20 of them (although I still doubt many people would *want* 20 of them running at once). you can’t “close” a virtual desktop. they’re organized by number. you can’t reorganize them. if you add one, the layout in the pager and kwin effects gets all changed around so that desktops that were beside each other may now be far away.

it may be possible to work around many of those warts. I don’t know if it’s feasible to work around all of them… the problem of how to “close” a virtual desktop that’s not the very last virtual desktop is probably the most annyoing one; how long would it take to shift everything on every desktop above that one down one number? what sort of weirdness could happen while windows are in the process of being moved?

vespas says:

if i understand correctly, currently every activity “has” all virtual desktops, unless the “different act in each desktop” is set. i.e. if i have 4 v.d. and 2 activities, there exist 4 vds for each activity. Then how about setting virtual desktops to 1 for all activities and making the pager switch between activities? so to emulate the current stock setup we would have 4 identical activities and the new pager; the different activity in each desktop option will become customise activities. or maybe we should find a new term for the activity/desktop hybrid to avoid confusion. workspaces?

redsteakraw says:

I understand now the limitations of the virtual desktops, what if the Activites mimiced the virtual desktops in features but were more flexible, This would probaly take more work and would be a long term project if took up. I guess the easiest solution is to creat a new implimentation alongside the virtual desktops, I guess the best thing is to ditch the numbers in exchange for the Activity names. The active and unused activities would solve the annoying close the virtual desktop problem and would just change an active activity to an unused one dumping the memory and the reasorces. Usining solid kdee should be able to calculate the maximum amount of activities that could be open at once. I guess if a window is moved it changes what activity session it will be saved to. I guess the best way would not to associate the moved windows as a default activity to be opened with. I bet there will be wierd bug but they shouldn’t be insurmountable. The activites can be much more powerful than virtual desktops, so in conclusion make a new activity type alongside virtual desktops with the per activity session management can create an encanced desktop experience. Thank you for looking at the possible promblems, I now know more because of you, thank you but also concider my responce.

Yagami says:

I have been a heavy user of activities since they came to KDE4.

I like the perviewDesktop activity setting, but the main problem is that its a 1 desktop per 1 activity.

what i would really like would be for an activity to manage and have an independent number of virtual desktops.

if i have an activity for working, i dont edit, manage files, search google for info,etc all in one desktop. for this activity i would need way more than one desktop.

but there are activities where one desktop would be more than enough.

a setting where each activity had , for example, 4 virtual desktops each, would be the best for me.

the idea would be : you are going to do a kinda of specialized work ( work or internet or multimedia ) : when you would choose that activity, it would change the whole content of your desktop. like if it were another computer.

another advantage for an activity to have its own virtual desktops set, would be that too many desktops become hard to manage. if i want to have 5 or 6 activities, i would have to have 5 or 6 virtual desktops.
having 5 or 6 activities , but each one with only 2 or 4 easy to manage virtual desktops would be perfect for me


Chani says:

sounds exactly like the workflow I’d like to have myself. :)

Fri13 says:

I like everything what I readed, but I just want confirmation for one thing.

Will it be possible to use different panels on the different activities?
Like I can have two panels on my home setup and one panel on my school setup?
Resized to be different length etc?

Chani says:

associating panels with activities? well, technically they’re windows too…. so it might not be too hard…

Fri13 says:

That I think, would many welcome. It is not nice to have different containers when you share same panels between all. You can not customize different functions to them and so on. The different panel for every container would allow user to add widgets to panel what are relevant to that container.

Like having a texteditor, kdevelop and konsole icons on panel for development container. But on connection container you would have kopete, kmail, konversation and konqueror.
For Office use you would have all office apps there and so on.

Now the panel makes the all activities just to show more like playgrounds than real different working environments.

Hopefully someone would take care about this for first versions.

Some1 says:

Did you take a look at Mandriva’s work for its last release ?

They’ve done a first implementation of a task-oriented desktop (based on nepomuk) and it’s very interesting. Perhaps you could discuss a bit with them ?

[…] needed at a certain time, and for a certain purpose, in a certain place. Let me suggest you reading this post from ChaniBlog, which was promptly circulated in the itsme tech team by […]

Your description sounds a lot like the “task focused UI” stuff which has been available in development environments like Eclipse for the last couple of years: Depending on the task you are working on, some parts of the interface are filtered, others emphasized and some completely hidden from the view.

Here’s what I am talking about:

Eclipse Mylyn:
Task Focused UI at Wikipedia:

It requires a bit of getting used to switching consciously between tasks – because you need to be aware that you changes tasks. Many people do not explicitly think about it that way (yet) but do so unconsciously. In the end I would never want to miss this kind of feature any more today, since it is definitely nearer to how human perception and workflow are really like. It helps cope with the information overload today’s interfaces bring – for a desktop even more than “only” a development environment.

I strongly support a separation between activities and virtual desktops.

An activity should be something like a parallel desktop-session, that includes virtual desktops in their simple, classic way. One can do that already by simply re-login on a second console with X while the first session on F7 sleeps in the background. But this is overkill and bad usage of ressources of course.

As for the point, that some people do not use virtual desktops as of now: everybody who has taken the 1-2h time to learn how to work with virtual desktops and getting used to them will never ever touch any DE again that does not support them cleanly(for that reason I do not touch even MacOSX if I am not forced to – the virtual desktops in MacOSX are not perfectly implemented so I consider Macs desktop unusable ;-) ).
That there are people out there, that do not know, how to work with a great feature tells nothing about the feature itself. And people, that do not even understand virtual desktops will certainly be even less interested in a technique like activities, that is much more complicated (yet quite intriguing for any power-user…).

richard says:

Hi – read with interest your comments re activities. I wondered of you could help a group of us with this problem (we have posted on various kde forums but no replies). I have four desktops each with its own icons, widgets etc etc – Main (Family), Office Work, All things Media, and System Maintenance.

What I find is that whatever I do, the system boots to a default of the 4th desktop (System Maintenance – no good to anyone except me!) I have tried session restore but that just boots to the last used desktop which could be any of them. What I want is to be able to have the system boot to the 1st desktop every time. Is this possible?

Chani says:

it’s not possible right now, no – but I was hoping to do some neat session stuff for 4.6, so hopefully someday. :)

in 4.5 it’ll probably be possible to close and re-open activities, too, which might help.

[…] with the focus on intuitive usage, KDE4 might just be not quite what you are looking for. →KDE4 is still mutating. […]

Comments are closed.

et cetera
%d bloggers like this: