This is not a task orientated desktop, it doesn’t even consider what a task is, it considers what workspaces are in a vain attempt to get people to use more than one workspace. I’ve been in the process of designing a task orientated workflow, partly in my head, and partly on paper since GUADEC. Since the immortal words of Don Scorgie were spoken, “a f*cking project is a top level object” – he exclaimed with exasperation as he smoked…
Lets ask some questions first, clarifying why Scorgie was so adamant about this…
What do people do with their computers?
- They write letters, reports, and various other word processed documents
- They create spreadsheets and graphs etc…
- They draw pictures
- and many more things, but there is a pattern… people use applications to produce things.
Why do people do these things?
- Because they’ve been asked to
- Because they need to produce something to show someone
- Because they need something tangible which documents and guides something they are trying to achieve.
- Because their artistic nature demands it of them
Essentially, people are performing tasks, and a task is not what an application is, its not which applications are open, its not what is sitting on your workspace its something far more abstract than that.
So what is a task?
A task is something that you’re doing, in an office environment you’re generally asked to do various things by your line manager, or you have a general set of responsibilities which involves you producing documents, spreadsheets, reports etc…
So, what the hell was Scorgie on about? Projects are toplevel objects? Well, I think what he means, and he can correct me if I’m wrong… A project is a collection of tasks, or more specifically and less stringently a task which has many tasks that depend on it, projects are the most important things we’re working on and are the elements which everything, or almost everything descends from.
Everything we do productively at our computer is a task, even if we think of it in terms of the code we write as developers, what we have is a top level task, a project, for instance to take for example nautilus, that project is built from a series of tasks, these are feature requests, bug reports etc… Each task can have files associated with it, maybe in the case of nautilus, which files need to be edited for a bug to be fixed, and each task can have people associated with it, as in who is involved in completing the task, and many other roles people can perform in relation to a task.
Essentially we should be organising our time over a project managed approach to our work flow, I’m not saying that we employ a project management UI, I’m just saying that tasks, and task dependency and relationships need to be considered in how we interface with the desktop.
The BIG problem with this is how can we convince a user into using a task orientated workflow, how can we ensure that they’ll follow the model we’re trying to get them to use?
This is where we need to think carefully, Federico is making moves in this direction with the journal, obviously we do need a way to track what we’ve been doing and when. However we also need a way to track why we’re doing things and gather more metadata about what we’re doing, while building relationships between the relevant bits of data.
For instance, and I keep using this example, now with characters, Sally receives an email which states;
Can you take a look at this file and update it with the current figures by tomorrow at 4pm
File attached: tps-reports.odt”
Now obviously we know what the instruction is, we could right click on it and create a task, set the due date and time from what’s contained in it and then make sure we follow our task list…
How many people do that?
What’s so difficult here? Its not that its so difficult, its that the user doesn’t want to spend the effort doing this, as its more time wasted… I think eventually you come up with a tangent curve which shows the amount of time doing stuff vs. the amount of time organising your time into doing stuff… We can fix it but currently the software doesn’t pay attention to the user, isn’t aware of the user, and isn’t aware of what they are doing. We can make the software aware, we can gather so much metadata from this simple email, firstly, we pull out the file and dump it into a semantic revision controlled filesystem , next we know who is related to the file because we know who it came from, we also know when the file must be updated by, we can even extrapolate the section of a sentence which describes what needs doing to the file. We can even gather a reasonably relevant name for the task from the file, and with the power of a semantic file system we can build relationships relevant to the project the task is related to.
The computer can easily know much more about what we’re doing, we can create new ways of seeing this and managing it without becoming obstructive. One of the big problems with the current GNOME shell is the word applications. People don’t really know or care what an application is, moreover its a foreign word as Windows calls them programs… Here is the quandary.
Should we copy Microsoft and rename it to programs for cross platform consistency, or change the paradigm? I think its time we changed the paradigm…
I think we need to consider intelligently gathering metadata from our behaviour and communications as well as from files, we need to join this all together and do away with the term ‘applications’, we need to change the way we interact with files.
Templates are a good start to removing the applications concept, we have templates which can only be used to create a new document from, these templates are how we are productive. For instance if we want a new letter, we can open a template and our contact details are included as well as the contact details of the person we want to send the letter to, it builds a template for us with the relevant data in it so we can just start typing and then print it.
Files are only ever really viewed or edited, so why not build our viewer so it can handle any kind of file, allow us to flick through files page for page, zoom in and out and view them in any way that’s relevant to the file type, and set the better editors as the default for editing each file type, distributions could employ an overlay of configuration there easily. Eventually the concept of applications for editing will become null and void because when we open a file we open it to edit, when we view a file we’re viewing it…
It’s important that we dissolve away the concepts we’ve found over the years don’t work or impede the use of a computer, Xerox was looking for the paperless office in the 70s and stumbled across a paradigm similar to this. It was simpler, and there was less variation and file types to deal with, but the idea was there, a networked method of communicating produced items with objects representing things in the real world.
For us to get there we need to invent some cool stuff, semantics is one part, organising the data by what it is rather than where it is, especially when the user has a tendency to loose things in the jungle of file systems. Journals and revision control are another part of it, remembering what we’ve been doing and when, but also templates and schema’s are part of it too, hiding the notion of an application behind the tasks you want to achieve and the things you want to get done.
So my action is not an application, my action is starting a new task or continuing with an old one. Workspaces can easily grow from the natural separations seen between tasks, rather than artificially created and badly managed by users.
I think we need to be more productive and shape the future rather than just say no to it. I think that maybe some of the new UI is good, but what we present within the container is also important to the user and we need to put more effort into that. There’s nothing to say that the scene graph and compositing/window management built into the desktop shell is a bad idea, in fact this is the most inspiring part of what came out of the shell hackfest. I think it comes down to more about how we do things than what it looks like and the underlying technology. We need to be smart about metadata and smart about the user’s behaviour. Its definitely time for artificial intelligence in the desktop that understands what we’re doing and why we’re doing it and who we’re doing it with.
Now there are people who may disagree, for instance Theodore Kaczynski, but that doesn’t mean that AI shouldn’t be there to help us in doing what we do, it could dramatically improve our human computer interaction without being as lame as voice recognition and animated paperclips.