Software Virtualisation - ending DLL Hell once and for all
I saw a demo of this the other day at one of the keynotes - but hadn't quite got my head around it (wasn't entirely sure I understood what was going on) - I do now (I think?).
The presenter recons this is the hottest thing to happen to desktops in the last 10 years.
So you can virtualise things like Storage (SANs) and Hardware (Virtual Server/PC) - this was about virtualising applications.
Obviously the issues are around 'DLL Hell' for older legacy applications (that needed their own version of a Windows system DLL) and other application conflicts (like same file extensions, shortcuts, ini files, services, etc) for the newer 'well behaved' applications.
Current sollutions from Microsoft are the Windows Installer service and Terminal Services in Windows Server.
The Windows Installer 'owns' the software lifecycle (as in: purchase, implementation, production & maintenance and finaly retirement) - it solves a lot of problems. Windows XP allows side-by-side DLLs, but only for apps that use the MSI installer packages. Applications that don't can still get messed up because of the Windows System File Protetction service (they'll install their DLL into the Windows directories & Windows will put the 'correct' version back again) - very good for Windows stability, but bad for the app.
Terminal Services seems to offer a solution, but all you're really doing is reducing the number of places for things to go wrong. Apps still need to use the Windows Installer.
Enter 3rd Parties. There's two offerings: Streaming Software Virtualisation and Local Software Virtualisation.
Streaming Software Virtualisation is currently offered by Softricity (Softricity SoftGrid System). Citrix are working on something in this space (project tarpon). Basically, this method virtualises the File System, the Registry, Fonts, INI files, Com objects, etc for each application (it creates a 'sandbox' for each app). The apps are packaged up and put on a server. When the user initiates the app, only what is needed to run the app comes over the wire (Office is over 500Mb - to run Word takes 9Mb and less than 10 seconds). Nothing gets installed on the PC, but the app does get cached for speedier application initialisation. Users can request an offline license. As functions of the application are invoked (i.e spellcheck) just that function is streamed over the network. The package then is defining how the application runs, rather than how it is installed. You can't run the application unless you have a license (so License management is easy). Overall a very impressive solution, but expensive - a SoftGrid client is needed on every PC and all aplications need to be re-packaged into this format.
Local Software Virtualisation is currently offered by Altiris (Software Virtualisation Solution - SVS) this has a very different approach. SVS virtualises every component of the PC and uses a very light filter driver to map real system resources to virtual ones. Applications have to be re-packaged into their format and can be deployed as a single file (MSI packages can be 'wrapped' and used). The application package can then be deployed simply by copying the file down to the PC. Once there, it can be activated, deactivated and reset (goes back to the installation state). This virtualisation method is invisible to the user, to the application and to the operating system - which kind of means that you'd never need to retest an application if you were to patch the operating system. This approach is a lot cheaper than the streaming method, but you don't get the centralised control.
So, Microsoft don't play in the Application Virtualisation space at the moment (well, Internet Explorer in Windows Vista runs in it's own sandbox), but I would bet money (if I had any) that we will soon...