Computing is only 50 years or so years into a 500 year revolution, one that will completely transform society. And yet, most effort is focused on using computers to bring about societal transformation rather than improving the fundamental capabilities of computers themselves.
There are countless ways the computers can be fundamentally improved, from their input devices, their display surfaces, the way that they represent data, the UX that users interact with, the way multiple devices collaborate with one another, how easy they are to program, how robust they are to repair, the longevity of their data and programs, how extensible they are, power consumption, speed, weight, creativity of materials, beauty, the list could go on forever.
Like fish in a pond, we have trouble seeing the water we swim in. We've grown so used to the shape and limits of our computers, that we can't see the countless ways they can and should be better. And yet, it seems obvious to point out that the computers we have today are a pale imitation of the computers we will have one day.
So how can we make a better computer?
We can approach the problem from two directions:
I propose to do both. My vision for what is possible is laid out in A pattern language for a new computing environment and I intend to flesh out each of those points with prose, stories, images, gestures at that reality. At the same time, I intend to tackle each area of the computing status quo, from networking to databases to browsers to displays, and illustrate a dozen or so ways that the specific area could be improved.
In some ways, I'm laying out a research agenda for computing. My hope is that this research agenda can be used to help fish see water and catch a vision for the possible, to motivate concrete action, to drive specific funding initiatives, and generally be a force multiplier for making computers better.