Open Source Overview
VMware has a long history of support for open source software in its products. In addition to collaborating with the open source community, VMware works closely with major Linux vendors to ensure high quality support for Linux guest operating systems running on VMware hypervisors. As an active participant in the open source community VMware has open sourced the VMware Tools as the Open Virtual Machine Tools project, contributed the VMI (Virtual Machine Interface) paravirtualization code under the GPL, collaborated with the Linux kernel community and others in the development of paravirt-ops, and sponsored OSDL's DCL F2F.
Dr. Memory is a memory monitoring tool capable of identifying memory-related programming errors such as accesses of uninitialized memory, accesses to unaddressable memory (including outside of allocated heap units and heap underflow and overflow), accesses to freed memory, double frees, memory leaks, and (on Windows) access to un-reserved thread local storage slots.
Dr. Memory operates on unmodified application binaries running on Windows or Linux on commodity IA-32 and AMD64 hardware. Dr. Memory currently targets 32 bit applications.
Virtual USB Analyzer
The Virtual USB Analyzer is a free and open source tool for visualizing logs of USB packets, from hardware or software USB sniffer tools. As far as we know, it's the world's first tool to provide a graphical visualization along with raw hex dumps and high-level protocol analysis.
We developed vusb-analyzer at VMware as an efficient way to debug our own USB virtualization stack. We wanted a tool that made it easy to see problems at a glance, and we wanted a way to solve both correctness and performance bugs. As a result, we ended up with what we think is a fairly unique tool. We're excited to have the opportunity now to release this tool as open source software, under the MIT license.
VMware SVGA Device Developer Kit
This project is a package of developer-oriented documentation for the details of this virtualized graphics interface. It consists of some basic documentation, as well as a package of example programs which demonstrate how to draw 2D and 3D graphics inside a virtual machine. These examples run on the (virtual) bare metal, without any OS or any other graphics driver loaded.
This package is provided for educational purposes, and for people who are developing 3D drivers. It may be especially interesting to hobbyist OS authors, or developers who want to experiment with low-level 3D graphics without the complexity of a physical GPU's programming interface.
DynamoRIO is a runtime code manipulation system that supports code transformations on any part of a program, while it executes. DynamoRIO exports an interface for building dynamic tools for a wide variety of uses: program analysis and understanding, profiling, instrumentation, optimization, translation, etc. Unlike many dynamic tool systems, DynamoRIO is not limited to insertion of callouts/trampolines and allows arbitrary modifications to application instructions via a powerful IA-32/AMD64 instruction manipulation library. DynamoRIO provides efficient, transparent, and comprehensive manipulation of unmodified applications running on stock operating systems (Windows or Linux) and commodity IA-32 and AMD64 hardware.
Operating System Specific Packages (OSPs)
Operating system specific packages (OSPs) are a packaging and distribution mechanism for VMware Tools. These VMware Tools OSPs are packaged using the native package formats and standards, for example, rpm and deb, of the supported guest operating systems.
OSPs are an alternative to the existing mechanism for installing VMware Tools from the VI Client. VMware Tools OSPs allow you to use your Operating System's native update mechanisms to automatically download, install, and manage VMware Tools for these supported Operating Systems. This enables managing VMware Tools from within the guest in the same way as other standard software.
VMware Infrastructure Java API
VMware Infrastructure (VI) is a suite of software that includes VMware ESX and VirtualCenter Server. It also includes the VMware Infrastructure (VI) web service interface that enables third party vendors to integrate with VI.
While helping VMware strategic partners with Java applications using the VI SDK web service interface, Steve Jin from VMware Co-Development engineering began to develop this Java API in order to ease the usage of VI SDK web service interface. We decided to release this as an open source project under the BSD license in May 2008.
This API is a set of Java libraries that sits on top of existing VI SDK web service interface. It provides the following benefits to the Java developers:
- Enables OO programming with a well defined managed object model
- Reduces the need to use ManagedObjectReference and makes possible compile time type checking
- Hides the complexity of the PropertyCollector
- Provides necessary utility classes to simplify VI SDK web interfaces
- Leverages current VI SDK web services interface while keeping it intact
As a result, the application code using this API is much shorter and much more readable than the equivalent using web service interfaces directly.
The API itself is straight-forward and easy to learn and use. The downloadable jar from the project download page includes binary, source and many samples.
- Learn more about the Virtual Infrastructure Java API.
Open Virtual Machine Tools
The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware Tools. They are a set of guest operating system virtualization components that enhance performance and user experience of virtual machines. As virtualization technology rapidly becomes mainstream, each virtualization solution provider implements their own set of tools and utilities to supplement the guest virtual machine. However, most of the implementations are proprietary and are tied to a specific virtualization platform.
With the Open Virtual Machine Tools project, we are hoping to solve this and other related problems. The tools are currently composed of kernel modules for Linux and user-space programs for all VMware-supported Unix-like guest operating systems. They provide several useful functions such as:
- File transfer between a host and guest
- Improved memory management and network performance under virtualization
- General mechanisms and protocols for communication between host and guests and from guest to guest
We are excited about starting this open source project and we think it opens up a lot of opportunities.
- With the source code readily available, users of VMware products today (and other virtualization platforms too, in the future) will get these tools bundled and delivered through their distribution-specific package manager. This should provide a seamless installation/upgrade experience and ease the burden on sysadmins.
- If you are looking to implement virtualization-enabled applications, you can use the source as an excellent reference.
- If you are looking to port the tools to other operating systems (or other hypervisors), we would love to hear your ideas and help you with the development.
We are working hard to move our development environment over to sourceforge.net and hope to do so in the near future.
In the meantime,
- Grab our latest snapshot release.
- Read through the documentation.
- Interact with the developers using the mailing lists.
- Report bugs.
- Spread the word.
For more details, visit the project website at http://open-vm-tools.sourceforge.net/
VMware Infrastructure Perl Toolkit
VMware Infrastructure (VI) is a suite of software that includes VMware ESX and VirtualCenter Server. It also includes the VMware Infrastructure (VI) API, a web service that enables the development of third party applications and scripts that integrate with VI.
Software developers who are comfortable programming in a programming language such as Java with a SOAP class library such as Apache Axis can use the VMware Infrastructure SDK to access the VI API directly.
In order to address the needs of sys admins and users familiar with Perl, VMware created a Perl scripting API as a way to eliminate the need for developers to use SOAP or understand the low level details of the API. The alpha version of the VMware Infrastructure (VI) Perl Toolkit was made available on SourceForge in September 2006. The released product is now available as a free download from in several forms, including:
- An installer for Windows an installer for Linux
- Virtual appliances (pre-built virtual machines that include Debian Linux along with the VI Perl Toolkit)
- Complete source code that can be built on any platform that supports Perl.
The VI Perl Toolkit includes a number of utility applications and Perl scripts that can be used to automate frequent virtual machine management operations. Users can use these scripts as provided, modify existing scripts and creation new scripts. VMware is creating a script repository where users will be encouraged to share scripts that they've created with the VI Perl Toolkit.
- Learn more about the VMware Infrastructure Perl Toolkit
libview, or VMware's Incredibly Exciting Widgets, is a collection of open source GTK+ widgets developed for use in the Linux Workstation and Player products. Originally they were closed source and part of Workstation, but we realized they had usefulness outside our products and decided to give back to the open source community.
All development takes place in the open on SourceForge, as opposed to being developed in our tree and pushed out to a public repository. Releases are made any time we have something new to contribute.
The widget collection consists of over 20 useful widgets and utility classes. These include a drop-down drawer for toolbars in a fullscreen application, a flexible and natural feeling multi-field entry widget, and decorational widgets designed to improve the look of an application in different themes, amongst many others.
libview is written in a mix of C and C++ and is available under the MIT license.
XOrg Video and Mouse Drivers
Although it's possible to interact with a VM running X11 using the standard mouse and VESA video drivers, it doesn't result in the greatest user experience - screen updates are slow and the mouse is hard to use due to those slow updates and the fact that both the host and guest are applying mouse accelerations.
To solve these problems, we have written special drivers that are optimized for our virtual hardware, and can consequently offer better performance and additional features. For example - the video driver allows arbitrary screen resizing and multihead support while the mouse driver supports host cursors, absolute mode input, and automatic ungrab when the cursor moves to the edge of the guest screen.
The video driver was one of the first pieces of software ever released as open source by VMware - back in 2002, and as a result, it is automatically present in, and usually auto-selected by, any recent (or not so recent) Linux distro. Having the video driver already selected on a fresh install, or even in the installer itself, greatly enhances the initial user experience.
The mouse driver, on the other hand, is one of our more recent open source releases - made at the beginning of 2006. As a result, although it is available on all recent distros, it is not currently auto-selected at installation time; however, we're pleased to be able to say that Ubuntu 7.10 (Gutsy Gibbon)will be the first, and you can see this in action in the most recent Tribe-5 preview.
Although, we've specifically mentioned Linux so far, these drivers build, and are included with, other x86 and x86_64 operating systems, including Solaris/OpenSolaris and the various BSDs.
All development of these two drivers is done directly in XOrg's git repository: