The (Personal) Virtual Computer
Henry Minsky
hqm@alum.mit.edu
http://www.ai.mit.edu/people/hqm

The (Personal) Virtual Computer

Summary

Personal computers are currently difficult to maintain for even skilled engineers. As new applications are emerging which require full-time network connectivity and presence, the modern personal computer becomes even less appropriate. In addition, as people's usage methods change, with more use mobile computers and access from multiple devices, a new approach is required.

As people start to make use of multiple network access devices (mobile phone, network enabled GPS, WLAN PDA, Digital Camera with Ethernet, computer with WLAN or cell phone card), and start to rely on computerized messaging and communication, it becomes more important for them to have a "home base" which is always present on the network, and where they can store their files, and run their own applications. But today network servers are even more arcane and difficult to operate than desktop computers. New services based on realtime data streaming, such as Voice-over-IP and multimedia instant messaging will require even more sophisticated configuration and maintainence.

Many of these issues can be solved by combining the functions of personal computer and network server into a standardized abstract virtual server.

Aside from specialized programs that I use such as CAD design, the data and computer services that I make use of on a common basis are

There is simply no easy way to install and maintain these services now. I make use of Yahoo Mail for some of them, but I have no control over that application; they may upgrade it or drop features that I use, or they may fail to add features I want. I would prefer to have the ability to run my own personal "Yahoo Mail" service on my own virtual server.

The Personal "Home Base" on the Internet

As the XML-RPC/SOAP APIs get standardized, it is also going to be much easier to link servers together, to do things like have your own application that grabs address book data from your friends' servers, etc. So using applications on other people's servers will be much simpler. However at the core, I think it is required that some sort of "home base" platform system be under the control of the individual user.

This was particularly acute for me when I lived in Japan, where I had an i-mode phone which could run network applications. There were numerous server side apps for it which I desired, but I needed my own personal server to install and run them from. In Japan I was actually using a web server in the US to hold my address book data, and accessing it via the cellphone in Tokyo. So of course the location of the server doesn't matter too much (though it would be nice to have a local mirror of the server for faster access in Japan).

But running a server is impossible for most people. They don't have high speed full time access, they don't know how to administer a server, they don't have the time to waste, etc.

You can currently colocate or lease a web server service of some kind from one of the rackspace.com type of places, but you are still either using some strange conglomeration of bad software and one-off system configuration, or basically down at the bare metal as far as configuring and running and backing up the thing.

So what I think is needed is a higher level "virtual server" machine description, which can be portably installed on a real server someplace.

The idea is that we can define a standardized portable runtime, that you can easily serialize and dump it out your virtual server as a single archive dump file and install it someplace else, if you find a better virtual server hosting company. The hosting service takes care of the dirty work, such as keeping multiple reliable network paths open, power on, backups made, reasonable external firewall security, etc. On the server side, the personal virtual server is a standardized description of web server computer system, that can be installed and run on many different underlying hardware or software platforms. It will be the target for which most developers write applications, knowing that their apps will run "turn key" on millions of that target platform.

From the user's perspective, their server can be accessed either from a web browser or by downloading a local copy of some or all of the virtual machine and filesystem to a local computer. Figure 2 is an example of what a web "dashboard" for a personal virtual machine might look like. It is built using the Laszlo Systems Presentation Server, a platform for deploying desktop-like lightweight GUI apps over the web.

Dashboard panel for personal virtual server, running in a web browser

I believe the most likely technical approach at this time for such a virtual machine would be to use some variation of Linux as the core operating system. Work is underway by several organizations to provide efficient Linux virtual machines. The User Mode Linux project has ported Linux to Linux, allowing a linux operating system image to run as a user-space process, and mount a private copy-on-write filesystem from the host, as well as use a virtual network connection with its own IP and ethernet address if desired.

An alternative to the 'Microsoft Hailstorm' approach

Some recent proposals, such as Microsoft's Hailstorm sytem, have suggested that it is desirable for people to store their personal data in a centralized database server which is maintained by a corporation for a fee. The information is then accessed (for a fee) by using secure network remote procedure calls.

While I think the idea of keeping your personal data in a secure remote database is reasonable (if security can be guaranteed), I think that the issues of control and respsonsibility for the data are key. Requests for authorization for access to your personal data should first come to you, the owner, not to a third party.

I think that the personal virtual server model would push the balance of power back towards users, away from the idea that corporations should hold all your stuff for you. All the underlying machinery is invisible at the user level, you just install new software like you do on your desktop machine. But you still have complete control over your server and data and filesystem, as much as you do on your desktop machine. Requests for your data are handled by your virtual server, and if you do not like the default policy, you may change it by simply installing a different module on your server. A very different model than the Microsoft Hailstorm proposal.

The Virtual Server

Currently, desktop (Windows and Macintosh) computers have made it possible for most people to easily install and run applications, without much training, and without the need to understand the details of the operating system or programming langauges. However, currently if you want to run your own web applications, you are forced to understand and administer your own computer operating system and database. There is no standard or easy way to install multiple web applications onto a standard web server platform.

Today, a user can get access to various web server applications via the ASP (Application Service Provider) model. Examples are Yahoo Calendar, Microsoft Hotmail, eGroups web bulletin boards, etc.

I don't like the whole ASP model however. It's a good idea to provide special services which are maintained by a provider, but it's not really comfortable for me to have all my stuff scattered in other people's servers like that. I like to have more control over my own applications, especially those which contain my private data.

Just like I like to have my own computer at home where I have complete control over how it is configured and operated and who can access it. For example, the online photo album services all provide you the ability to upload picures, but you cannot download them again at full resolution. This is done strictly to lock the users into using the service, once they have relinquished control of their personal data. Online schedule systems such as Yahoo Calendar, force you to view advertising, and impose rather stringent limits on the amount of online storage you can use for your mail and personal data.

The right solution for this is to define a virtual server platform, which allows users to easily install and run multiple web applications, and provides a complete runtime environment including a fileysystem and database. Being a virtual machine, a complete snapshot can be made of it and all its application and data contents, in the form a of a simple data file. This server image can be installed and run on any host or hosting service which supports the virtual machine.

If you don't like the service from the company that is hosting your personal virtual server image, you just dump it out and install it on another service, or rent your own personal physical server and install and run your image there (although now you are getting back to being sysadmin).

The advantages of a virtual server over a real physical one are many. Your virtual server can be hosted at a data-center, which has full time power and high speed redundant network connectivity. Your server is always "on" and connected to the network, and you can take advantage of economies of scale to save money. Multi-tasking mainframes can run thousands of virtual server images simultaneously.

Contrast this with actually physically owning a PC server for your personal or business use. The costs add up radily; the base machine cost (which rapidly depreciates in value), the electrical power (not neglible, several hundred watts for typical PC's), cost of a full time network connection, and your time as you reinstall Windows over and over, keep it patched for the repeated security flaws, etc.

Replacing the personal computer

It is possible to entirely replace the personal computer with a virtual server. The most practical issue is latency; you cannot expect to access your applications over a high speed network link and still get the performance and responsiveness of a machine running locally on the desktop; network latencies are going to be somewhat variable and significant for quite some time. And you do not want to depend on network access to get to your important data and applications.

However with a virtual machine image, you can easily download a copy of your virtual machine to a local desktop system. If the filesystem is designed properly, you can have a cached and synchonized local copy of your entire "world", and any changes made will transparently be mirrored on the remote server. You can run many instances of your personal computer, whereever it is most convenient; on your laptop, pda, or desktop.

The performance cost for running a virtual machine versus a "real machine" can be made arbitrarily small, through various known technologies. IBM now makes mainframes which are designed to support virtual machines efficiently. In the future, perhaps desktop machine CPUs will also contain these features.

Telephone companies could provide these machines as a service

As raw data communication becomes a cheaper commodity, the telephone companies are looking to sell value-added services to their customers. Just as a telephone company now provides voice-mail as a value-added service, they should be able to provide hosting for customers virtual machine images.

A business model could be made to define and support the virtual machine and its applications, and provide support and maintenance of huge banks of these virtual servers for telecom companies to sell to their customers.

By way of analogy, let's examine the service of voice-mail and its implementations. If you want your phone answered automatically, you have two alternatives, you can buy an answering machine and put it in your house, or use voicemail service from the phone company or a third party.

Now let's look at email service. This is the service where you can read and manage your email via your home computer or via a web interface. In the case of Microsoft's Hotmail, we have a situation where you outsource your email service to an ASP. If you want to read and manage your mail on your own desktop PC, you buy or acquire applications and install and run them, and probably use a ISP (internet service provider) to receive and hold your mail when you are offline.

With a personal virtual server, you could actually have email go directly to your server, no need for an ISP or ASP or for anyone else to ever handle your mail. A mailer process on your virtual machine simply sits around accepting mail for you, as most workstation hosts used to do on the Internet. Running a personalized mailer might allow more powerful services, such as sending email with specially tagged one-time return addresses, so that spam can be more effectively evaded and blocked.

If a standardized POTS (plain old telephone service) to IP gateway API is provided, then your personal server can handle voice mail, audio streaming, fax reception, and other applications.

Multimedia voice mail applications would now be under the user's control, so if you can't stand the voice-mail service from the phone company, you run your own.

References

+ My Powerpoint presentation on virtual servers based on work done at Keio University under the WEM (Wearable Environmetal Monitoring) NTT DoCoMo research project.

Ensim - Solutions [Private Server Hosting]
Future Power 17 AIO
IBM Research Almaden Research Center Almaden Institute Irving Wladawsky-Berger Bio
iMASS II PC Magazine Review 09-25-2001
NewsForge Linux virtual machines aren't just for the big boys anymore
phpguru.org
Virtuozzo Technology
Welcome to Solucorp

+ http://www.frankston.com/Public/WRITINGS/The%20prerogatives%20of%20innovation.asp
  http://www.frankston.com/public/Essays/WiredBroadBand.asp
  http://www.frankston.com/public/essays/ContentvsConnectivity.asp

Some good Bob Frankston essays on how end-to-end connectivity needs to
be preserved in the future Internet infrastrture.

In particular, the essay The Prerogatives of Innovation outlines what
is vitally important about deploying systems that can be effectively
customized and extended by the users. (Never use the word "programmed"
though, because some competing system will always come along and
advertise their product as "no programming required").

+ http://www.linuxgram.com/newsitem.phtml?sid=108&aid=12209
http://www.rlxtechnologies.com/home.html

This article refers to a new high-density packaging for a rack full of
a couple of hundred low power servers.

+ http://sourceforge.net/projects/user-mode-linux

This is a port of Linux to Linux. This is very important, because it
allows you to run multiple virtual Linuxes safely on a single
machine. It is an implementation proof-of-concept of my Standard
Server Virtual Machine concept.

+ http://news.cnet.com/news/0-1003-200-4028271.html

IBM has can run a single mainframe with thousands of virtual Linuxes
on a mainframe, harking back to the original IBM VM (Virtual Machine)
days.

"IBM has replaced Sun Microsystems at Telia, a Scandinavian
telecommunications customer that will use Big Blue's mainframe running
Linux instead of 70 Sun servers.

IBM has been pushing Linux across its four server product lines, the
most expensive of which is the mainframe zSeries, formerly known as
the S/390 line. Using "partitioning" software, a mainframe can be
split into several independent computers that share the same
hardware. IBM and others have demonstrated running tens of thousands
of Linux computers on a single mainframe.

At Telia, a G6 mainframe with more than 1,500 virtual Linux servers
will replace 70 existing Sun Unix servers, IBM plans to announce
Thursday. The Linux servers will host Telia business customers' Web
sites."