I’m writing this blog on a Firefox browser on Windows XP. Works fine.

Actually, I’m not. The Firefox is running on an Ubuntu Linux operating system, which is being hosted through the free VMWare private virtualization software on top of Windows XP. Unix on top of Windows! VMWare promote a system where you package up configured applications with the ideal operating or desktop environment for them, as virtual appliances.

With all the talk of thin clients versus fat, this surely is the fattest kind of client! Not just a fat application, but the whole operating system with it! This is a great idea for software deployment

The whole thing is nevertheless quite a download, but comparable to downloading a reasonable Java application with a built-in JRE. You should be able to see a screenshot here.

Virtualization is good for a few things: sandboxing applications for security, easy resets to known states, more client independence such as when needing to run the same environment from an undisclosed location from time to time. The classic use is when you need to test on multiple versions of the operating system but don’t want to dedicate multiple machines. OpenBSD has a system of jails which allow multiple operating systems to run, and I believe Solaris does too (it is an old operating system feature, apparantly). Linux seems to be incorporating the Xen virtualization technology into the kernel/drivers which would allow multiple different Linuxes to run at the same time.

VMWare Private is a a free-beer, open source virtualization application running under Windows and Linux. Actually, it didn’t run on my Mandrake at work, but that is because the otherwise wonderful distribution I installed has the insane characteristic that its supplied kernel does not match the supplied source code: you cannot rebuild the kernel, and VMWare Private requires the kernel headers match the kernel in version number in order to know whether it will run. I’m going to move on from Mandrake because of this: not because of any unhappiness, but because the virtualization technology changes the equation again.

Better Living through Virtualization

I started computing on Unix systems, got a Mac Plus when they came out, and loved the AT&T UNIX PC in the late 80s: fantastic keyboard on the that thing. (In the early 90s I worked on TI’s LISP operating system and their multi-CPU/multi-OS systems.) It wasn’t until the 90’s that I had to start using Microsoft operating systems, and boy what a shock that was. I eventually acclimatized, but I had to abandon Windows at work in favour of Linux after a virus that set me back weeks of work. At work we are fairly operating-system neutral now: Eclipse, Open Office, Firefox, and browser based mail and timesheet systems.

Operating system neutrality is the way ahead. Operating systems are not going away, but it looks increasingly like they will be squeezed out from the base to being merely runnable environments for applications: fat process groups running with other simulataneous fat process groups such as Java and Unix.

We have come to the point where we really don’t care what operating system we use, except for driver and some system administration issues. But there are some sticking points with Linux or dual boot systems: in particular, NTFS and Linux are not a good mix. That is where virtualization seems to add quite a nice different weapon to the armory.

Robert Cringely had a column recently suggesting Intel Macs might virtual-host Vista for greater security. After my little experiments today, I don’t think this is nearly as far fetched as I first thought. Of course, Apple have long been the leaders in virtualization: my Mum is running her decade old accounting package at home on her brand-new OS X machine without problems.

The POSIX API has long made UNIXy terminal programs compilable on almost any platform. The advent of first the Web and now AJAX has made semi-block mode applications similarly platform-neutral. Java’s WORA (Write Once Read Anywhere) makes applets, servlets and many kinds of desktop applications doable without resorting to GUI-specific or OS-specific APIs. And virtualization seems to be another major nail in the coffin for API lock-in (or any other euphemism for monopoly).

Open Source efforts like ReactOS, the free Windows/XP API operating system, are of interest: I am at tthe stage where there are only a couple of Windows applications I ever need to run. SynthEdit and some Adobe applications in fact. Sound has never been a Linux strong point, though it is improving. SynthEdit does apparantly run under WINE in Linux, but my experiences of WINE (a Windows emulation) have not been really happy, in my case compounded by the NTFS problem. ReactOS does use WINE, but appears to involve far less configuration. Running occassional Windows applications in ReactOS as virtual appliances seems a very appealing way to have the cake without having to eat an MS license or put up with MS code.

I run XP on my laptop still, and I am looking forward to running OpenBSD as a virtual appliance. I often have to do text processing using multiple files, and the XP command line shell doesn’t cut it. REX would, but I have more experience with UNIX shells. I run Cygwin (Unix shell and API compiled to run in Windows) at the moment, but it always has felt funny: neither fish nor fowl.

It is interesting that virtualization in a sense reduces the operating system back down to a very small set of primitive intercommunication points. When the operating system is effectively so small, a lot of what passes for operating system today effectively is promoted to being session or application software. And this happening at the same time as the BIOS makers are revving up BIOS to be a little operating system in its own right squeezes the PC operating system further. Is that where we are heading: a superBIOS with PNP drivers hosting a thin basic OS (stripped down Windows, ReactOS, JavaOS, Linux, OS X, etc) with super fat clients running in virtual operating systems (perhaps packaged as virtual appliances.)?

(There is a little XML-ish tie in here too. The CEO of VMWare has a little blog where she discusses that company’s intent to have open standard formats for virtual file systems and so on. Many of her thoughts seem very close to the XML ideas of making interoperability and platform neutrality the key. I like the idea that the formats are being circulated to Linux people as well as Microsoft people or just VMWare-internal personel. I also like the idea that the old “give away the razor and sell the blade” strategy which of course underlies the free web browsers now also applies not just to non-free content creation tools but to non-free operating-system-packaging tools like VMWare.)