An interesting “philosophical” question was posed recently that I just noticed over this past weekend – why not include Visual Studio 2005 (such as the already free Express Editions) as a part of Windows Vista? The idea was first suggested in this blog post at the end of June. Then, last week, Dan Fernandez (the lead product manager for the Visual Studio Express product line) posted a response to the original suggestion on his blog. Then, this blog exchange got picked up and published as an eWeek article.
I wanted to talk a bit more about one of the bullet points that Dan posted in his blog response. His 2nd bullet point reads as follows:
Setup: Dropping bits on a CD is an easy task, but creating a way to service those bits (and every piece of the Windows OS is serviceable) is not straightforward. Without getting into the weeds of why this is, the short answer is that Windows have a wholly different setup (and therefore servicing model) than Visual Studio does. Servicing would basically be *way* too much work for the benefit. If, however, the setup/installer technologies were unified, this would be much easier.
This is something that has proven challenging ever since we included the .NET Framework 1.1 as a part of the OS in Windows Server 2003. As Dan stated in his post, the underlying installation engine for OS setup is not the same as the engine used to install applications. Applications such as Visual Studio are packaged as MSIs and installed by Windows Installer. As a result, MSP patches must be produced to patch those MSI setup packages and install hotfixes and service packs. OS components are installed by the OS installation engine (sysocmgr and the OCM infrastructure in pre-Windows Vista system and a series of new technologies in Windows Vista). They have their own requirements for creating hotfix and service pack packages that are different from the Windows Installer MSP format.
Because of these differences, each time a product is released that packaged as both an MSI and an OS component, the teams have to create, test and release 2 separate patch packages. In the case of the .NET Framework 1.1, there was significant work to create an additional hotfix package to target Windows Server 2003 in addition to the MSP that targets other operating systems.
However, in the case of the Visual Studio Express Editions, that requires an even larger investment because there are 5 different Express Editions (Visual Basic, Visual C++, Visual C#, Visual J# and Visual Web Developer) and 9 different language versions. That means that if the Express Editions were to be repackaged and included in Windows Vista OS setup, there would need to be 45 additional patch packages produced each time there is a hotfix or service pack that targets this product line. Even with build and test automation and other economies of scale, that is an expensive proposition.
In the future, I hope to see the OS installation engine and application installation engine converge so that a setup package can be authored once and installed and serviced the same way no matter what the installation vehicle is. However, until something like that happens, this sort of complication makes it more difficult for setup developers and people who deploy software to architect agile solutions.