Monday, July 26, 2010


I would like to point your attention to phpVirtualBox, a new project that - even though still in early beta - provides an almost complete web interface to VirtualBox.

In 2009, we saw that over a dozen web interfaces for VirtualBox were started but none of them was really promising. Our team has always focused on the hypervisor and generally consists of system software developers so we never planned to get in the business of developing web interfaces. From the very beginning, VirtualBox has offered comprehensive APIs and while they initially were only available in C++, we gradually extended language support and now have the most comprehensive API bindings of all virtualization products in the market. Still, most projects we saw made one or more major mistakes in how they talked to VirtualBox. Often they just issued command line calls and parsed output (VBoxManage). We tried to improve the SDK documentation, posted on mailing lists, wrote sample code but still, the project we were hoping for did not emerge.

Finally we decided that we have to kick off this project and get it to state where other capable community members would take over. This is how vboxweb came to life. We did not have a lot of experience writing AJAX software so we first had to do some research about which toolkits would show good results and have the highest chance of attracting contributors. Python, jQuery and an integrated web server were chosen as we wanted to get something that is easy to install.

During the course of playing with vboxweb, we noticed that our scripting API had several deficiencies and that there were some very subtle bugs in SMP environments. We took the time to cleanup those things and generally, vboxweb was a very good tool to refine our scripting APIs. The biggest issue of the vboxweb approach is that it required the Python interpreter (and thus the web server) to live on the same machine as VirtualBox. The reason for this is that we used the local Python bindings as opposed to the web service (SOAP). The main advantage of the local bindings is support for events (callbacks) whereas the web service approach required a good amount of polling for updates. In the next major version of VirtualBox, we will introduce a completely redesigned event handling system allowing web service clients and all scripting languages to listen for events and go without the time consuming polling.

vboxweb inspired a lot of community members and customers about how to use our API and we are happy that Ian Moore took the initiative to develop a comprehensive web interface to VirtualBox. He used PHP (for which we provide equally good bindings thanks to community member James Lucas) and jQuery and the result is simply amazing. phpVirtualBox first showed up as version 0.3 and it is almost feature complete! You will find the full VirtualBox GUI as you know it from your local system in a modern AJAX web interface. In addition to that, the source is extremely well designed -- much better than we could do with vboxweb.

So it's clear that phpVirtualBox is the new star and vboxweb will officially retire and only serve as a sample program.