Disclaimer: I'm writing this post to be a constructive criticism for a product that I constantly use and love.
I'm a VirtualBox fan and I've been using it a few years now and my satisfaction varied from highly disappointed in some situations and at some points, to highly satisfied at others. I've also used the Python API for VirtualBox and it has been a not-so-good experience especially when it comes to documentation, I would say that the API is poorly documented and there are several functions missing proper documentation or missing any documentation at all.
However, through my journey with VirtualBox, I fell in love with VirtualBox and while doing that and I wanted to take the love to the next level :) I wanted to use VirtualBox in a server environment as a virtualization server, where I failed miserably.
I failed not because I couldn't do it, but because it wasn't easy for the administrator to configure and monitor the system.
VBox Auto Control
First, I wanted to start some machines on boot and I couldn't find any straight forward way to do that from the VirtualBox GUI or from the CLI and the only way was to write my own shell scripts that still did not give me all the features I was looking for. I expected to find some easy way to do that as in VMWare but I had to do that manually.
So, I decided to write a controlling service for vbox that uses a simple configuration file to spawn and save/shutdown machines on boot/poweroff which should make our life easier when we try to use vbox as virtualization host hypervisor.
Enterprise-class Management GUI
That's one big issue with VirtualBox, people tend to look at the GUI as a meter to measure the features of the hypervisor in hands and VirtualBox fails miserably because of its very basic user interface that lacks 70% of the features provided by any decent hypervisor offerring like VMWare and that is really shocking for people who are looking forward to using this in production.
The following is a list of some of the things you cannot do from the GUI but you can do either from CLI or the API:
- You cannot choose the type of the virtual disk (either vdi, vmdk, or raw)
- You cannot monitor machines performance (IO, CPU, Network, etc)
- You cannot configure the DHCP servers running for NAT network mode, you cannot also configure any of the NAT features (port forwarding, redirection, DNS proxy, etc)
- You cannot clone disks, snapshots, etc.
- You cannot see any of the tele-transportation features in the GUI.
- You cannot change the BIOS logo.
- You cannot control any of the configuration parameters for the guest clock and timers.
- You cannot control the automated guest logons features in the guest addons.
- You cannot set any limites to CPU, Network, Disk IO for the virtual machines.
- You cannot bind virtual cores with physical CPU cores.
- You cannot overcommit memory allocation.
And many more, VirtualBox is really fruity but everything is hidden behind this ugly GUI that doesn't show except the basic stuff for the below average user.
Testing and Release Management
VirtualBox lacks the production-quality testing process and they have been seeing many regressions lately and releasing minor updates quite often, which is fine but doesn't work well with the enterprise-class sector in the market. VirtualBox should be covered more by tests and the release management should be more careful for regressions and the too-frequent updates they are throwing to the end user.
During my journey with VirtualBox, I've seen many many crashes in the hypervisor where it fails to start a machine or restore a snapshot and I've seen many cases where VirtualBox got stuck while changing the state of the virtual machine, most of the those cases happened in a tight memory environment where the host didn't have plenty of free memory available for VirtualBox. Still, more testing is needed and some bug reporting tool is required to make things easier for users to submit or issue tickets for bugs.