Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

Allow users to run Windows apps on an Ubuntu desktop by remotely connecting to a Windows instance running locally in a VM. Most of the bits currently exist; what this spec will provide is an application to integrate the whole process from VM creation to application installation/execution.

For the time being, we will refer to the program produced as "seamless" for lack of a better name.

Rationale

Despite best efforts, Windows programs are and will continue to be a part of many desktop users lives. Wine, while a fantastic product and an amazing result, simply isn't sufficient for many programs. At the same time, many of the people who need Windows programs already possess Windows licenses, so a virtualization solution is ideal. As multicore CPUs continue to proliferate in the Desktop market, the associated CPU cost of running a VM all of the time will shrink to nothing.

Use cases

Scope

This spec covers the program to assist the user in creating/configuring a VM image, installing Windows, installing programs and running programs from a VM.

Design

The design should have the following considerations:

Future Functionality

Implementation

Virtual Machine

We have several choices for virtual machines. On the OSS side of things, we have qemu, virtualbox, bochs, KVM, and xen. On the closed but free side, we have VMware player. With the exception of Xen, all of the above solutions are full virtualization solutions which allow us to run Windows w/o special HW assistance. Xen requires modifications to Ubuntu itself. In addition, Xen requires HW virtualization support to run Windows, so this isn't an option in general, though it is certainly viable for when we detect such a capability.

For the sake of simplicity, the initial design will only support (k)qemu, with the intention of supporting more VMs in the future.

Windows Installation

Windows XP

We can use a pre-configured winnt.bat/winnt.sif and stick it on an emulated floppy drive to have Windows install automatically. We will still have to have the user mess w/ user accounts and Windows Activation, but that stuff is easy and straightforward.

Windows Vista

Not sure how the equivalent mechanism works in Vista, but I'm sure that there is something similar to the XP solution for us to take advantage of.

Window Forwarding Mechanism

Windows XP Client

A combination of RDP and seamlessrdp enables us to run a single program at a time from a Windows XP Pro client. It is conceivable that a similar solution could be constructed to allow the forwarding of a single program window using simple X forwarding, but such a solution is beyond the scope of this spec.

While Vista is new and sexy, XP is and will remain an important client to support, possibly even more important than Vista. As many organizations are recoiling at the thought of upgrading to Vista, this project offers them an alternative upgrade path that allows them to run their legacy applications interminably while offering a new, open future.

Windows Vista Client

The new version of RDP that ships w/ Vista support running individual programs. The easy solution here is simply to wait until rdesktop supports this feature and use that as the forwarding mechanism.

Program Installation Mechanism

Ideally we want for someone to download a setup.exe or .msi file on the Ubuntu system, run it, and have the final installation show up in the "Applications" menu in Ubuntu, assuming that they've previously setup the VM. This will require us to associate seamless w/ .exe and .msi files (conflict w/ wine?). We will then copy/link the files into a folder shared w/ the host (SMB), and execute them from there using RDP, handling the setup from Ubuntu. Afterwards, we will rip the program from the Windows "Start" menu, and create an entry for them in the Ubuntu "Applications" menu.

This will require us to run some programs from the Windows guest and have them communicate with seamless on the host. A simple shared file will probably be sufficient for our immediate needs. I have no idea how to get the info we want out of the Start menu in a programmatic way, but that should be figured out easily enough.

Unresolved issues

BoF agenda and discussion

PyQemu Human for Windows


CategorySpec CategorySpec

SeamlessWindowsIntegration (last edited 2008-08-06 16:26:32 by localhost)