Friday, October 07, 2011

activities

Several years ago now I had a minor epiphany while doing field research in the offices of friends and work associates on how people use their computers. The ideas led to the concept of "Activities", which I originally called "Projects" (we changed the name because it was about more than just things we could call a "project").

The idea was fairly grand: you communicate to the computer what you are currently doing and it adapts to that. You would be able to teach it what it means to be doing that thing: "I use these files, talk to these people, need this network connection, want these applications ..." The teaching would happen over time as you engage in your activity, whatever it might be.

Where to start with such an idea? Well, I started simple and small. In part because I was the only one working on it at the start and so I had to eat this elephant in small bites, but also in part because I had a lot of open questions as to how to implement things. I couldn't just easily look over someone else's shoulder who was creating the same thing and see how they did it: no one else was doing this as far as I could find. That made it exciting .. but it also made it a lot more like research than development. ;)

So it was that the beginnings of Activities were as different widget layouts in Plasma Desktop. You could zoom out and see each collection of icons and widgets and switch between them. It let you, for instance, open different folders in a folderview for different projects you were working on. Some people got it right away and started using Activities. Most people didn't, and I don't blame them at all: it was very hard to communicate something that was new to me as well and which we had only the basic sketches of implementation to demonstrate.

In a few days we release Plasma Active One. I just finished up my part of the release announcement and I have to say ... it brought up a certain amazing feeling that has no name (at least none that I was taught :) inside of me. You see, Plasma Active embodies Activities.

When you start it up, you get a view of an Activity and everything in it. You can add things to it. You can connect a web site or an image to an Activity while you are viewing said site or image. Applications launched are automatically associated with the current activity. You can quickly switch between them using a great little wheely switcher thing that's a pleasure to use. Activities sit at the core of Plasma Active's tablet UI and it works wonderfully.

I've shared my tablet around at BBQs and parties I've attended in the last few months and people immediately get it and see the value. I get questions like, "This is perfect for use in our office where we work on multiple projects, could we share Activities live with other people in a meeting or while we're working from our desk?" When people respond like that after just a couple minutes of seeing and using the device, it gives me tingles. :)

It's not all Plasma Active, though. When I read Dario's blog entry on Power Management and activities I just about cried. Ok, not really, but almost. ;) Finally we were seeing very cool usages of "how to teach my computer how I live and work". I now have a "Movies" and a "Presentations" activity on my laptop which I plan to use extensively in this manner. ;)

We're nowhere near the full capabilities of Activities yet, and I know that. We have so many other things to integrate and work on, so many possibilities that we haven't even dreamed of yet on how to use them, expose them, teach them.

But after these past few years of efforts, to see the idea and concept blooming in the open like this .. damn .. what a rush! This is what I identify as the "KDE feeling". :)

On that note, I have an activity ahead of me that I rarely engage in. Someting called a "vacation". I hear they are good for you or something. I'm taking two weeks off, and I dread to think of my inbox size when I return. ;) However, I'm looking forward to a couple weeks in the sun and culture of Morocco, a place I've dreamed of visiting since I was a young adult.

See you on the other side and happy hacking!

28 comments:

Giddie said...

Excellent job, and I hope you enjoy Morocco! I lived in Marrakech until I was 14 (although my parents are from the UK), and went through the French school there.

Of course I was too busy experimenting programming in BASIC on a SHARP PC-5000 through much of my early teens to do many of the fun touristy things.

Have a great time! You definitely deserve it!

dhaumann said...

Would be nice to have predefined Activities that makes sense in the long run.

If we assume that general users are rather unable to configure this themselves, these defaults are a must.

baxeico said...

Some time ago I saw a blog post of Ivan Cukic showing an activity aware implementation of "Places". To me this should be incredibly useful (I'm tired of having those boring Home, Desktop and Documents in my places :) ).

Now in each activity I have some folder view widgets specific to that activity and that is cool, but having an activity aware Places in Dolphin and in every Open/Save dialog could save me a lot of time.

Is it something we could see in Plasma Workspace 4.8?

Thank a lot for your work, and have a nice time in Morocco!

AGui said...

I really like this concept, but as it is new, people have troubles understanding it. Ideally, the advantages should be obvious to a new user, but I think it requires much more research. Adding some detailed information on how to use it, for example by adding a "i" button next to the "activity" entry when clicking on the plasma orb could help.

As people need to compare to something they know, usually, those who are familiar with linux desktops environments tend to compare it to virtual desktop, due to the fact that for now on Plasma Desktop, except for a few things, this is quite similar. But this is obviously not a good comparison.

After explaining the concept to some friends, I found that they get it more rapidly when I compare it to sub-user accounts, where you can personalize your environment according to your needs. Presented like that, I get less and less questions about how it improves your workflow compared to virtual desktops.

Martin Graesslin said...

Enjoy your vacations :-)

Fri13 said...

The idea is great and technology seems to be getting to the point. And I am having problems with the way how it is presented to users.

I have always tought the Activities means "Project". As "Activity" still is something what not even typical users know what it means in real life. Project is much easier to explain them as they get right away a touch to the idea. Like a folder what has files in it. That is the project, everything you need to know about that project, you place inside that folder.

What was mentioned about smart "Places", it is something what I am waiting.

But more and more the Activities start feeling it is mostly only for office users. Not so much for home users. This made me scary littlebit: "Applications launched are automatically associated with the current activity."

As that still maintains the problem that people do not switch activity when they need to do something quickly.
Example: I am writing a document, having few other documents and spreadsheets open. Then I get notification on phone about reminder to go specific shop what gets closed time X.

So I click shortcut to get browser open and there a bookmark to get bus routes timetable open and I can find that next bus is leaving in 12 minutes and I close the browser and I save document and place computer to sleep.
And the problem is, now the browser and that bus timetable page is marked to that Activity. Even that they do not belong to it anyway.
What I should have done, is to switch to other Activity first, then open a browser (or new tab) and from there the wanted site and then switch back to wanted Activity.

So what was left? I needed to do more complicated effort to do very quick and simply thing.

I can find the activities very great when user wants to focus just to one and single task, so only the important and related files, apps etc are available to the user.
So when user launch the email application, only emails related to that project are shown and "Places" shows folders what are important to that project as well.

We have activity in top right corner of the screen (unless you move it to other position when it has activity name in it and it is a tab).
What if people could link files, people, windows, applications, web pages, notes, text to the current project simply by dragging them over that icon and dropping there?

And even then with this manual linking, people could open web browser, do a quick check and return without affecting the current project at all.

As if it is demanded that user need to start doing something because technology otherwise does mistake, it is not well designed.

As sometimes, when you are writing a document with multiple documents open. You just want once listen music. So you open music player and you put relaxing music playing and you work. But still you don't want that music player is linked to that project anyway, so next time when you restart the Activity in school, your music does not get started to play or is not opened same time.

The computer can not know when user wants to add something to project (or Activity) and when not. And if user needs to start being nanny for the Activities, by un-linking unrelated apps, windows and files what were linked automatically, technology has failed.

And with my idea of "link to this Activity/Project" (when dragging over the icon on desktop), it would allow user clear the desktop fast from unrelated apps, windows etc by clicking the icon and choosing "clean project/activity".
And every application or window what does not belong to it, gets closed without questions.

How I see the Activities is what Apple did with Mission Control. They made great UI for it, at once gesture (or click) you get glance what you have open and what is situation.

Naproxeno said...

Have a nice time in your vacations!

Rino said...

Fri13,

I believe your idea, about dragging applications on the cashew, is great. But please, let me try to improve it. :)

In my opinion, it should not be associated to an Activity a set of applications, but a set of applications' contents. Dragging an application on cashew should tell to plasma: "Hey, if I don't close this application before I close the Activity or the PC, you remember to reopen this application with these contents next time I chose this activity".

That's because I don't want, for example, that okular will be associated forever to an activity's virtual desktop, but only okular's content...

Again, when I open a file associated to an activity, plasma should NOT switch automatically to that activity because I could want to open simply that file and not all the activity.

Entering more in details: for me, to obtain well working activities, it is necessary to introduce two new features:
1) Different activities should have different panels;
2) Different activities can have a variable number of virtual desktops.

The first feature, is necessary to obtain a better consistency too, because we have different plasmoids for different activities, and panels are simply plasmoids' containers.

The second feature would be very useful in some situations. For example, when I write a paper, It's my habit to use 6 virtual desktops (one for matlab, one for kile, 2or 3 for pdfs and one for the browser) but in normal use I don't need of so much desktops.

Bille said...

You want to be careful with sharing random tablets at parties, the Swiss may be cool but you can end up in prison for a long time elsewhere.

;)

A_Bar_Steward said...

Activities are a great idea but i don't use them on my desktop because they don't fit my way of working. I have 3 activities, work, play and mailing lists. Each has their own email account, browser book marks and working directory. I have to have 3 linux logins to keep them separate. I just wish i could have an instance of kontact, browser and working directory in each activity so i didn't have to log in/out all the time. Maybe only viable for a desktop or laptop.

Fri13 said...

@ Rino

"In my opinion, it should not be associated to an Activity a set of applications, but a set of applications' contents. Dragging an application on cashew should tell to plasma: "Hey, if I don't close this application before I close the Activity or the PC, you remember to reopen this application with these contents next time I chose this activity"."

I did make my idea clear, sorry.

The "application" idea was that we have technology to understand different things and present different data with different ways.

Example that user has KickOff launcher or "App Launcher" in panel (showing only most used apps). And we have right click context menu for files what shows "Open with..." menu what includes many different kind applications for that specific file type.

When user drags a application to "activity widget" on top right corner of screen, it gets linked to that project so that when user opens KickOff or "App Launcher" that application is promoted there.
And when user right clicks the project files in Dolphin, they are suggested to be opened with those apps first and not the default order what is in default activity following the SystemSettings configs.

Or user could see the apps what just linked to project as the ones what are needed in the quick launch panel.

So instead user going to place same apps to different places (kickoff, quicklaunch, app launcher, desktop, context menu) it is only needed to link it from one place for that specific project/activity.

Same thing is with directories.

And when user links files (non-dir) to project, then those files are presented in "open" dialog or in "most needed files" lists separately.

When user links window, then that application and content of it is stored such way that the content position and state is saved as well and the window location (virtual desktop) and state is as well stored. It is more for situations when user needs to start in beginning of the day a specific setup with empty files or few specific apps with specific files open. And along the day, the user can still clear and control the project in "mission control" kind a UI.
If user drags people contacts, address etc to "Activity widget", then those are suggested by nepomuk itself to apps.

It is easier for user to control what belongs to what, than allowing automatically things to be done and user later removing or denying them. It is "I want you to go there, you be there and you there to stay as you are" instead "Don't go there, you can not do that and you definitely can't do that"

"1) Different activities should have different panels;
2) Different activities can have a variable number of virtual desktops."

I agree in both 100%. But I would even add 3) what is that different virtual desktops should have different panels (but same widgets etc).

It would allow to have one project, with multiple different applications scattered with multiple different type documents to different virtual desktops, having specific panels for those tasks.

And when having "Activities" to separate projects from each other, one person can manage multiple projects easier way.
Like when writing document, having Words and Stage open in one virtual desktop, other virtual desktop with Krita and Flow and third virtual desktop with Email, IM, Web browser.

And all files, contacts and sites what are being used, belongs to same and one project. And when needing time to change project, user opens just "Activity manager" and swap it to other what has full set of other apps, files, windows, people, virtual desktops, bookmarks etc.

People can not do multitasking. So virtual desktops allows people to focus to one task at time. Project is what includes multiple tasks. And people still can work multiple projects at same day.

Wren said...

I use KDE/Linux professionally every day for the past decade doing CGI for feature film. I use every aspect of KDE interface to get through all the multi tasking and work. I even sponsored the development of window tabbing for KDE 4.x. So long story short I like, use and care about KDE. But I don't get how to implement workflow/use activities in a positive way... makes me feel like I'm dumb, missing something or this is just way too complicated execution of what was a good idea that got convoluted...Help please. I want to get it and I'm sure you want everyone to enjoy the "greatness".

Bassboy said...

But I don't get how to implement workflow/use activities in a positive way...

Pretty much the same. Activities seems to be a great concept on paper, but is definitely a different paradigm from any other desktop system out there. It would be great if we could get real examples as to how people use them.

I generally use only one activity, and switch between 4 or 6 workspaces within the same activity. ;.;

Thomas Thym (ungethym) said...

Vacations? Isn't that the time you go to work without being payed?

megabigbug said...

Here some improvements I would like to see in the activity system:

- Different activities should have different panels.
- Manually stop an activity doesn't make sense from a user point of view. Unused activities should be stopped automatically after some amount of time.
- The activity switcher's icon could be the one of the current activity. It could also display an arrow for indicate there are several activities.
- A movie activity should provide movie covers like bangarang.
- Screen should not be shutdown when a movie activity is active.

Dion Moult said...

Aaron, do us all a huge favour and do a screencast showing a sample workflow showing all the power of activities. That will answer so many questions, prove to people how useful (or not - if you want to be devil's advocate) it is, and get support instead of the usual comments you see to all of your blog posts.

mythus said...

Please do make it possible to have different panels on different activities, or even no panel on some and many panels on other activities. This is perhaps the one wish I've had for activities since 4.0.

If this one thing comes to exist I would be most grateful, more so than I already am for you guys providing such a wonderful desktop experience.

Fri13 said...

- Different panels for different virtual desktops

- Different panels for different activities

Panel should not be tied to activity only but be just like any other widget and being separated from different virtual desktops if user checks "different widgets on virtual desktops".

Rino said...

@Fri13

I didn't understood completely your first post, sorry, my fault...
Now, I realize we were saying the same things but in different ways :)

Eric said...

It took me a while, but eventually I got activities and now they are my FAVORITE thing about KDE and the reason I use it on as many systems as I can.

Just promise me one thing, Aaron - when you add cool new features to it - like the ability to have different bars on each one (the bar that has the Kicker) - you need to communicate to us that it's there and how to use it.

Also, please do what baxeico said and make it so you can set in activities what the default save location is. That would save me SOOOO much time when saving stuff!

GREG BATMARX said...

Activities is a superb idea that starts to take shape.
For me, even more important than having different panels in each activity, (that I totally agree!) is the easiness to change, merge and compare activities like we can do now in the virtual desktops.

So we need an activity grid (like we have a virtual desktop grid) and an activity cube.
An advanced implementation of the activity cube would show the virtual desktops grid rotating in the activity cube so we could see all of our different workspaces among all of our activities! That would be awesome!

We need also to advance the functionality of the grid concept,(so we could, not only to move apps from a workspace to another but also to make a lot of other things like copy paste or for example transfer songs or movies files to vlc etc)

Another good idea is to implement zeigeist functionality to the activities concept and to empower them with the inbuilt capacity to record them and save snapshots of them that could be used as prototypes that could be shared.

Well, all these require much new code and effort and personally I heavily self-study so I can contribute some of them in the future.

Anyway, the KDE advances so nicely and it is already by far the most powerful GUI of our era!

Thanks Aseigo for helping so much for this!

dyfet said...

Personally I really liked the activity concept. It depends on how modal one behaves though. Sometimes I just like to slop together different things rather arbitrarily or on impulse, rather than having a clean concept of doing "x".

Still there are clear activities that are not like that. The example you cited, a "presentation" activity, is a rather clear and well defined example and use case. If nothing else, activities makes one consider re-thinking the way one does interact with the desktop, and it is one thing I do find particularly fascinating in kde. I really appreciate this work.

While some mistakenly see activities as "the same" as older virtual desktops, I think what we used to call virtual workspaces should really converge with multi-head support; if you have less monitors at the moment, they simply become virtual workspaces instead and hence otherwise interchangable.

Activities then cleanly and clearly sit above both as your current environment. Particularly this is clear in the "presentation" example, where you would have a second (external) display for the audience, and if you are setting up or working on a presentation on your laptop without the external display, the audience view is then just a old-school workspace, while the current configuration of both for a presentation is an activity. If I had that, I could become a kde user for life :).

Elder Geek said...

I really need to see some really good examples of Activities. There should be some demo mode. Or a website with a flash-based "fake" kde where you can see them sort of work.

It is much like trying to set up E17 from scratch. When yous see other E17 themes and setups you get the idea of all the cool things you can do. Just starting from scratch, it is hard to tell how to combine things or what that will add up to or create.

Right now an Activity to me is a fancy virtual desktop with its own wallpapers and widgets. That does not impress me. I can do that with Fluxbox and screenlets. I am sure Activities can do more or someday will do more. I really need to see some good Activities in action to get an idea of what I am embracing.

Just making the "Activities" Button more prominent is not a good enough introduction for people to be able to get what it really means.

decentralist.wordpress.com said...

I've played with Activities slightly on Kubuntu and Sabayon, but I don't quite get it. I think I need a video presentation that explains it well.

Sidicas said...

@dyfet "It depends on how modal one behaves though. Sometimes I just like to slop together different things rather arbitrarily or on impulse, rather than having a clean concept of doing "x"."

If you look at psychological studies, they've consistently shown over the years that the more ways you divide somebody's attention, the less efficient they are at getting work done in a given amount of time. They've been saying for years that it's far better to have people focused on completing one task at a time. Anybody who has ever tried to do some serious programming while having friends/family constantly sending them instant messages or having e-mails pop up, knows exactly what I'm talking about..

Computers are getting faster, and people spend less and less time these days waiting on computers, so there is less and less need to be multi-tasking so much and that's a good thing because it makes people more efficient. The horrible mess of multi-tasking across so many completely unrelated tasks which Microsoft started should just go away on it's own.

Fri13 said...

@Sidicas

"If you look at psychological studies, they've consistently shown over the years that the more ways you divide somebody's attention, the less efficient they are at getting work done in a given amount of time.

They've been saying for years that it's far better to have people focused on completing one task at a time."

There is two different things in that.

1) Give 60 minutes time to do a three task in order and it is done faster than having 60 minutes time to do two or three tasks same time continuesly switching from each other.

2) Throw away everything unrelated to the current task and it is done faster.

What idea is behind activities? Same as with virtual desktops, but with more complex way.

With virtual desktops people can group all needed apps and windows to that task what needs to be done.
Still having other tasks ready to be processed in other virtual desktops.

Like project X on virtual desktop 1, including few documents open, a powerpoint and addressbook of project members.

Virtual desktop 2 having windows open for project Y. Few documents open, a video of project and few web browser windows showing few websites.

Virtual desktop 3 having open few youtube videos, IM and personal email account.

So there is three tasks in list and when user switch virtual desktops, he is cut off from other tasks and can focus just to that task at the time.

With single desktop situation is what you mentioned, you are writing document of project X and family member sends IM to you.
Every project window and document and personal resources are mixed to one single working enviroment.
Virtual desktops allows user to focus just to single task at a time. They can do multiple tasks at given time but in linear mode. "First I finish task at desktop 1, then I finish task at desktop 2 and if I have time while waiting, I can chat on desktop 3".

How does virtual desktops be different from activities?

Only with few small differences.
- When you get notification of IM message from family member, you dont get it when you are at different activity than "social activity" where he IM exist.

- When you get notification of new email about "Project X", you dont get it to "activity Project Y" but just for "activity Project X"

So notifications are related only to those activities and all virtual desktops in them.
But just with virtual desktops, you still would get notifications on every virtual desktops.

Other benefits with activities are that you can spend less time to search related files and directories.
As when you create new activity about project X, you can set directories to dolphin sidepanel so they are fast to be opened in open/save dialog.

And when you save files, you can see only the project X files in applications File > Recent files menu.

So you can prepare activity to be such that only wanted directories and files are easily accessible, without spending time to searching them.

All what I would like to see, is a better notification system for KDE. As then when notifications are passive and easy to pass or open when needed, activities loose more point to exist.

http://forum.kde.org/brainstorm.php?mode=idea&i=91258&page=1#anchormain

Aaron J. Seigo said...

while virtual desktops can be used like that (and sometimes i personally use them the way you describe :), it's not something that many people (%) figure out and feel comfortable with. it's an unexpected result, perhaps, but it's hard to argue with the reality of it.

the other fine point is that unlike virtual desktops, activities can influence all kinds of aspects of the user experience. in 4.8, for instance, powerdevil has activity aware settings that let you (if you want, of course :) to assign different power management behaviour to different activities.

so activities takes what is possible with virtual desktops, wraps it in a far more user friendly concept (activities are a big hit with people who try out Plasma Active tablets i'm finding, for instnace, while virtual desktops rarely are appreciated as much) and take the concepts far further.

cool discussion here about activities in general :) thanks to everyone who's shared thier viewoints.

Fri13 said...

the other fine point is that unlike virtual desktops, activities can influence all kinds of aspects of the user experience. in 4.8, for instance, powerdevil has activity aware settings that let you (if you want, of course :) to assign different power management behaviour to different activities.

Was it as well possible to do vice versa?

That activities get changes depending of environment and not environment changing because activities?

What I mean is that we have "sensors" what can be anything what sense where, when, how and why computer is used.

The sensor is not sensor (like accelerometer or temperature sensor) but a software and hardware what is used to other things.

1) Person connects to school network and school activity is started (or asked does person want to switch to it?)

2) Person connects to home network and home activity is started.

3) Person connects to other than office network, so work activity denies to open without kwallet.
(Going even far from this, but then it is not possible to: decrypt emails/partition/file, open work email account, show and connect to work SSH/VPN etc)

4) Person insers movie DVD to drive and pop-up asks does user want to start editing (ripping etc) or home theater activity?

5) Person opens a tagged file or program and gets swapped to related activity, like opening a qtdesigner person gets designing activity open with all related files tied to that process. Or when opening a project X document, a project X activity is swapped if such was created and modified.

6) As you wrote blog post about the people who made the powerdevil avare of plugged external display and it switch the powerdevil: When user connects a external display/projector, it is offered to/automatically open a specific activity.

Example, I have project X presentation coming, I have project X activity and I know I will keeping it in specific place.

So when I create the presentation, I can create the presentation activity for that presentation. Using "sensors input" so when calender meeting point shows by akonadi that I am having the presentation and I am connected to office network and I have data projector connected, then it opens automatically a created activity for presentation of project X.

So the activity shows all needed apps (stage, Okular etc), needed reports (not the sources and drafts and emails etc) and sets powerdevil to presentation mode, turns all notifications off (expect important ones like battery 10% critical state) and prepares the desktop to be clean with corporation background etc.

As that is something what I am expecting from activities. So that it understands the environment.
That I can preconfigure setups or even "sensors" templates what to use on activity and modify them specifially for that activity if needed.

I would need a clear marker (like cashew in top right corner) where to drag files, windows and programs to tie (tag and so on) them to that activity. So I can build fast way a activity what I want.

I can see how activities are very powerful for long term situations or tasks what are repeated.

Like one or two times a week I watch movie in my 40" LCD.

Or that I have in school 15 lessons of history what I have marked to my calender.

Or that I am doing a photo collection with specific photos and writing the background data etc.

(all those needs lots of "sensors" as nepomuk, akonadi, powerdevil, bluedevil, networkmanager etc)

Android has such application:
http://goo.gl/HQFSC

As for small things, daily random things the activities ain't so great (what to do when user wants to show school friend in history lesson youtube funny cat video in youtube what he found yeasterday?) but for long term situations and habits it will do wonders.