After a discussion with Diarmuid about the state of computing, its become pretty clear to me that the Internet is broken. Not only that, but applications are broken, software frameworks are broken, operating systems are broken and hardware is broken too.
Sure, they all work, but they work in an I-need-to-sit-beside-my-toaster-with-duct-tape sense of work. A true appliance does not bother the user with so much low level detail, so much implementation detail and so much meaningless management. A real appliance just does its work without bothering the user about how. Computers are far from being an appliance, in this sense.
Mobile phones are a lot better here, but even they could be better still.
Ok, let me start from the beginning. Why is the Internet broken?
Come see The Dark Knight today at 7pm in Cineworld.
Every time I see a message like this, I’m reminded that the Internet is broken.Every time I’m shown old, outdated or plain irrelevant information, I know that the Internet is broken. Its 8pm! Theres no Cineworld near me. The Dark Night hasn’t been screened in a year! Yep, the Internet is definitely broken.
I have nothing against archived data. In fact, I think its a good thing, but the Internet (or rather, the applications and protocols used to implement the Internet) should be smart enough to know when I require archived information or up-to-date information. Alongside this, the Internet should be a lot less manual, I don’t care about web sites and URL’s and all those meaningless details. I just want to accomplish my task, get my information. We’re already heading this way – the average user (who really does not want to be bothered with low level details at all) already seems to use Google to find their websites instead of remembering the URL and typing it into the address bar. Does your girlfriend/grandparents/dog even know what an address bar is? Hell, 92% of people don’t know what an Internet browser is… (My apologies to the tech savvy girlfriends/grandparent/dogs out there)
I’d love to rant about the Internet longer (actually, I wouldn’t, which is why I’m promptly changing the subject), but I feel its time to take a step back and watch how this phenomenon affects the rest of the computing environment. In fact, this should really be evaluated and fixed before the Internet is tackled.
My biggest problem with computers is that the bother me with details which I just don’t care about. What do you mean I need to start an application to edit my presentation? Why should I have to care about that! Applications, programs, services, web sites, filesystems and all those other things which take up such a large portion of my computer time – why am I constantly being bothered about this? Surely the computer is in a better position to manage these boring, monotonous operations for me, transparently, in the background – letting me get on with my work so that I can leave the office sooner and enjoy some sunshine for once…
Lets say I want to calculate some tax returns, generate a pretty table and graph, put some information underneath, in bullet point format, email it to my boss and send a copy to some archive in the office. On a current system, the procedure to accomplish this task might be something like this:
- Start the spreadsheet application
- Enter the data and formulas
- Generate a graph
- Export data and graph as an image (Yeah, I’m aware that often I can actually embed the spreadsheet in other tools and this is certainly a step in the right direction, but it suffers severe interoperability issues currently…)
- Start the presentation application
- Add the text
- Import the image
- Save/export in some suitable format
- Open my email application or web browser to access my emails
- Write an email to the boss, attach the presentation, send email
- Mount shared drive/start FTP client/whatever I need to do
- Send file to archive
Thats 12 steps – without dealing with the issues of closing applications after I;m done with them… I also left out details such as where do I save/export these files to? and load them from again.. This is ridiculous. Thats too much management taking up my time. Obviously these things still need to happen, but they should be as transparent as possible. Maybe something like this:
- I browse to my new work item (more commonly known as a file, I am renaming it because I want to emphasise that its a higher level idea) widget (the meaning of browse depends on the user interface, of course)
- I begin entering spreadsheet data, as I enter, the system tries to detect what kind of data I’m entering and provides me with an unobtrusive menu, in case it guessed incorrectly
- From inside this environment, I should be able to perform all types of editing tasks. An unobtrusive panel or menu should allow me to switch between tasks. The system may start and stop applications behind the scenes to accommodate these tasks.
- When I’m done, I simply browse away from the work item. The system stores it for me, without my interaction, unless I tell it not to. There should also be some means of naming, tagging and categorizing work items.
- I tell the system, perhaps through some glorified terminal, to “email work_item_1 to boss” and it will try and predict who this is and provide a prompt of relevant choices.
- I tell the system, again, using my glorified terminal, or whatever the user interface would be, to “archive work_item_1“
Actually, we can do better than that. Because we know that the user was working on that item, we can assume that this is the item they want to interact with, unless told otherwise. So a simple “email to boss” and “archive” (or “send to archive” or whatever) should be enough. Of course, theres no reason all of this cannot be done with some graphical interface for the typing-averse people out there.
The point is that the computer should worry about loading and saving my work for me (ie orthogonal persistence), starting and stopping programs, applications and services and determining what I want using some context sensitive heuristics.
The entire system stack should be built like this: from hardware, to operating system, to inter-application communication, to application framework, to application to internet. Everything should be context sensitive and should be tuned to my needs. Think Google search with its suggestions, only applied to everything. The computer should simply work.
One possible user interface could be something like this
- A zoomable desktop with a Google-like search bar at the bottom of the screen which doubles as a temrinal command input area.
- When I finish editing a work item, a screenshot of it is placed on the desktop, where I was working on it. I can drag this screenshot to another place on the desktop, if I should want to.
- I can pan around the desktop as well as zoom in and out, hence zoomable desktop.
- When I zoom in on a work item screenshot, the application needed to edit this type of item is automagically started up (transparently, behind the scenes) and I can edit that item.
- When I zoom out again or pan away, then an updated screenshot is generated and the application is stopped again,
- I can tag these items with blog-like tags and categories to aid sorting and searching and add different metadata to it so that the system knows how to deal with it.
- The search box at the bottom of the screen allows me to search for items by name, pattern, tag, metadata, category, general location on the desktop etc.
- The search box can also be used to enter specific commands, ike you would in a temrinal now.
- The search box would also allow you to enter context sensitive smart-commands, like “send to bob”, in which case the send command would send the last work item which you edited/viewed to bob. Bob would be looked up in my user profile list of destinations (email contacts, IM contacts, FTP server, whatever) to find where it should be sent to. An unobstrusive popup dialog would prompt me with the matching items, so I can correct it if it guessed incorrectly.
Theres obviously more to it than that, but it should be a good enough start to get everyone thinking about the problem and potenital solutions a bit. If you have any ideas, comments, queries or feedback, please comment! I’d love to hear other peoples ideas on this.
Of course, the real problem can be seen with a simple question, which will be asked when trying to transition users to a new, fixed and working system:
Thats all very well and good, but does it run Microsoft Word?
Which is completely in line with what I have already said.
