...and now that you have the history behind it, let me try to put in words my basic point of view on computers.
Let me begin by saying that, as of today (and this has been true for many years), all systems I know about, suck beyond tolerance. And yes, I have used OSX. It sucks too. (By "system", an intentionally vague term, I mean OSes, and GUI environments, the general UI/API paradigms, and so on.) And they are "improving" in the wrong direction - which means, in 5 years, they will probably suck more, but be more shiny about it.
The premise I'll work with is: there is very little limit to what a computer can do. It is essentially, as I realized when I was about 9, a programmable device; the whole point of its existence is to be customized, to do what you want the way you want.
Modern software is more in the business of telling you what you want.
It might be a "monopoly of magic" problem. Programming is potentially easy, at least for small tasks. But if everyone could program, how would "true" programmers make a living? So the big companies, who very much prefer to stay in business, want you to believe that it's a very arcane art, a burden they are taking away from you - and you should pay them for that. That is, IMO, one of the main reasons they are so afraid of Free Software and open source; we take the stance that, instead, programming is accessible to anyone, and that it's best done in groups (community), and worse, that it's fun. That even the small tasks you can learn to do with a few days of study, can be an useful contribution.
Or it might just be laziness.
To me, a computer which is not programmable, or not conveniently programmable, is at least 50% useless. That's why I eventually abandoned my PalmPilot to buy a VR3 on which I could run Python. Incidentally, that's also how, years earlier, I learned about Free Software, GNU, and Linux... after I was forced to abandon OS/2, I went on the net (which was a new thing for me) in search of a good C++ compiler for Windows, and stumbled on djgcc - which had a great page explaining what is Free Software, and a link to GNU. I was hooked.
But most people are content with what is dumped on them by the vendors; most don't even change the windows color schemes.
I guess what I mean is: I want more developers and less end-users. I want to turn all end-users into small-time developers. My dream system is an infinitely customized thing, where "upgrade" implies some revision-control-like operation of figuring out how the new features fit in with your customizations. Where sharing these customizations is routine, and the system itself gives you tools to do that.
(Yes, I know about Squeak. It's an awesome prototype of these concepts. It also suffers from many other problems that make it unusable as an actual system, most of which are off-topic for this article, but most important of all, being locked into a single programming language.)
The only desktop development that made me really excited recently was the OSX Dashboard (or gDesklets). Not that it's incredibly more accessible than writing an app with applescript or pygtk or even pyobjc; just that it encourages more people to try. But seriously, anyone in the audience whose mother masters enough html and javascript to write an actually useful dashboard thingie (or enough python for a gDesklet one) please raise their hands.
Even in the world of Free Software, we're still bound in "their" thinking, the "ball and chain" way, which makes our systems suck as much as "theirs" (in some aspects, less, in others, more, average 0).
We design our apps to be end-user friendly because, well, we want new users. But few, usually young, projects care about newbie developers (bzr comes to mind). We should do both; aim for a clear model that you can actually explain to someone who is doing high school, for well-tested code (so that people who are learning to program can see exactly what breaks the app), for code that an unexperienced programmer (or someone trying to became one) can actually read and understand, for a programmable interface (be it plugin system, client library, scripting system, whatever) that end-users don't need to be afraid of and that will encourage them to actually learn basic programming. For encouraging communities, where newbies know where to post patches and extensions, where those submissions are actually reviewed, often resulting in hints that help the new programmer improve. (Sometimes even, heh, in actually accepting the patch. The quality of submissions should generally improve with the amount of help available and the clarity of the system, until at some point, total newcomers can actually write usable stuff.)
Eventually, when enough people engage in this "meta-refactoring" principle of clear models and understandable systems, when enough users no longer perceive the tools they use as black boxes, I believe we will naturally suffer a few paradigm shifts in the systems as a whole (now I go back to using "system" in the sense I used on the top of the post), which can gradually help them get rid of the suckiness. My pet peeve is getting rid of the concepts of "application" and "process", which are rooted in Multics/Unix ideas from 30 years ago; but another good point, raised by Tom a few days ago, is that we need to outgrow the boundaries between "computers", and the notion that there are a few minimal components a "computer" must have. (The latter is pretty much dead already. You can run Linux (yes, mr. Stallman, I'm referring to the kernel here) on anything that has a cpu and memory.)
It may turn out that we need new languages, too...