Not shabby. However, if you have any experience working in Smalltalk, or if you've heard the tales of the Lisp Machine, then the current state of the art pales in comparison to what we've had in the past.
In today's terms, I'd like to be able to pop open a debugger on the text editor I am using to type in this essay, make some changes, save those changes, and have them stick the next time I run the editor. If I change my mind, I'd like to invoke the version control system and undo my changes. If I like it, I'd like to be able to extract my diff, pretty it up, and send it upstream to the developers of the editor.
If I see an interesting library in /usr/lib
, I
should not have to do a web search in order to find its API and its
documentation. My tools should know how to do that automatically.
And they should do more. I should be able to ask for "all users of"
the specified library, both in a static and dynamic sense, and see
respectively all programs and all processes that are using the
library. For the processes, I should be able to poke around at the
data structures it is using and even call functions on them to see
what happens.
When I want to experiment with a library, I should be able to call functions in the API without needing major effort to create a driver program to bootstrap. In fact, I should be able to play with the API by using data structures and code snippets I found via "all users of" queries. I should have a workspace, in Smalltalk parlance, whose variable references point into bits and pieces of programs, processes, and libraries all over my system.
Smalltalk and the Lisp Machine prove that all of the above is possible. In fact, given their leading examples, none of it is even seems particularly difficult.
So why are we trapped in the current steady state? Why did Smalltalk and the Lisp Machine emerge in a time when hackers were a much rarer bread, but now, when computers and CS majors are ubiquitous, hackers use something so much klunkier?
My best bet is a breach in awareness and communication between today's Linux development communities and the relative graybeards who grok either Smalltalk or Lisp Machines. Thus, when they think of ways to make a nicer user interface for Linux, they have no better ideas than to copy interfaces meant for non-hackers. These are excellent at what they do, but where is the hacker's operating system?