Seriously @@.
I was intrigued by your question about operating systems. I too have wondered about this. I've had some experience with operating systems: my father wrote a UNIX clone, I've been mostly a Mac user, and I run Linux on all my servers. But a while ago, after reading Ted Nelson's books, Literary Machines and the Future of Information -- the question hit me square in the face: Why do operating systems suck? Part of the problem, I decided, was because the people who wrote operating systems had a hard time giving up their worldly metaphors and embracing the every-dynamic nature of the computer. Another big part was that their was no need to do operating system research. Microsoft had tied up most of the market, and Linux represented a "good enough" solution that no one ever had any incentive to work on taking things to the next step. At the time, I wrote this: http://get.theinfo.org/whatsWrongWithSoftware I don't know enough about the hardware side of things, so I can't tell you how hardware continues chugging along becoming better and better. However, in the software world, once a good-enough solution comes about we seem to give up. Instead of trying to come up with something even better, we only write feature additions and bugfixes and occasionally rewrite it so it's open-source. However, there's no drive to make something altogether different -- and better. Perhaps this is because we have no standard to measure things by. With hardware, you can easily say at the end of the day, "I have done something right. My computer is 500 Mhz faster than it was." There's no such simple thing for programmers -- it's all subjective. There's no way to measure how elegant, how usable, how simple a product is. Alan Cooper discusses this in "About Face". He calls the fact that products never get improved the Dancing Bear syndrome -- it's not about how well the bear dances, it's the fact that it _does_ dance. I too am in the midst of an article on this topic. I'm writing it for the ArsDigita Systems Journal, so naturally it's talks mostly about their system, the ACS. The ACS is a toolkit for building advanced websites on a database, if you haven't heard of it yet. In the article, I compare it to an operating system, and look at how operating systems, which have long floundered on the desktop, are now moving up a level and migrating to helping applications on the Web. Here's part of a rough draft: ... Desktop apps are dying. As all of our software moves to the Web, the once all-important operating system is dwindling in importance. All right, so there's Linux, but that's just another form of UNIX which is certainly nothing new. And Microsoft, which has never innovated before, certainly won't now that the government is on their backs. So you can safely add the operating system to vast mound of obsolete computer history. Or so you thought. Wait just a sec; the operating system is striking back. But not in the way that you would normally think. No, it's not a desktop OS like Windows, and it's not a server OS like UNIX. Instead, you have to go up a level. It's a programming environment that's slowing growing into an operating system in its own right. It's the ACS. _Huh?_ I can hear you say. _An operating system? This guy doesn't know what he's talking about._ That may be at least partially true, but my point remains just the same -- even if the technicalities don't all work out. The ACS has quite a bit in common with the operating systems of yore, even if it doesn't perform exactly the same function. Just like the operating systems we're used to, having the ACS take care of important features is very beneficial. By having the operating system take care of often-used functions, you have less code to write and less bugs to fix. Because you're using a standard, other people can use your code and you can use theirs. And by using a well-designed system, the various applications can work together to create a customized user interface that takes portions from multiple programs.
Part of LogicError. Powered by Blogspace, an Aaron Swartz project. Email the webmaster with problems.