Tuesday, May 31, 2011

Operating Systems Utopia: Alternative, Academic Systems and the System of the Future

My background with and enthusiasm for free and open source operating systems started when, back in college here and then here, I needed to use a computer and there's only MS-DOS (and its GUI for your personal confuser, Windows) together with its quirks and virus bandwagon, not to mention the agony of inconvenience they bring. As I mentioned in my previous article, I learned to program computer viruses and realized there's no creative, social or educational benefit from it. Frustrated, I pined for the day I can have an operating environment that's impervious to computer viruses, can run multiple applications, is free (haven't yet imagined it's source code is also accessible) and most importantly, shouldn't crash (at least compared to DOS and Windows that pulls this stunt on a regular basis).

There's OS/2 Warp (I can't recall if what I have now as part of my collection actually is this or this) but it's not free and open source, expensive back then, seems only available for business users, and worst of all, it's zombie technology (wait, there's still hope: check out eComstation).

The logo speaks of very sophisticated features, too bad it was beaten by marketing hype, wait, aside from that, its price and availability also helped kill it

I bought the first edition of Andrew Tanenbaum's Operating Systems Design and Implementation and realized that it's feasible (but Minix 1.0 requires a compiler that I can only read about and am afraid can't afford). Later I learned of Tanenbaum's Minix's (now on 3rd iteration) spin-off, Linux. GNU/Linux is fun and I think one of the most advanced systems today, but its popularity (maybe proportional to the kernel file size?) being its strength is also it's greatest weakness: the latest kernel alone is over 70MB Bzip2 file (that means it's over 2 million lines of code), making it not your ideal system to study when you're just learning operating system design and implementation.

For educational benefit and operating systems research, I present in this article recommended operating systems and environments that will cater to operating system development hobbyists and enthusiasts.

Small is Beautiful
As Schumacher's classic book is aptly titled Small is Beautiful, Minix 3 (as of this writing is version 3.1.8) is probably the smallest and most functional academic operating system that's also gearing up for use in embedded systems. With the whole system (in contrast to Linux kernel's over 70MB Bzip2 file) being just around 15MB Gzip file, this is less daunting to sink your teeth into while at the same time learning from one of the best in academe on microkernel-based operating system architecture. I gave Minix 3.1.8 a try and finding GCC 4.4.3 and Clang 2.8 among it's packages (not as strict on software package licenses compared to OpenBSD it seems) was a mild surprise. For rationale of microkernels, I think this best articulates it.

The official Minix mascot is a raccoon.

Another notable, albeit still in alpha stage, operating system is Haiku OS, inspired by the BeOS. It's also a microkernel-based architecture, best illustrated by reading on the BeOS API (notice the similarity in design and principle to Mac OS X?). Among it's strength is its focus on multimedia capability while maintaining stability and speed.

My favorite free open source operating system, OpenBSD, is also a good, if not more complex system; you may learn how a secure system is developed and how a project following a standard coding style results in quality systems. The platform portability and device detection are also worth looking into.

New, Traditional and Unique Platforms
Aside from the aforementioned Haiku OS, below are some of the free and open source systems I found online with the features that may interest you to check them out and support their project:
ReactOS - designed to be MS Windows compatible (your mileage may vary)
AROS - designed to be Amiga 3.1 compatible, and runs on x86 and PowerPC platform
MenuetOS - it's written in assembly language, has GUI and boots off a 1.44MB floppy disk (also on CD or flash drive)
DexOS - the UI is game console inspired, making the user experience very interesting
FreeDOS - for the nostalgia of using (and dissecting) good old (dead?) DOS, this is for you (everytime I see Windows, even Windows 7, get virus infected, it reaffirms that DOS is still alive)

Homebrew Operating Systems
In another previous article I discussed homebrew computers; to complement that resource, you should also check out the OS developer resources and tutorialshere, here, here (focused on x86-based OS development) and here (more on DOS-like OS design and development) that will help you start making your own OS.

My Dream OS
The ideal system for me is built on a microkernel architecture, with L4 being the microkernel, and either Minix (there's a project like this here, this would be really cool since it will reuse Minix major components like Filesystem and Memory Management servers) or OpenBSD system running as userland on top (nothing like this yet, there are however Darwin and Linux as userland application on top of L4). With the GUI handled by GNUstep to make the application development fast and simple, while provision for distributed application development and deployment is also readily available. But this only is ideal as far as the current systems are, which leads us to my vision of...

The OS of the Future a.k.a. Jef Raskin Should be a Saint
The late Jef Raskin holding Canon Cat model
I first read about Jef Raskin in Programmers at Work: Interviews With 19 Programmers Who Shaped the Computer Industry and was fascinated by his ideas on what or how a computer should serve human purposes. His stance on operating systems?

Icons, windows, mice, big operating systems, huge programs, integrated packages.... I would like to remind the world that just because two things are on the same menu doesn't mean they taste good together.

I admire Jef Raskin's out-of-the-box idea on computing and user experience, and his no-nonsense perspective on how the system should behave in relation to its user. The principles defined in his last book, The Humane Interface: New Directions for Designing Interactive Systems still rings true (Jef Raskin's quotes below was taken from here):
  • Once the product's task is known, design the interface first; then implement to the interface design.
  • Users do not care about what is inside the box, as long as the box does what they need done.
  • As far as the customer is concerned, the interface is the product.
  • The system should treat all user input as sacred.
  • A computer shall not harm your work or, through inaction, allow your work to come to harm.
  • A computer shall not waste your time or require you to do more work than is strictly necessary.
  • An interface is humane if it is responsive to human needs and considerate of human frailties.
  • An unlimited-length file name is a file. The content of a file is its own best name.
  • When you have to choose among methods, your locus of attention is drawn from the task and temporarily becomes the decision itself.
  • ..., the use of a product based on modelessness and monoty would soon become so habitual as to be nearly addictive, leading to a user population devoted to and loyal to the product
Commercial operating systems manufacturers like Apple and especially Microsoft have always promised and/or expected (supposedly user friendly) GUI-driven interfaces, multitasking, multithreading, scalable and reliable operating systems in the future. Raskin has this to say:

We have a whole valley full of people talking UNIX versus MS-DOS. What do you need any of that for? Just throw it all out; get rid of all that nonsense. Maybe you need it for computer scientists, but for people who want to get something done, no. Do you need an operating system? No.

To illustrate this, let's observe how we perform mundane, some involuntary activities we go through everyday. When we breath, do we have to be conscious how we inhale and exhale? When we walk, do we have to be aware how the joints and muscles in our legs are to perform the action? Do we have to be concerned with how we balance our whole body as we walk? Fact is, you may not have been aware of the complex process and subprocesses involved to perform those activities and others similar to it. This should be how the operating system of the future should be.

What's the operating system of the future? It should be so effective, it's invisible enmeshed into the fabric of our everyday lives, much like electricity and radio waves we use and benefit from everyday while we ignore or aren't aware of them. The operating system of the future should be so efficient that we need not be aware that we're using its services; it should be so crash resilient that we're not aware that a certain component or service crashed and was restarted. In fact, it should be very sophisticated enough that we deal more with and be concerned more with information rather than the platform or application used to access that information.

We're lucky to have Jef Raskin's voice of timeless ideas echo through written works. For me, Jef Raskin should be a saint of technology sacrificed by technology marketing hype.

No comments:

Post a Comment