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:
Computer centric. Everything you did was on the computer’s terms and you had to work around it’s limitations.
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.
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.
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 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 Same numbering as list above!
Connect to mail server. Issue command to list emails. Issue command to read an email.
Start email application. It does all the low level stuff for you and displays the messages.
System gives me a notification that an email has arrived. I choose to open it and the email app launches.
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.