Saturday, April 4, 2015

The Space-Time Continuum of KDE's Activities

This is not about KDE e.V.'s new time travel program. This is about Plasma and its concept of Activities. They have been a topic of hot debates. Some people love them, some don't care. Björn called for finding a new metaphor which better fits the mental model of the user, so that Plasma's activities can appeal to a larger group of people. Here are my thoughts.

Orthogonal or hierarchical?

The premise of Björn's quest for a new metaphor is that the current one doesn't fit the mental model of the people using activities, especially how activities are related to virtual desktops. He sees activities not as an orthogonal concept to virtual desktops, but as an hierarchical one.

Matching the mental model of the user is crucial, because this defines how natural and easy it is to use them. You can learn abstract concepts and be trained in creating new mental models or in using rules to work with concepts without having a good deeper understanding. But this needs time and effort, which especially casual users are rightfully not willing to spend. And it's not fun.

Orthogonal concepts are independent of each other, they live in different dimensions, you can use one without affecting the other. Hierarchical concepts use the same dimension, but there is an order, one concept is above the other, such as one providing a grouping for another.

You could see activities as independent of virtual desktops, and that's how they are implemented. But there is one issue with that. The presentation we use addresses the same mental model, that of areas arranged in space.

That makes it hard for the user to know where things are. Does the screen present an activity or a desktop? Do I have to change the activity to go to my email client or do I have to switch desktops? When I go to the left or right, do I change activities or desktops? You can learn the concept of activities to be able to answer these questions, but if you use the same mental model for activities and desktops it can appear confusing and inconsistent.

I think there are two ways to address this issue. One is to clearly express that the concepts are orthogonal in the user interface and the naming. The other is to make activities and virtual desktops fit into the same mental model by clearly separating their responsibilities, and eliminate the metaphors which use the same mental model for different parts of functionality.


One powerful way of expressing the orthogonality of activities and virtual desktops would be to represent virtual desktops in space and activities in time. These are two different dimensions, and it actually would go quite naturally with what the two concepts represent.

Virtual desktops are different segments of the space of your desktop. They are usually arranged in a plane and there is a relation of left/right and above/below. Desktop effects support this model by providing spacial transitions when switching desktops.

Activities are less about where you do something but about when you do it. They represent projects or different times of your usage of a computer. You program as part of your job in your IDE in the morning, browse the web and watch YouTube movies in the evening, and once everybody else is sleeping you play a game. You use different applications at different times, need different configurations of your desktop, and there is a relation of before/after between these.

To express this in the UI the activity switcher and configuration should not use concepts of space which overlap with how virtual desktops are presented. The closest idea I have seen is the activity switcher in Plasma Active. This uses a different and specific mechanism to switch activities. It even vaguely resembles a clock with its circular movement of activities when browsing through available activities, expressing the concept of time.

Screenshot from contourproject
When going with this mental model and the corresponding metaphors, suitable names for activities and virtual desktops could be "times" and "spaces".


Following the idea of a hierarchical relationship of activities and virtual desktops we could represent them using the same dimension, but express activities in groups of virtual desktops.

Here is a mockup illustrating this idea:

Activities would control how groups of virtual desktops would behave. They would be used to define what wallpaper and which desktop widgets to show, what applications to start or stop, what settings for notifications or power saving to use, etc. All this would be tied to on what virtual desktop the user is. But there wouldn't be two different ways how to switch between desktops and activities, but there would only be one. Activities would implicitly be switched by switching between virtual desktops.

So when you are at work you would be on the left side of your desktop with your corporate wallpaper, running IDE, web browser, what you need for work. The right side of your desktop with the games would be shut off. For a presentation you would go to the desktop which switches off notifications and power saving. Email would be there as a shared resource all the time. In your free time you would be on the right of your desktop, with nude pictures of your cat as background, running inappropriate videos in your web browser, and switching off everything else than your games for maximum frame rates. Or something like that...

In some way activities would be a subset of virtual desktops and in some other way they would be a configuration for a virtual desktop. This follows along the lines of the "Different widgets for each desktop" configuration option, where each virtual desktop more or less gets its own activity.

The hierarchy would not strictly be activities above and desktops below, but there would be two concepts, the group above the desktop, and the configuration below the desktop.

This would need a few changes in representation of activities and virtual desktops, but it could better match the mental models of users, because concepts are clearly separated and existing understanding of controls can be used.

When going with this mental model and the corresponding metaphors, suitable names for activities could be "desktop groups" and "desktop configuration", and virtual desktops would just remain "desktops".


Naming is important, but even more important is expressing concepts clearly and unambiguously. In the user interface behavior and visual representation trumps names. That said, for talking about the concepts, especially in code and documentation, good names are essential.

To me seeing activities as configuration of groups of desktops is most natural. That matches my mental model.


  1. From the WorkFlow Project times....

    1. Completly agree: that plasmoid has the perfect workflow of activities.
      No need for the exhubertant ui ( although very nice ), but the functionality is all there.

      Expecially the: Activity -> virtual desktops handling.

      Currently what is missing is the virtual desktops belonguing to an Activity, in a sense that an activity can have different amount of virtual desktops.

      I have a very perfect usecase for this: listening music, i just need the folder plasmoid for the music dir and one virtual desktop.

      For working, i need at least two or three virtual desktop to manage editors, konsole, web browser.

      The "activity per desktop" usecase is also valid and handy ( some can prefer one or the other and none is wrong ).
      The main issue with KDE4, was the it allowed both of them, but neither was fully functional.

      One use case that i never saw mentioned was dashboard per activity, where the widgets would not be placed on the desktop, but on the dashboard. ( the dashboard is so handy but so underused ! )

      By the way, i am one of those " dont even consider a desktop a real desktop if it doesnt have activities "

  2. First, let me agree with you that naming is important. However, I do not think that a time dimension is the right methaphor in the context of KDE activities.

    Your suggestion to view and visualize KDE activities as groups of virtual desktops sounds interesting. However, I would like to raise to issues:

    1. I do not believe that it makes the concept easier to grasp. Actually, I had to read your description twice to make sure I understood it correctly. I think KDE Activities are, as implemented at the moment, quite easy to understand. I believe, that not the concept is confusing but the name "activity". Particularly since GNOME people use the term "activity" for a different concept. Personally, I'd rather call KDE activities "workspaces" or maybe simply "spaces" (People should not confuse it with the kde workspace package). I definitely think, we should use a spatial and not a time-based metaphor.

    Let's also keep in mind, that it is a power user feature and maybe not everyone has to use it (I typically configure one KDE activity and one virtual desktop when I installing a system for normal users. This is OK for most people and Windows users have lived like this for decades ;-)).

    2. Treating KDE activities a groups of virtual desktops as you suggested may remove some of the flexibility a KDE user currently has. In fact, I fear it would defeat the whole purpose of why I am using KDE activities.

    I heavily rely on the virtual desktop pager. And for me it is important that the desktop pager only shows information from the current activity. A desktop pager showing all virtual desktops from all KDE activities woud be to large for me (in my case 3x6=18 Virtual Desktops). Additionally, your suggested model does not allow it to share some windows across multiple KDE Activities (e.g. the browser). So please do not change the current implementation just to make it fit some mental model.

    Background information:
    Let me quickly explain how I use virtual desktops and KDE activities.

    - Virtual desktops:
    I use virtual desktops to spatially organize the program windows I often need (most windows are maximized).
    Consequently, I know extactly, If I want to switch to program X, I have to go one virtual desktop up/down/left/right instead of keep pressing ALT-Tab till the correct windows shows up. So virtual desktops give me the advantage of having a spatial alignment of my windows.

    - KDE Activities
    As most people nowadays, I do not shut down my computer regularly. I just suspend to RAM (which finally works reliably under Linux). I also keep most programs running all the time. Consequently I have all my important programs neatly aligned in virtual desktops every time I open my laptop computer.
    Since I have many projects, I have quite a number of programs I constantly use (e.g. 3 IDEs: Eclipse, Android Studio, MonoDevelop). I would need plenty of virtual desktops and switching would become cumbersome (e.g. going one desktop to the right and 3 up).
    KDE activities allow me to separate my different projects/tasks/activities. So I have separate KDE activities for Android, Java and C# development.
    The virtual desktop pager then shows me only the virtual desktops that are relevant for the current "activity" and hides the programs, which are unnecessary for the moment. I can, however, still quickly change between my activities. So KDE activities allow me to group my virtual desktops into what I would call virtual workspaces.


Team Profile

What makes a great team? One important factor is that you have a balanced set of skills and personalities in the team. A team which only con...