Subject: Re: Thoughts on a port to a virtual machine?
To: Allen Briggs <>
From: John Rudd <>
List: netbsd-ports
Date: 07/19/2000 15:04:50
(I want to appologize in advance for the length of this message, I can
be kinda long winded, esp. when I'm trying to make a point.)

Allen Briggs wrote:
> I wonder if there's a market... 

It'd seem to me to not be too different a market from the one that
currently runs MachTen on MacOS (bsd+mach virtual layer, but I don't
think it's a virtual CPU, so it's not quite as abstracted as what I'm
talking about).  While that market will go away when MacOS X gets
released (because then they wont need 2 seperate layers for running unix
and macos), it's a similar class of users.

For example, there are people out there who prefer unix, but are still
prevented by their bosses from running anything but windows on their
desktop.  Being able to satisfy both ends (run Windows as the primary
OS, run *BSD on a virtual machine) would probably be attractive to a lot
of people.  For some of these people, vmware would be a solution ...
_if_ they're running NT or 2k.  If they're stuck on win98, then vmware
doesn't help them at all.

Another application:  I have yet to see _any_ unix that has decent
support for the various features of intel laptops.  Sure, some have
hackish support of suspend and resume features, etc, but the more fancy
the vendor's feature, the more likely you wont be able to use it under
linux or *BSD.  You're either going to have to give up features, or take
on headaches.  Why bother?  Why not run run *BSD on top of windows?

After skimming through the archived replies, I notice someone thinks
this is insane.

"Just buy a laptop and take it to your parents".  That doesn't bring the
environment of my home nor work machine with me.  I already have a
laptop (a plenty fast one, at that).  The laptop does not solve the
problem.  In some ways, it makes it worse (I now have _3_ seperate
environments to deal with, intead of 1).

And I'm not just talking about running emacs (well, vi, but I don't want
to start THAT holy war here) and synching setenv and my home directory. 
I'm talking about everything from your bookmarks to your X desktop
configuration to which programs were on your desktop when you left one
station and got to another, to even which programs (and versions of
those programs) are installed on the machine at all.  Sure, the home
directory addresses the bookmarks and personal configuration, but not
the rest.

Laptops help with that IF AND ONLY IF your laptop is capable of doing
the job of all 3 environments in one box.  I have a Linux box at work
that I have to leave at work.  I have a Windows and a BSD box at home
(the BSD box I want to be up all the time, and the windows box is for
running games).  My laptop would not be able to solve all 3 of those
situations.  Not because it isn't plenty fast and have a big disk (in
fact, in terms of disk, memory, and cpu, it's the beefiest of the 4
boxes ... well, except that the linux box is a dual processor), but
because there are roles involved that can't really be solved by a
laptop.  The BSD box wouldn't always be up and available if it was my
laptop.  The laptop just doesn't have a good enough graphics engine for
playing games (none of them do).  The linux box can't go home with me,
and I specifically need to use it at work.

In each case, I could use those systems in their ideal capacities
(laptop when on the road, linux at work, windows for games, bsd box for
anything else that I want to run at home and that needs persistance and
speed), while also putting on top of each of those systems my general
user environment in a virtual machine.

When I'm on the road, I have my VM running on the laptop.  When I get to
work, I suspend it, transfer it over to the linux box, and run it on top
of the linux box (while running those things that need speed natively on
linux).  Load it back onto the laptop when I head for home, and then put
it on the BSD box when I get home.  3 native OSes (one of which does not
play well with the other two, and the other two not suited to
migration), but 1 user environment that runs identically on top of all

Juggling that now is a major pain in the rear.

As computer power increases, my interactions with computers should
become easier, not more complicated.  If it doesn't become easier, then
the value of the computer has not increased even though the power has
(and if it becomes harder, teh value of the computer has _decreased_,
even if power has increased).  That's the whole purpose of the computer:
to take on more and more computational and communications tasks so as to
free up people to do more important things.  In otherwords, to make the
current problems in your life/career easier to conquer so that you can
tackle bigger problems.

Will it be slower?  absolutely.  No question about it.  It's also slower
to run programs on a computer that has an operating system instead of
writing programs to run on bare silicon.  That also involves a lot of
overhead, due to 'reinventing the wheel'... but it's faster and allows
more flexability.  As computers got more power, the tradeoff of speed
and flexability vs the cost in overhead and lack of standardization of
programs leaned more toward lowering the cost of overhead and embracing
standard interfaces between programs and devices, so Operating Systems
were adopted.

You can make similar analogies to several advances, both within the
computing disciplin and without.  Just because something is more
resource intensive does not make it a bad thing, you just have to figure
out at what point it becomes a valuable tradeoff.

The concept of migratable computing (to differentiate it from "portable"
computing (often refers to laptops and PDAs) and "distributed"
computing) is likely going to get more and more attention over time. 
Portable computing attempts to address that need, but often in an
inadequate manner (as outlined above).  Some facets of distributed
computing also attempt to address it (storing your bookmarks in an LDAP
directory, for example), but also has its short comings and overhead
(network latency, authentication, cost of administration/ownership,
etc).  Migratable computing can solve the problem with just a large
removable disk, and ubiquitous access to a standard runtime environment.

Certainly if all runtime environments from Windows to the Mac to all
flavors of unix had complete interoperability, it wouldn't be an issue..
your Jaz disk would be enough, and you wouldn't need a VM.  But in order
to make it truely migratable among platforms with multiple CPU types and
multiple OSes, you need a VM.

Are CPU, Bus and Memory speeds fast enough for this to be practical
today?  Dunno.  Wont know til after it gets tried.  I think it'd be
interesting to be among the people who find out.  And part of the
question is "how fast does your _user_ environment need to be, compared
to the environment that actual work gets run under".

Things that I run _for_ work (not just at work) need some speed, so I'll
likely keep those running natively.  But I don't necessarily need my
mail reader, my news reader, my web browser, etc, to run with native
speed.  And those are exactly among the things that I'd like to "take
with me" from location to location.

(there's another use besides portable environments, as well (though it's
likely to be more interesting to someone working in academia (I'm a
sysadmin, not a student), like me, than to someone working out in the
industry):  Providing isolated virtual sessions to individual end users,
so that they each have their own seperate, relatively secure,
environment.  This sort of goes along with the IBM VM mainframe
environment.  Each user has their own private virtual unix box, that
they can abuse (in terms of both stability and security) all they want
to, and the only person it will impact is themself.)