OS Installation and Updating

The main problems with installing or updating almost all OS's in the world today are:

1. Difficult to do
2. Time Consuming
3. Reinstall is inevitable
4. Reinstall is not automatic

Partially we of the x86 world, can blame the hardware.  x86 architecture is a patch, on a kludge, on a fix.  I believe it's a miracle that hardware detection on x86 works at all. But there is still no real reason why an OS should take so long too install, or why we have to reinstall, or why the system can go unstable when you update a program or device driver (I'm talkin Unix here too).

For those of us who install OS's, it's a common occurrence for it to take 10-30 minutes depending on what OS your installing, and what features of the OS have selected to install.  Assume we are installing an OS from a 20x IDE CD-ROM, as this is very typical.  If the CD-ROM is working at 150K/s x 20 = 3 Megs/s,  and an average OS nowadays is about 120 megs installed, it should only take 40 seconds once the selection process is over.  Now you can also take into account that the files are compressed, which if you have a slow processor, may end up taking a little more time (for this we will assume 1 min).  I don't know of any modern OS that takes less than 3-5 min to copy files to the drive, not to mention, about 3-8 min for the selection process.  But this is nit picking... I really don't mind waiting 10 min for my OS to install. However, if I have to wait this 10 min, once a month (wont name bad flaky OS here), then I'm more than annoyed.  When using these figures, you must also remember the time it takes to reinstall all the software (another 1-2 hours). You may say to yourself, why not just backup and restore?  Well, it's nice to have all your settings and configurations still intact, however the reason you had to reinstall (lack of stability usually), is still there, so you start with a clean slate.

What can be done to remedy this in a future OS?  The first option is to remove the configuration files from the OS's structure.  If the stability problem is due to the configuration, then having the configuration not within the OS structure means you can reinstall or restore by simply using an older copy of the configuration files. This would keep the OS intact, while allowing a reinstall.  The second thing, as you can guess is to keep all the programs configurations separate from the OS structure, and the OS configuration. This completely reduces the need to re-install the supplemental software.

While these methods would reduce the need to reinstall software, there is still the problem of updating.  Whenever you update you are replacing device drivers or portions of programs. The problem with this, in some OS's, is the use of in-memory link libraries (i.e.. Win DLL's).  Replacing a link library for a program that has been tested with the new one is fine.  However a problem arises when you replace a link library that is shared between multiple programs.  One of these programs may depend on a function that does not work in the same way, or is missing in the newer library. This could cause the program in question to misbehave or not work at all.  The key to a better system of updating is to NOT effect any other program than the one that it was designed for, and not even that until the user chooses. This can easily be achieved using the Hardware Abstract system and on demand compiling.  Essentially it means that a program is not updated until you force an update (recompile/optimize).  This keeps the programs in working order until an update is required for additional functionality or stability.

The final topic, is ease of install.  This can be done better (on x86 at least) by using bootable CD install.  This is not a new concept for Sun Sparc users, as they have been installing the OS from a boot CD for years.  Many OS's are taking advantage of this new feature of x86 computers, and I think it's a step in the right direction. The interface for the install should also be very simple, straightforward, and easy to navigate (possibly a web browser type approach).