Task centric computing

Hopefully you’ve just read my long rant on why Haiku ought to strive to be a modern OS instead of refining an old OS. Well it’s in the general section if you’re interested.

Here are some thoughts on interaction design:

I think you could classify human computer interaction into 4 generations:

  1. Computer centric. Everything you did was on the computer’s terms and you had to work around it’s limitations.

  2. Application centric. You start an application, for example a word processor, and work within it. If you want to do something else you start another application.

  3. Data centric. You have a picture, you can edit, email or print it. Another folder might contain some songs so the computer offers you to play them.

  4. Task centric. You want to take this photo from your camera, resize it, publish it on your webpage and notify your closest friends of the update. Your computer does it for you.

I think most OS:es have been application centric since early/mid 90’s, while OSX was among the first to take a data centric approach (though I admit I haven’t used Mac much, so it’s a little guessing). Windows has been traditionally app based but lately I think they’re trying to become more data oriented.

However, I strongly feel that the future is going to be task centric. Writing an OS from scratch is a unique opportunity to shed the old paradigms and embrace the future :slight_smile: So let’s take a look at this new stuff! (I’ve got a feeling this is going to be a long post)

Let’s compare the different approaches and how they relate to the context of getting your mail. It might not be a perfect example, but it’s the best I can think of now :slight_smile: Same numbering as list above!

  1. Connect to mail server. Issue command to list emails. Issue command to read an email.

  2. Start email application. It does all the low level stuff for you and displays the messages.

  3. System gives me a notification that an email has arrived. I choose to open it and the email app launches.

  4. It doesn’t matter to the user if an incoming message is an email, IM or on Facebook, just show it to me. Ok so maybe email wasn’t so good example, but it’s a way of thinking I’m trying to convey here so please bear with me.

Let’s instead say that I want to send a message with an attached file to a friend. It could go like this:

Click the “New document” button which opens a blank page. I write some text. I plug in my digital camera which spawns a camera icon on my deskbar, I click it and a window with thumbnailed photos open. I drag a photo onto my document. When the photo is selected it can be resized and an action menu appears next to the document, allowing me to adjust brightness etc or maybe add a moustache if I have that plugin (Another way to add a photo would of course be to select “insert file…” from a menu). After that I press the Send button (next to the Save button, if I wanted to create let’s say a Word document) and enter the name of my friend, where upon it suggests I send it as an MSN message if it’s short and the file isn’t too big or possibly an email if the document has some kind of layout.

Well it’s just a fictional use case, and it leaves questions as what would happen when your friend replies (open new window a la email or some kind of conversation log like IM) or how you would access more specialized features for word processing, image editing and so on.

And of course this could all be encapsulated within an application, but if it’s well implemented and there are a lot of plugins this would be running all the time and might as well be part of the OS. A problem with the application approach could be that it might not be compatible with other programs.

For more task centric computing take a look at the Firefox plugin Ubiquity and Gnome-do. They aren’t very intelligent or user friendly atm, but I think can at least serve as sources of inspiration.

Actually, BeOS was well on its way to meeting goal #3. Email messages on BeOS (and Haiku) are just text files with some attributes. There is a native email daemon, but another email program (like Mail-It) can read those same messages, in the same folders, perfectly well. Switching between email clients is quite painless. It should be possible to integrate Facebook messages into the same system. IMs are different, though. IMs need to be answered NOW, not tonight when I’ve had time to think about it.

Or consider how file conversion is handled at the OS level (at least for graphics files). Drop a new converter in the right directory and now EVERY translator-aware graphics program can read and write that format.

Gobe Productive had its drawbacks, but its use of a single format for text, spreadsheet, vector graphics and presentation data points in the same direction.

Another nice thing about BeOS is that is well designed enough that you could easily meet any one of the four methods you mentioned about dealing with a computer. If you are used to issuing commands manually you could easily open a terminal and do so. If you are used to opening applications to do certain tasks you could operate that way instead. By having such a flexible way of dealing with file formats at the low level (like addresses, which were zero byte files that used attributes to store addresses) you could easily design a computer, application, data, or task centric way of dealing with things. BeOS makes manipulating sound, video, and images easier because of the feature Michel mentioned but also because one program can output its results to another program so you can string together lots of little programs that manipulate sound a particular way and keep altering the stream of sound coming from the original file. You can non-destructively edit images, video, and sound if you use programs that are completely aware of the way BeOS is capable of sharing data between many applications. The Replicant technology in BeOS allows people to easily build their own applications out of tiny little Replicant aware programs without even being a programmer. This could let you make your own task based system in a way. It would be tailored to do what you need it to. You want to edit images and publish the results to your webpage? OK. Just grab the right Replicants, sprinkle them on a page, and go to town. You, as the user, should really be the one dictating what tasks are important and what ones aren’t if you’re going to try to make your computer a task-centric system. Replicants, especially the way GoBe Productive used them, allows you to do that. You should try it out, it’s a neat program and there may still be a demo available on BeBits. The “New Document” example you gave may be completely possible or mostly possible with GoBe.

Sounds pretty promising! I’m glad others seem to have similar ideas. I read a little about universal drag-and-drop support and clipboard usage in Haiku and it looked pretty good too.

GoBe Productive seemed interesting… Now just imagine that more developed, with lots of other applications all working together… Sweeet :stuck_out_tongue:

Maybe my wife and I will start some kind of programming project together. I have some ideas for an improved Gnome-do copy that I’d like to write. I’m quite busy with studies atm though, so I’m not sure if I’ll manage to find time for it.

I must add that I’m a little sceptical to these file attributes… Are these lost if I move a file to a non-Haiku system or a FAT formatted USB stick for example?

Oh, do look into my mockup at #4832 (Idea for a "GnomeDo" like app finder/launcher) – Haiku . :slight_smile:

Yep, put onto a filesystem that doesn’t support meta-data will strip them. That’s the nature of meta data, I guess. They are usable to exchange data between systems. Though there has been talk about some kind of attribute overlay support for other filesystems, so they could still be accessible there from Haiku. I’m no coder, so I may remember that wrong…

In general, I understand that attributes shouldn’t be used to store “core-information”. In that respect, Haiku’s People app that has all contact information stored in attributes is a real island solution.
OTOH, storing mail-header information as live-queryable attributes, jpgs with picture dimensions, or volume/last-play-position of video/audio files is an elegant attribute solution.

Regards,
Humdinger

Yup, something like that, except starting application is just the first 5% of what it would do :slight_smile: If you have a Linux machine, make sure you also install the Gnome-do plugins package.

Some of the features the launcher could have:
-Start apps, obviously :slight_smile:
-Open documents, both local files and Google docs etc (with plugin)
-Search for stuff
-Set a reminder. For example so you don’t miss a TV show :stuck_out_tongue:
-Lookup och translate words
-Initiate an IM conversation or start writing an email (though that could classify as starting an app)

And then I’m thinking about extending applications, or writing new ones if I have to, so you press Super+space to open the global Do and maybe Alt+space to open a Do promt for the current application.

A file manager might accept commands like:
-select vacation*.jpg (file name matching)
-select all images (select by predefined keyword)
-to pix.zip (add selected files to a new zip archive)
-convert to png (convert selected images)
-upload to webhome (well, upload files to a predefined server)

Using autocomplete when possible of course.

I think it would have to print the results of the operation before actually doing something, to avoid misunderstandings, and undo would be useful.

Well I’m not yet sure if it would be worth the trouble as that kind of functionality could be implemented with buttons in the file manager. But it could allow users to very easily write powerful scripts, without having to know too much about complicated shell commands. And if written using a plugin system it would allow anyone to extend other’s applications.

If we ever get started with this project it would be nice if you wanted to help :slight_smile:

Don’t know gnome-do, but you might want to look up Quicksilver. It’s a mac OSX program that has two possible effects: either you shrug your shoulders and say “what’s the point?” or you instantly become its devoted slave. Nothing in-between. :wink:

gnome-do appears to be a clone/port of quicksilver.

I think the “what’s the point?” group consists of 50% people who think using the keyboard is bad and 50% people who hate all new ideas :stuck_out_tongue:

There’s another app in development called gnome-shell that you use for launching new programs/opening documents and arranging your windows among workspaces. At first I just thought “that seems unnecessary” but after a while I realized that this is actually a great idea. Grouping windows relevant to one task (developing, painting, surfing etc) is probably how you’re supposed to use workspaces, but for me it’s always felt easier to just put all programs in a big pile in the main workspace. Maybe gnome-shell will be the solution at least for me :slight_smile:

[quote=fhein][quote=Humdinger]
Oh, do look into my mockup at http://dev.haiku-os.org/ticket/4832 . :slight_smile:
[/quote]

Yup, something like that, except starting application is just the first 5% of what it would do :slight_smile: If you have a Linux machine, make sure you also install the Gnome-do plugins package.[/quote]

Should you do code this, I hope you’ll release a spin-off of just that 5% implementation. I just need a very quick way to start any app. I could do that already with a query for ((name==“searchstring”)&&(BEOS:TYPE==“application/*”)), but there’s too much clicking and choosing involved. Though I won’t have the in #4832 described convenience, I think I’ll try a query template with SpiceyKeys for now.

The rest of the features you list is an all-but-the-kitchen-sink approach that I don’t like at all. But go ahead, whatever floats your titanic… :slight_smile:

Regards,
Humdinger

one thing that would be more task centric OS is to have something like the Apple services menu or IE8 accelerators built into the OS. So for example, you right click on a pic…tasks…all the tasks you chose (unlike apple’s menu) for pics. You don’t want to get too crazy with tasks but I can see why someone would want to instantly send a pic on the desktop to their blog or bunch of selected text to an email.
I don’t think we should be too radical. App centric works for most cases (everything you need is at hand and you can do things out of order) and we shouldn’t throw it out completely just to be different.

[quote=arielb]one thing that would be more task centric OS is to have something like the Apple services menu or IE8 accelerators built into the OS. So for example, you right click on a pic…tasks…all the tasks you chose (unlike apple’s menu) for pics. You don’t want to get too crazy with tasks but I can see why someone would want to instantly send a pic on the desktop to their blog or bunch of selected text to an email.
I don’t think we should be too radical. App centric works for most cases (everything you need is at hand and you can do things out of order) and we shouldn’t throw it out completely just to be different.[/quote]

Text based OS:es worked for most cases until someone invented the GUI, and now they’re confined to specialist markets :wink:

I think that when someone manages to create a full task centric OS and actually do it well, everything else will seem pretty boring. Of course there will still be a niche for app centric OS:es and some who are too used to the old way of working with computers will shun the new technology.

But just to make things more clear, task centric doesn’t eliminate apps entirely (the task of playing Half-Life 4 would be more or less equivalent to running an app) and I’m sure the first attempts at task based computing will suck almost as much as Windows 3.11

On the other hand I’m convinced that this is the future of computing.

Sort of something Automator does in Mac OS. But it would be nice if one could write the instruction chains right in some kind of command promt (like Do). Of course, these command chains could be stored and used as Tracker add-ons. Something like this:

-select:vacation*.png and convert:jpg and send:"folks@aol.com" -subject:“Check out Tahiti beaches!”
or more universal with already selected item(s):
-convert:jpg and and send:ask -subject:ask

In Automator one would need to build the following workflow(just did this the other day):
Finder:Get selected items
Finder:Copy selected items:converted files
Finder: Rename items:make sequential
Preview:Change type of images:JPEG

As a result one would get a Finder add-on which could be applied to selected items. Nice developers provide new actions which can be utlised by end users to build workflows. However, from time to time one might want to change/add/omit steps or use a specific workflow one time only on one single file. So it sould be nice if It’d be possible to type in the commands as above (convert:jpg…) by calling the actions using keywords.

In Haiku there are already various bits and pieces that facilitate such approach (hey, alert and so on). They are still “under the hood” tools though. By extending the capabilities and providing nice UIs it might be possible to end up with something rather nice. Haiku can bring all this to desktop as they don’t need to cater massive user base with backwards compatibility in the UI (i.e. app-centric computing). As an example, whilst MacOS already ships this sort of functionality in rather nice form, they still need (like all commercial vendors) to ship familiar user experience.

In ideal world, this approach should be extended across apps so one could type or optionally store it as predefined action accessible via contextual menu:

-file open:“PhotoShop” and select:rect -300,300 and crop and filter:“MyFilter” and save:jpg -name:“crop.jpg”
or
-file open:“Gobe Productive” and replace:“BeOS”,“Haiku” and select:find:“Forward-looking statement”,end and delete and save:doc -name:“Haiku Letter.doc” and close

(I know, it’s way over the top atm but where would we be without some crazy guys like monsieur Pascal or Herr Leibnitz. BTW Rossellini’s Blaise Pascal is a great film:)