When the news got out that Windows 7 would get a “Classic”-like virtual environment for running Windows XP applications that would otherwise not run on Windows 7, we hoped it would mark the beginning of Microsoft moving backwards compatibility into a VM. This would then allow them to cut major cruft out of the operating system. However, with more and more information trickling out about Windows XP Mode, it becomes more and more clear this new feature has little to do with cutting backwards compatibility (as I already said when we covered this subject during our latest podcast). Update: Paul Thurrot states you can install other operating systems into Windows XP Mode’s virtual machine as well. This is a great selling point for us enthusiasts.
Jammer, maar helaas
Microsoft has published several blog entries and press releases about Windows XP Mode, and in each and every one of them, the company is accentuating that Windows XP Mode is targeted towards small businesses, to help them move from Windows XP to Windows 7. For larger companies, Microsoft advocates Enterprise Desktop Virtualization 2.0 (MED-V). There is no indication that XPM is a first step in a push towards moving all backwards compatibility in Windows towards a VM.
Of course, sharp folk had already realised this by looking at who would get Windows XP Mode for free: users of Windows 7 Professional and up. If XPM had really been the future of Windows’ backwards compatibility across the board, everyone would be able to download it.
So, it seems that our initial enthusiasm has been a bit, well, premature. I guess all the excitement about XPM on OSNews and other parts of the web illustrates all the more the longing there is among Windows users towards a world where backwards compatibility does not hold back Windows’ development. It would be great if Microsoft made a clear statement about this subject.
How XPM works
A lot of information on how Windows XP Mode works has also made it to the web. For instance, Rafael Rivera explained how the application publishing (the “coherence” or “unity” technology of XPM) works. It makes use of some key RDP technologies: Remote Applications and Application Publishing. The basic gist of the story is that these technologies normally allow you to install applications on client machines (complete with file type associations and shortcuts), but have them run on a server machine in the network.
XPM allows you to do the same, but then with the virtual XP machine acting as the server, and the Windows 7 host as the client. Some additional services within the XP virtual machine monitor the “All users” Start menu, and pushes those applications down to the host Windows 7 machine.
Currently, XPM does hit a limitation thanks to Terminal Server licensing. “Only one user or channel can be open at any given time,” Rivera explains, “This means you cannot execute Internet Explorer 6 while running maintenance tasks within the virtual machine, like installing updates from Windows Update.” There are tricks to get around this one, though.
It sort of sounds like Microsoft invented a swiss army knife, but only wanted people to use the tweezers. Now that the public has discovered all of the other uses, they’re continuing to emphasize the tweezer’s usefullness. Worse, with the concurrent user cap, its like they’re soldering the rest of the tools into the body to prevent their use.
If only the decision makers would realize they built a tool that could save the company’s life! With the eventual arrival of Midori ( a non win32 managed code Kernel), they need a way of maintaining backwards compatibility while encouraging adoption & development in the new api & methodology. This would be perfect for that.
Sort of reminds me of Intel’s posturing when it was revealed that they were working on a 64 bit x86 chip that they said would have limited usefulness, but still claiming that Itanium was the future for everyone.
The Rafael Rivera link is pointing to a page on HP’s online store.
Fixed, thanks!
Has anyone wondered if this impacts W7’s performance? I am not sure how it works but if there is some type of service for XPM which is constantly running, how much memory will it consume and how much processing power will it require? Will it slow down W7? How well will the XP programs run (performance wise)?
Just some stuff to think about…
Edited 2009-04-29 23:00 UTC
if you have 2+ gigs of ram and a processor that has built in virtualization, you don’t even notice that you are virtualizing things. its pretty seamless (though poor FPS on game released in the last 3 years) . it obviously wasn’t meant for gaming but you can run games in it that are over 3 years with decent graphics and frame rate… i got off topic
does it bog down windows 7? No, not really. your average user won’t know the difference in a corporate environment.
It won’t impact on the memory usage given that all services included with Windows are how trigger based; in other words, unless it is required – it doesn’t load. So if they do want to run XPM, the services will load as the feature loads and unload once the user has quite – that is how they were able to slim down the memory requirements.
http://channel9.msdn.com/shows/Going+Deep/Chittur-Subbaraman-Inside…
So Microsoft are finally moving away from the ‘load everything at start up in an effort to cheat benchmarking tests’ philosophy then?
Vista was a fracking nightmare to reboot.
Edited 2009-04-30 08:51 UTC
That is prefetching, which is different then service start type.
I believe windows 7 prefetching strategy is a lot less aggressive then vista, although i don’t really have any proof other then that the disc doesn’t thrash like mad at boot time.
I’m disappointed that Microsoft hasn’t bothered giving this to all users as a way of running older applications.
Would it really be that harmful for them to give a license for their older version of Windows as a virtual machine for people who buy new versions of Windows? It might seriously change the perceptions of techie users if they gave this with regular versions of Windows.
Both users and Microsoft felt the pain of removing backwards compatability with Vista, so why not provide the tools for everyone to use some level of virtualisation to run older versions of Windows? They can’t provide backwards compatability forever, yet there will always be older applications which people want to run.
They should take advantage of virtualisation instead of restricting it. I can run Linux freely in virtual machines on my Windows host, but not Windows due to licensing. Seems like an ideal way to annoy and lose customers who want to play around with virtualisation.
Remember, it’s Microsoft we’re talking about. Their primary customers are businesses, not individual consumers. They really couldn’t care less what works best for individual users, and they know that businesses will pay extra to have features that, when you come right down to it, everybody should have. It really wouldn’t hurt their bottom line to give away a license for XP, especially seeing as how they’re no longer selling it.
Remember, this is a company that wants to force Windows 7 Starter on netbooks, a company that prides itself on artificial limitations to force upgrades. Why would this virtualization feature be any different?
Your comment is pretty much spot-on, but this one line isn’t correct. There has been no word from Microsoft yet whether or not Starter will make it onto netbooks in the western world. Honestly, I do not think it will.
http://www.osnews.com/story/21206/Full_Windows_7_Possible_on_Samsun…
Whether Microsoft is planning to force Starter into the western market or not, it doesn’t change the fact that they are currently planning to offer OEMs a deal on Starter in an attempt to get it entrenched on netbooks. Clearly, they would like to push Starter where netbooks are concerned, whether they ultimately succeed in doing so will likely be another matter entirely.
Edited 2009-04-30 10:20 UTC
I will be very interested indeed in the decision on this from Microsoft.
If they don’t mandate Starter on netbooks, and they want to make money on the sale of Windows 7, then a Windows 7 netbook will necessarily cost a lot more than a Linux netbook on the same hardware, and a hell of a lot more than a Linux netbook with ARM hardware.
If Microsoft do mandate Starter on netbooks, then they will be tarred with the image of the “golden screwdriver” scenario that undid IBM’s market position before them.
http://findarticles.com/p/articles/mi_m0EKF/is_n1996_v40/ai_1502696…
I see little point to this at all. All that this will be used for is a way for businesses to continue to get Windows XP licenses on new PCs. Windows 7 is likely to get wiped as soon as they get it. It might actually get a copy of Windows 7 into their hands but it’s not going to make them want to upgrade.
The problem and the reasons for people wanting to stay with XP are elsewhere. It is proof positive to me that absolutely no one is interested in creating Vista or Windows 7 applications with all the lovely new APIs because none of it works on XP. As I’ve said about destop Linux, if there are no applications for your current installed base and no one is interested in creating them because there is no installed base for your platform then no one is interested. As such, no one has any reason to upgrade or switch. That applies equally to Microsoft and Windows. It’s not a problem of backwards compatibility, it’s forwards compatibility.
Raymond Chen can’t possibly be impressed. Microsoft continues to lose the API war, a lot to web applications but mostly with itself.
Edited 2009-04-30 11:55 UTC
Run wine on cygwin or minGW.
Maybe someone should make a binary of this?
I spent a few seconds puzzling out the headline before reading the summary and realizing that this must be referring to XP Mode and not X PixMaps. Can we avoid making new acronyms that intersect well known ones in the same field? We could call it XP Emulation or Vista XP, or something.
Why should they do it? What is it that has fundamentally changed about a program’s environment since NT 4.0? AFAIK the memory model is the same (certainly for 32-bit kernels, but also for 64-bit kernels there is no penalty for running a 32-bit application), system calls are done in the same way (by calling a DLL), the security model is still the same except for minor tweaks, the filesystem interface is still the same. What fundamental change has there been which justifies breaking backwards compatibility for applications? Transparent windows??
The answer is – there has been none. There is absolutely no penalty (yeah, maybe 10MB) for keeping old DLLs implementing deprecated APIs. Heck, Windows XP (which is often referred to as the ‘least pathetic Windows to date’) had multiple sets of DLLs for Win95/98/Me/2000 compatibility.
There is no point for MS to break compatibility. They need people to maintain old code? Well, by keeping backwards compatibility they get a lot more USD than they spend on maintainers.
As a side note – there is also a lot of ‘forwards compatibility’ in Windows. E.g. fairly recently you could run Firefox on Windows NT 3.51 (1995!). Compare this to any other OS. This says that MS must have done something right in the early nineties and their current dominance is not down to pure luck.
Winodws backward comparability actually uses up quite a huge size to store. The folder is in the Windows directory named winsxs. This is used to store old dll’s in case a program requires the use of one that is incompatible with the newer version provided by the OS. Depending upon the number of applications and such that are installed, the winsxs folder can grow to a very sizable amount, much larger than a base stripped down XP. Essentially it will hold just about any and every version of a dll that it can, with the result that the folder can grow unchecked. Many have found that after setting up Vista, their free space could go from 10 to 5 GBs in a snap. This is also something that is unchecked, and will continue to grow like a tree.
I would much rather have some VM component to run that one rare app that simply can not run in a new OS. Ironically I might add that I always found it amusing that several old Win9x games that would not work under XP, ran just fine in Vista…go figure.
WinSXS is there to deal with a specific problem in a reliable manner, that there is no way to deal with multiple versions of the same dll. Pre xp, applications would often just overwrite dlls, causing other applications to crash. WinSXS is actually a big part of the reason that xp is significantly more stable then 9x.
Believe it or not, the winsxs folder in vista is often smaller then in xp, even though explorer and dir will tell you it is 10-15gigs. It is because the new system uses hard links, and each link is added to the total size in the counts from the shell.
In general, winsxs is not for compatibility between different versions of windows, but for compatibility between applications built on the same version of windows but linked against different versions of the same dlls.
The problem with dlls is one that can’t be solved until everyone is using .net for everything. a .net assembly can be put in the GAC (global assembly cache), and referenced by any combination of name, version number, or hash. That effectively solves the winsxs problem, if you want to reference the latest version, a specific revision, or specific file you can.
What most people complain about is the “shim” system. There is a level of indirection in all api calls that allows for additional code to be “injected”, causing the API to behave in a different way, in order to emulate the behavior of previous versions. So for example, writing to a registry key in a place you aren’t supposed to may get redirected to a special part of the registry where you are allowed to write to. This allows apps that would normally have to be changed to work on newer versions of windows to still work without those changes. MS themselves have a huge database of shims to apply to common apps transparently, and allow end users to apply specific “collections” of shims through the compatibility tab of the properties dialog to emulate a previous APIs behavior.
It is actually a pretty cool system, but it has its downsides. Specifically, you can end up with an application behaving in ways it shouldn’t, which is a huge pain to debug. Using the previous example, lets say it writes to a registry key, and that gets redirected somewhere else. The value that got written needs to be adjusted for some reason, so after reading the docs you go looking for it in regedit. Turns out it isn’t there, even though the app thinks its there. Another example is editing a text file that is protected. You save your changes, are able to load up the file and see your changes, but the file you are seeing is not what the system sees.
Sorry for the long post, but this is something almost nobody understands, but everyone talks about.
Actually, Vista’s WinSxS folder has a dual role as the component-based installer data store. When you add or remove a Windows feature, the files come from the winsxs directory through a process called “projection.” Projection involves the creation of hard links or copying of the file out to the active windows\* directory.
The files remain in the winsxs directory so that they can be patched and serviced so when you do decide that you want to use some feature that was previously disabled, it’s already ready to go and up to the latest patch level. Also, this avoids having to show people the “please insert (long lost) Windows XP CD to install this feature.”
Well, yer. The Win32 API has largely remained stable for that time, you can always ship the libraries you need with your application and Microsoft has always supported that. That’s not the case with Vista and 7. You’re not going to be able to buy into the new libraries and development model unless you give up all the people on XP. No application developer is stupid enough to do that which is why Vista and 7 are really stillborne.
I have games nearly ten years old that still run on Linux as well as Motif applications from even earlier. So what else is new?
“This means you cannot execute Internet Explorer 6 while running maintenance tasks within the virtual machine, like installing updates from Windows Update.”
I wouldn’t want to run Internet Explorer 6 regardless 😉
Tip to business users: why pay to run Windows XP inside of another windows if you can do the same running windows xp inside a virtual machine on a linux host and having a more secure and lighter solution ?
Because the majority of businesses are already locked into Microsoft, and have paid a fortune in support contracts. I’d further guess that Microsoft’s next step is to withdraw support for Windows XP unless it is running under one of their approved virtualization solutions, further locking in its customers.