Features/Spice

= Spice =

Summary
Spice aims to provide a complete open source solution for interaction with virtualized desktops

Owner

 * Name: Alexander Larsson
 * Email: alexl@redhat.com

Current status

 * Targeted release: Fedora 14
 * Last updated: 2010-09-16
 * Percentage of completion: 100%
 * All spice 0.6 packages are done
 * qemu-0.13.0-0.6.rc1.fc14 has spice support

Detailed Description
The Spice project deals with both the virtualized devices and the front-end.

Currently, the project main focus is to provide high-quality remote access to QEMU virtual machines. The Simple Protocol for Independent Computing Environments (SPICE) is used for client-server communication. Spice adds a QXL display device to QEMU and provides drivers for this device for both X and Windows.

Features supported in the protocol are:
 * Accelerated 2D graphics
 * "Hardware" cursor support
 * Audio playing
 * Audio recording
 * Image compression, both lossless and lossy (for WAN support)
 * Video detection with MJpeg streaming
 * Encryption
 * Client side mouse pointer support
 * Drivers for: X, Windows (xp, vista, win7)

Red Hat acquired Spice together with kvm when it aqcuired Qumranet, and has invested significant effort into opening it up, cleaning up dependencies, etc.

Benefit to Fedora
In the long term, Spice will let Fedora provide a better user experience in desktop virtualization. In the short term, Fedora gains an interesting new open-source technology that many people want to try out.

Scope

 * Spice support needs to be added to the Fedora qemu package
 * Need to package celt 0.5.1 as celt051 package (for the specific bitstream format spice uses) [bug #612979] [packages]
 * Need to package spice-protocol [bug #612943] [packages]
 * Need to package spice, giving spice-server and spice-client packages [bug #613067] [packages]
 * Need to update xorg-x11-drv-qxl package for latest spice version

Other (non-mandatory) spice-related bits useful to have in Fedora:
 * Spice guest agent for linux [bug #613654]
 * mingw32 versions of the spice packages for cross-compiling windows apps + drivers on Fedora.
 * mingw32-celt051 [bug #613993]
 * mingw32-libogg [bug #613697]
 * mingw32-spice-protocol [bug #614047]

A common use for spice is to run windows client, and spice ships with several windows parts:
 * A video driver.
 * An agent for doing operations inside the guest.
 * virtio serial driver for talking to the agent.

It might be interesting to package these in fedora somehow so that its easy to deploy them. Note that the fedora package guidelines don't allow shipping pre-compiled blobs. Which implies we must build the windows binaries in mock/koji. Which implies we must be able to cross-build all bits using the mingw compiler.

How To Test
The server part of Spice requires a x86-64 machine, and ideally should have hardware virtualization support (kvm) although this is not strictly required.

The client currently works on x86-64 and x86, but we're working on porting it to more architectures.

To test spice, install a qemu with spice support and spice-server on the server machine, then start qemu with options something like this: qemu  -usbdevice tablet -soundhw ac97 -vga qxl -spice port=5930,disable-ticketing -enable-kvm or with passwords: qemu  -usbdevice tablet -soundhw ac97 -vga qxl -spice port=5930,password= -enable-kvm

On the client, install the spice-client package and start it like: spicec -h localhost -p 1234 -w

This should let you access the machine. You should now install the qxl driver and optionally the agent (only available for windows) in the guest. If you do not do this you're running in vga mode which is quite slow and inefficient.

User Experience
The initial version of spice is not integrated with the virtualization management in Fedora (libvirt). We're working on this, but its not expected to happen in F14.

Dependencies

 * qemu

Contingency Plan
Drop the qemu patch, stay with current qemu frontends

Documentation

 * the main spice website
 * spice features
 * spice documentation
 * 0.6 schedule

Release Notes

 * Fedora 14 introduces the Spice framework for desktop virtualization.

Comments and Discussion

 * See Talk:Features/Spice