Marco Arment wrote yesterday about mobile computing being more exciting than what he called "Desk" computing. I'm a fan of Marco's writing, and I usually agree with him, but that post got me thinking. I can't argue that mobile isn't exciting, but I disagree with his assertion that desktop computing is a solved problem. He's right that the pace of innovation has slowed. Certainly the last couple of OS X releases have fewer and fewer compelling differences. In fact, I'm writing this on OS X 10.5 -- 10.6 didn't impress me enough to make me bother upgrading.
Still, when Marco asks what I want out of 10.7, I think "what don't I want"?
I think there's tons of room to improve on and even rethink the workstation.
Maybe now that the consumer train has shifted toward more custom-designed tools for browsing, games, and social apps, there's room for workstation OSs to grow in ways that might improve them without worrying about leaving the home user behind (or boring them).
I'm not asking for unintuitive design. What I'm asking for is powerful tools - system and apps - for people who use computers for work every day. I certainly hope that these power tools will be built with elegance and style. I'm not asking for dual cameras and four speakers.
Market forces have limited development of crucial daily-use work tools to what will appeal to the home & leisure market. For instance, Apple ships Mail and iCal with the OS. Both are fine programs, but are clearly trying to ride the line between work features such as meeting planning, and consumer features like stationery. Meanwhile, the market for alternatives is limited, and even some of the alternatives have taken the approach of adding consumer-related features. Postbox, for instance, has added facebook and twitter support. That's not helping me get work done - quite the opposite, really.
But am I really just talking about incremental improvements and a few more work-oriented features here and there? I don't think so. To be more specific about what kind of big improvements I think are possible in desktop systems, I did a few minutes of brainstorming. Here's what I came up with:
Like the personal jetpack, I'm still waiting for the system that knows what I'm trying to do and co-ordinates to help me get it done. The one that learns (even crudely!) about my habits and the time of day, my colleagues, their schedules, etc. The one with this knowledge baked in everywhere in the system. For instance, it knows which app's notifications can be ignored for later.
As a start, I'd even settle for a single system that actually uses all the good ideas that have come up in the past 30 years. Let's at least catch up to Douglas Engelbart's vision of the NLS system for augmenting collective knowledge work before we call it a day.
Good search everywhere has been a real improvement, but what about full support for smart annotations for files, events, people and other data? The BeOS file system comes to mind. Search is better when there's better info to search for. If I push it a little, some smart background prediction of categories for documents that'd help me find them later -- that couldn't hurt. Why doesn't a file know who emailed it to me?
Another blast from the past - maybe OpenDoc was a stretch, but more open document formats and easier flowing data between applications isn't a bad idea - can we expand on that?
This one ties in with mobile devices - Real, honest to god multi-computer network syncing. It can be done - it should be baked in! What if your filesystem was actually an easily merge-able version-controlled document oriented database like CouchDB? Can we use some ideas from distributed version control to make sharing documents on disconnected filesystems work right automatically? I still think the best solution doesn't depend on storing everything on servers (especially public servers).
That leads to the oft-repeated idea of getting rid of "saving". I shouldn't have to commit changes - maybe I want to tag a version, but the data should always be written to disk.
Every app should be able to know about communication (mail, IM, SMS, whatever) that might affect what you're working on in it. Today's apps have uniform access to your files - but not to your messages. This seems like a bad historical distinction - they're both relevant data. For example, why do I have to "save attachments"? It's already on my disk…
What about application and system scripting that really works - that's easy enough for quick things but powerful and fast enough to grow a real program from? Let me start them as visual or spoken one-off commands but then edit and share them as text.
System support for Quicksilver/Launchbar/Ubiquity-style text command lines. Tie this into the scripting system. Make it feel like I tell the computer what to do instead of finding the right app to tell, opening it, etc.
System-wide hypertext - I should be able to create robust links between document parts, messages, people, and other entities. It should be fast to view an annotated list of changes across versions of a document, showing who did them and what they said about it in emails. This shouldn't have to all reside on some central server to work.
Do you have any ideas to add to the list?