« Disclaimer! | Main | In Memory... »

September 06, 2004

Failures in Usefulness

It sounds like Eric over at OutOfCheese is having the modern operating system blues. While he's already received a few commentaries on how "right" or "wrong" his opinion is, I don't believe the root causes of the problem have been really addressed by anyone.

Yes end users are a primary point of concern, and are typically the root cause of most problems faced today on operating systems. I can count numerous times that my parents have altered system settings, changed dial-up phone numbers, somehow deleted their primary applications all without even realizing what they've done. And yes, they still accomplishes this using a Mac, I fear the troubleshooting I'd have to do if they had Windows. It's not to suggest that end users are stupid, but to realize that using a computer, even with a GUI, requires a fundamental change in a persons thinking. I believe most younger users don't realize this need, mainly because they were able to seamlessly adapt. Herein lies the first challenge of operating systems; usability. OSes have come pretty far along the way to making themselves more user friendly, but it hasn't been enough. It's pretty obvious by talking with those not raised on computers that they still have a long way to go. The biggest change in end user computing has been the introduction of distributed information better known as the world wide web. This mass adoption was done almost 10 years ago, but the general design and use of web pages hasn't changed since day 1. I firmly believe WinFS will be the first major change in computing that will push OS design into new dimensions, allowing interface designers to finally bring about new means of comprehension.

The next major hurdle with modern operating systems is in the fundamental design stage. None of the modern consumer end OSes have been developed with a proven design document that I know of. By this I mean, the creation of the design document in a formal language that can be used to prove the functionality of the idea both before it's implementation and afterwards. Most operating systems are currently written in C (or some derivation of C) with some sections being written in assembler for optimization or control of the bios. This step itself begins many of the problems found in operating systems. The C language while having a defined standard, is still loose enough that any formal verification based solely on the code cannot be done. Right now I believe the Solaris kernel is the only OS that gets anywhere near the verification route, but if you feel your Linux or Mac OS X support is lacking, wait until you ask for help with a Solaris install.
Some will argue that such formal design is not possible for an operating system, or that it will never work. I disagree, and can only point to the current state of OS bugginess as validity to the argument: there has to be a better way. The fact that, in this case, the computer was able to install and alter it's behavior without the end user being aware that is a problem.

Apple did a smart thing with OS X by starting over from scratch, creating abstracted sandboxes for everything to play in, and then implementing some new forward thinking ideas (i.e. Quartz memory management schemes). Microsoft is doing something similar with the eventual release of Longhorn, and (apparently) the future releases of Windows XP by pulling some of the abstracted sandboxes from Longhorn. Linux pretty much goes through a complete re-write every kernel release, which provides for lots of fun and entertainment in creating support. Hopefully neither Apple nor Microsoft will be afraid to continue these processes of re-writes and continue to do research into verifiable computing.

Posted by Dan at September 6, 2004 07:02 PM

Comments