# A Proud Moment: VMware Workstation 8

Today is kind of a career highlight for me. A moment I’m especially proud of. We just released VMware Workstation 8. Code-named “Nitrogen,” this release has been in the planning stages since around the time I joined VMware 7 years ago. It has been in active development for the past 3 years. Easily the longest development cycle we’ve had for Workstation, but also easily the best release we’ve ever done.

Previous users of Workstation will notice quite a lot of improvements to this release. We have a lot of changes, but I want to go into a few that I’ve worked on over the past three years, which I think are of particular interest.

Remoting

This is the big one.

Workstation 8 can share VMs with other Workstation 8 clients. You can run a VM on one system (say, a beefy desktop machine in the back room) and access them from another (say, a light-weight laptop). All the processing happens on the machine running the VM. They can be made to start up along with the system, so you don’t even need Workstation running. You don’t even need X (on Linux).

Users of VMware Server or GSX should find this familiar. We’ve essentially succeeded the Server product with this release, with more features than Server ever had. For instance, one client can connect to multiple servers at once, alongside all your existing VMs.

That’s not all, though. You can also connect to ESXi/vSphere. As a developer, this is something I take advantage of nearly every day. I have an ESXi box running in my back room with several VMs for testing, and a couple for in-home servers. By running on ESXi, I minimize the overhead of a standard operating system, and gain a bunch of management capabilities, but previously I had to use vSphere Client to connect to it. Now I can just talk to it with Workstation.

Hear that, Linux admins? You don’t need vSphere Client running on Windows to connect to your ESXi/vSphere box anymore. That’s a big deal. (Unless you need to do some more advanced management tasks — we’re more about using the VMs, and light customization).

We also make it easy to upload VMs to an ESXi/vSphere box. Connect to another server, drag a local VM onto it, and the VM will convert and upload directly to it. Super easy. Developing a VM locally and putting it up on a server as needed is just a simple drag-and-drop operation now.

No More Teams

Teams was a feature that we’ve wanted to rework for a long time. For those who aren’t familiar with them, Teams was a way to group several related VMs together (say, parts of a test server deployment) such that they could be viewed at the same time with a little live thumbnail bar. It offered some support for private virtual networks between them, with each NIC being able to simulate packet loss and different bandwidth limits.

We felt that these features shouldn’t have been made specific to “special” VMs like they were, so we tore the whole thing apart while preserving all the features.

Now, every VM’s NIC can simulate packet loss and bandwidth limits. Any VMs already together in some folder or other part of the inventory can be viewed together with live thumbnails, just like Teams. Any VM on the local system can be part of any other VM’s private virtual network.

It’s much more flexible. The restrictions are gone, and we’re back to using standard VMs, not special “Team VMs.”

Inventory Improvements

You may have noticed the search field in the inventory in my screenshots. You can now filter the listed VMs by different criteria. Show the powered on VMs, the favorites, or search for VMs. Searching will take into account their name, guest OS, or data in the Description field in the VM. The Description searching is particularly helpful, if you’re good at documenting/listing what’s in a VM that you may care about (IE6, for instance).

Favorites was reworked. It used to be that every VM in the sidebar was a “favorite.” Now we list the actual local VMs, and we don’t call them favorites. Instead, you can mark one of the listed VMs as a favorite (by clicking a little star beside it) and filter on that.

UI Improvements

We’ve streamlined the UI quite a bit. All our menus are smaller and better organized. Our summary pages are cleaner and highlights the major things you want to see.

We have new ways of navigating your VMs, which is especially handy on large servers. You now get a tab for any folder-like node in the inventory showing your VMs in either a list view (with info on power states) or a zoomable live thumbnail view showing what’s happening on each VM.

And Much More

That’s just a few of the major things. There’s many, many more things in this release, but the official release notes will cover that better than me. (Honestly, I’ve been developing and using this release for so long, it’s hard to even remember what was added!)

Tip of the Hat

A lot of great people worked on this release. The engineers that developed the various components across the company. The QA groups who have provided valuable testing to make sure this was a solid release. The product marketing and management teams who kept us going and help draft the goals of this release and market it. The doc writers who spent countless hours documenting all the things we’ve done. Upper management who allowed us to take a risk with this version. Our beta testers who went through and gave us good feedback and sanity checks. And many others who I’m sure I’m forgetting.

I said this already, but I’m so proud of this release and what we’ve accomplished. More effort went into this than you would believe, and I really think it shows.

And now that we’re done, we’re on to brainstorming the next few years of Workstation.

# Review Board 1.0 Released!

Tonight, we hit a milestone in the Review Board project that we’ve been working toward for over two years. We finally pushed out our 1.0 release. A lot of blood, sweat and tears went into this release (okay, so not literally, but it was A LOT OF WORK!). The last few months in particular have been challenging, as we’ve had to solve some tricky bugs and scalability problems, but the end result is pretty great.

Just a short while ago, we announced the release and put up an overview of the entire release and product. We’ve already had some nice congratulatory e-mails and tweets, which is really nice 🙂

Some stats for this release:

• 2 years, 9 months, 25 days have passed since our first commit.
• 120 contributors have contributed to Review Board so far (in terms of code contributions).
• 899 review requests have been posted to our project’s actual Review Board server. 1,650 users are registered on there.
• Our demo server, in comparison, has 2,082 review requests filed and 10,154 users.
• 938 bugs were filed. 812 were fixed.
• 232 feature requests were filed. 101 were implemented. Most remaining ones are scheduled for releases.
• An estimated 200+ companies are now using Review Board. 26 have let us list them publicly.
• The largest known Review Board install has over 83,000 filed review requests and over 2,000 users, doing upwards of 10GB of traffic per day.
• 5 presentations on Review Board are known to have been given, 3 by us, 2 by others.
• 552 users have joined our main mailing list, and 3,674 e-mails have been sent.

Now that Review Board 1.0 is out, we can get started on some awesome new features we’ve had planned. I have a little notebook full of ideas for our 1.1 and 1.5 releases (which may become 1.5 and 2.0, respectively, as this list grows). Some of the new features are actually ready to be committed within the next couple of days, so those of you using nightlies will start to see them soon.

We were accepted into this year’s Summer of Code, and have three students working on exciting projects for us, so hopefully we’ll start to see these trickle into the upcoming nightlies as well. Among these projects include diff viewer improvements (moved region detection, better whitespace-only change detection), IDE integration with Eclipse, and improved notification hooks and e-mail support.

We’re also working on providing support for third-party extensions, which will allow developers to extend Review Board in new, exciting ways without having to modify Review Board itself. This is especially handy for companies who wish to integrate better with their sandboxes, bug trackers or unit testing services. This will likely land in 1.5 (2.0?) at the earliest, as it’s a large change, but the code for this mostly works today. It’s just a matter of getting the codebase ready and figuring out what APIs we want to stabilize and expose.

As I mentioned in the release announcement, we’re planning a release party, tentatively on July 11th, 2009, in the Bay Area (somewhere around Palo Alto, CA). If any Review Board users want to join us, please RSVP!

# Infect your application with Parasite!

Ever find yourself stuck debugging an application because the UI is just doing something weird that you can’t track down? Maybe a widget isn’t appearing correctly, or you just need more information about the overall structure and logging statements aren’t doing you much good. Debugging complex UIs can be a pain.

We’ve had some real challenges at VMware, due to the complexity of our applications. It was enough to drive me mad one day, so rather than write more logging statements, I wrote Parasite.

Parasite is a debugging tool that David Trowbridge and I have been working on to give developers an interactive view of their entire application’s UI. It provides a number of really useful features, including:

• See the entire widget hierarchy of your UI.
• Watch properties update live.
• Modify existing properties on a widget.
• View all registered GtkActions.
• Toggle GTK+’s debugging of graphic updates.
• Inject custom code while the application is running.

Yes, you can inject new code into an application. With Python. Parasite runs in-process as a GTK+ module, so it has access to some internals of your application. We provide a Python shell equipped with PyGTK support for creating and modifying your UI on-the-fly, regardless of the language it was written in. Handy when you want to test out new concepts for a UI without writing new C code.

David has a nice screencast available showing some of what Parasite can do.

For more information on Parasite, including screenshots, a mailing list, and where to get the source code, see the Parasite homepage.

# Review Board 1.0 alpha 1 released

Roughly two years ago, David Trowbridge and I began development of Review Board for use in our open source projects and our team at VMware. During that time, we’ve turned Review Board into a powerful code review tool that works with a variety of version control systems. Most of VMware has moved over to it, as have an estimated 50-100 companies world-wide. We’ve had over 100 contributors to the project, people providing volunteer support on the mailing list, and people have developed third party tools for integrating with Review Board.

After all this time in development, with this many people contributing, we decided it’s probably time to get a release out there. Sure, we could have done this a long time ago, but there’s a number of large things we were hoping to get in (a recently-committed UI rewrite, for instance). Now that we have most of the major features we want for our 1.0 release, we decided it was time for an alpha.

Over the coming months, we’ll be working on stabilizing the codebase, fixing a few large remaining usability quirks, enhancing performance, and writing some proper documentation (which is coming along nicely).

We’re eager to get a quality product out there and to begin development on the next release. There’s a lot of neat things planned:

• Support for writing extensions to Review Board.
• A fully-featured API covering every operation you’ll need to perform.
• Some degree of policy support (specifying which users/groups can see which parts of a repository, for instance).
• Reviews with statuses other than “Ship It”. This will probably be customizable to some degree.
• Possibly some theme customization to allow Review Board to blend in better with corporate sites, Trac installs, etc.

Along with this, I plan to roll out a new website for the project that will have a browseable list of third party extensions, apps, Greasemonkey scripts, and more.

# libnotify 0.4.5 and notification-daemon 0.4.0 released

It’s been a long time since I’ve really put out a libnotify or notification-daemon release. Review Board and VMware have taken up a lot of time the past year, so development has been slow, but I think these releases are worth it.

This is mostly a small bug fix release, but introduces support for associating a notification with a GtkStatusIcon. This allows for better position tracking when notification icons are jumping around.

This is a large feature and bug fix release. The major two features are multi-head support and a new control panel applet for specifying the notification theme and corner origin.

The multi-head support will show standard (non-positioned) notifications on the monitor the mouse is currently on. Previously, they would only appear on the primary head. This helps to notice new notifications, and fixes problems with some people who have a multi-head setup but only have one monitor on or in view. Also, notifications that appear on the edge of a monitor in a multi-head setup will no longer cross the monitor boundary, and will instead just stay on the correct monitor.

The new control panel applet makes it easy to switch notification themes or to specify which corner notifications should appear from. This will be expanded in the future.

As mentioned above with libnotify, notification-daemon can now track when status icons have moved so that the notifications are no longer in the wrong position during startup.

There’s a bunch of other nice little bug fixes that are mentioned in the release notes.

Thanks for the patience, everyone!

# VMware Workstation 6.5 released!

I wanted to come up with some witty introduction here, but after a year of hard work on Workstation 6.5, I’m just too tired to come up with anything.

Workstation 6.5 is the latest release yet of our Workstation product, and continues in the fine tradition of being an awesome program. It’s also the first version to introduce Unity, a feature I’ve spent a lot of time on and will be blogging about in more detail soon.

So why should you upgrade to Workstation 6.5? Well, if you’re a Workstation 6.0 user, it’s free, which is a pretty good incentive. It also comes with a bunch of new and improved features.

Unity

Unity is a feature I’m particularly proud of, because it’s pretty much the only thing I worked on for Workstation 6.5.

Unity breaks down the walls between the host computer and the virtual machine. With the click of a button, application windows from the VM pop out onto the host desktop, allowing you to put your host and guest applications side-by-side. If you’re a Linux user but you need to use Outlook for work, this feature will let you just simply run Outlook alongside your other windows.

Unity isn’t just a Workstation feature on Linux or Windows. The free Player product can also run your VMs in Unity!

Unity works best with Windows guests right now but does support Linux guests as well. Linux guests are more experimental and I strongly recommend using a recent version of Metacity in the guest. For Linux hosts, you’ll have best results with Compiz, Metacity or KDE.

It’s a complicated feature and, while not perfect, is still pretty great. I’ve written a little about it (see Working outside the box with Unity and Workstation 6.5 Beta 1 – Now with 100% more Unity!).

In the coming weeks, I plan to write a small series of blog entries about the development of this feature, including some of the complications involved and design decisions we made.

Record/Replay

Workstation 6.0 introduced Interrupt Record and Replay, a feature enabling users to record on the CPU level everything that’s happening for a range of time in a virtual machine for later playback. This is a powerful feature for development and debugging, as one can record a session during the testing of an application and forever capture that annoying 1-in-100 crash.

Workstation 6.5 improves upon this by providing a much more flexible UI with the ability to skip around a recording, adding checkpoints for quick navigation, and just generally bringing the feature into a more mature state.

Improved Linux Installer

One of the main grumble points that users (and ourselves) have had with past Workstation for Linux releases is that the installation process wasn’t very smooth, and the vmware-config.pl script had to be re-run after any kernel upgrade.

We’ve fixed these issues by providing a new GTK-based installer that walks the user through the installation process, and by handling kernel configuration (if needed) during Workstation startup. The days of running a shell script to get Workstation running are over. Finally.

Virtual Machine Streaming

Ever want to preview a downloadable virtual machine without having to grab the entire zip file or tarball? VMs can be quite big and it’s a pain to download one only to find out that it doesn’t meet your needs.

The new VM Streaming feature gives users the ability to point Player or Workstation to a remote VM (if provided in the proper format). It will then download the bits as needed, and allow users to pause or restart the stream. It’s important to note that this will be slow at first until it has enough data to smoothly run files off the disk. When finished with the VM, the user can choose to keep what they have, or delete the cached VM from disk.

3D Acceleration with DirectX 9

Our hard-working team of 3D Code Monkeys have been working to bring support for DirectX 9 in the guest, supporting up to Shader Model 2.0. This means many more games are now playable, including one of my favorites, Portal.

Easier VM Creation

We’ve revamped the New VM wizard to provide a more streamlined VM creation process, complete with our new Easy Install feature. Simply put your installation CD in the drive or point the wizard to your ISO file and it will automatically determine the guest OS and default settings.

And lots more…

That’s just scratching the surface. We’ve made plenty of other improvements, listed in our release notes.

Some of us developers will be providing some support in the forums, and if you have a Linux Unity question, feel free to contact me directly.

Love,

Christian

# Workstation 6.5 Beta 1 – Now with 100% more Unity!

I talked a little while ago about working outside the box with Unity. At that time I gave a sneak peak into what I’ve been working here at VMware the past few months. Well, now everyone can see.

We just announced VMware Workstation 6.5 beta 1, the first public beta for Workstation 6.5. Among many other awesome features is Unity, a feature we introduced in our Fusion product (for MacOS X) which allows you to run your applications from your virtual machine on your desktop without needing to be confined to a big box representing the VM’s monitor.

Unity is available in both our Linux and Windows releases of Workstation 6.5 beta 1, and there’s currently support for Windows guests (Windows 2000 and up). However, it’s a beta so you can expect some problems. To help people get started, here’s a rundown on what you can expect from Unity in beta 1.

Features Overview:

• Shaped windows
• Guest mouse cursors
• Proper window types for most windows (Menu, Dialog, Tooltip, etc.)
• Special effects with Compiz
• Virtual desktops
• Copy and paste between host and guest

Seamless window integration

With the press of a button, the applications in your virtual machine will pop out and appear on your desktop, intermixed with all your native applications. These windows can stack in any order along with your native windows and will maximize, minimize, and close as you’d expect any normal window to. They’ll appear just like they would in the guest, aside from any borders or badges you have set to help identify the guest windows (more on that in a minute).

We do our best to set the window types on these windows to best reflect their type in the guest. This means that a tooltip from the guest will look and act like a tooltip in the host, as will a dialog, menu, etc. This is important for supporting the special effects provided by a window manager.

Special effects

If your window manager has any special effects set for the windows, they’ll apply to guest windows. For example, users of Compiz will be glad to know that their wobbly windows will work for such applications as Office 2008 or Minesweeper, and your guest menus will still burst into flames when they appear.

There are a few cases where the effect isn’t as strong as with native windows. Due to the way we receive window updates and events, the display of a window will often update before we receive open, close or minimize events. We plan to make this work better for some event types in the next beta, but for now, I recommend choosing special effects that modify a window in-place (fire, fade-in, etc.) instead of one that zooms a window to a location for opening/closing windows.

Virtual desktops

Windows may not natively have virtual desktop support, but Linux does, so we felt it was important to make virtual desktops with Unity just work. You can place your guest applications across your virtual desktops. Maximize Office on one desktop, play a game of Solitaire on another, and reserve a third for your Internet Explorer debugging session.

Copy and paste

Copy and paste is an important part of any user’s daily work. We currently have support for copying and pasting text between host and guest. You can’t yet copy and paste images or other data, though.

A desktop environment isn’t useful without the ability to get to your programs. We provide a little tool called Unity Helper that runs automatically and provides start menu integration. Simply move your mouse to the top-left corner of your primary monitor and the menu will pop down, providing a start button for each of your VMs in Unity. Click the button and your start menu’s contents will appear.

The start button will match the color of the Unity badges and borders that are set to help you quickly identify your VM.

This functionality is pretty new so there are some kinks to work out. For example, if you don’t have a top panel or your top panel is larger than 24 pixels, you might notice the window in a wrong location. This is a bug that will be fixed in beta 2. We’re also hoping to add more options for the location of this window.

Another useful tip is that you can use Unity Helper to launch applications in a guest via the panel or command line. Simply run:

 $vmware-unity-helper --run /path/to/vm.vmx c:\path\to\program.exe arguments  This only works if your VM is currently powered on and in Unity or if the VM is not open anywhere. It’s not a supported feature at this point. Borders and badges In order to help identify a window belonging to a particular VM, we have color-coded badges and borders on the Unity windows. The border goes around the window and fades from corner to corner, and the badge is a little VMware logo sitting on your titlebar. Both are purely decorative and optional. You can turn them on or off in VM Settings or change the color. The color will also match the start button. Known bugs (and workarounds) As with any beta, there are of course bugs that you may hit. Pay special attention to the first item on the list. • Start menu problems after a crash. If there’s a crash, sometimes the start menu integration won’t work the next session. The trick is to exit Workstation (leave the VM running in the background), delete /tmp/vmware-$USER/unity-helper-ipc-*, and bring Workstation back up.
• Occasionally Unity may crash. This is a known bug when a guest window changes its type when we don’t expect it. If you hit this, don’t worry! Your VM is still running in the background. Just re-launch Workstation or Player and go back into Unity mode.
• Graphics glitches. Sometimes you’ll notice the background appearing when you close or minimize a window. We hope to fix this up for the next beta.
• Multiple monitors are not supported in beta 1.
• Drag and drop is not supported in beta 1.
• Due to a recent regression just before beta 1, there are graphical glitches for applications not on the current desktop.
• Some applications behave badly. Photoshop and Flash (the creation program, not the plugin) (ab)use windows all over the place, and so you’ll see windows where you wouldn’t expect them. Sometimes they don’t even get proper updates, making the UI unusable. We’re looking into solutions for this.

There’s more, but those are the main ones I can think of that people may hit.

Give it a try and feel free to report bugs in the user forums.