How do you fix Windows? We’ve all surely encountered the blue-screen of death one too many times, and also gnashed our teeth because of DLL incompatibilities (a.k.a DLL-Hell). These can be attributed to perhaps bad programming on the application side, but it can also be attributed to how the Operating System (OS) handles (or yields to) Application Programming Interface (API) calls. The API that has been the mainstay of Windows is called Windows 32-bit (Win32), the crown jewel of Microsoft’s desktop dominance. Win32 has ensured that most modern Windows applications run from one version to the next. This very feature has introduced the problems we’ve sighted. So how do you fix this? Enter the Microsoft .NET framework.
I’ve worked on the .NET framework on several occasions and I think it’s a great framework. Microsoft has clearly spent time developing it, especially with C# which was designed by one of the brightest developers ever Anders Hejlsberg (the same dude who made Turbo Pascal – ah what a programming tool). The .NET framework is very much like a virtual machine that allows it to take more control of applications. Applications can be written in different programming languages such as C#, Visual Basic.NET and Jscript among others. They are then compiled into a bytecode that .NET executes. There is only one set of libraries for all these programming languages, and all compiled bytecodes are executed by the same virtual machine. Applications that run inside this virtual machine are called “Managed applications”. This is supposedly designed to fix the blue-screen of death caused by DLL-Hell and Memory Leaks. This is the future of Windows desktop applications. It’s a great solution to the current quagmire that haunts the Win32 API.
Microsoft had to go this approach because they can’t just break away from the Win32 API, which is the holy grail of Windows. They can’t break backward compatibility, and they have gone too much out of their way to make sure most applications run from one Windows version to the next (check out the SimCity example for Win95). This is the very reason why Microsoft system engineers can’t totally fix Windows, even though they know what went wrong, and if they had to do it again, they would have done better. That’s where .NET comes in; it’s supposed to slowly replace Win32 and all those programs that access the system resources directly. With .NET they can move the framework from one OS version (Win2000) to the next (WinXP) seamlessly, and going further it allows it to move to a different OS as well (this is already being done outside of Microsoft with the Mono open source project http://www.mono-project.com/Main_Page).
So when I was browsing through News.com and saw this article about another Microsoft OS that was written from the ground-up named Singularity, it struck me. Microsoft’s Research and Development group has been developing Singularity using .NET (and some new programming language based on C#) that is supposedly more stable and faster. I think Microsoft’s direction is to eventually get rid of the legacy Win32 API and move Windows to Singularity. It clearly makes sense, if .NET adoption continues and more and more applications are written on .NET, it would then be easier to ease into the new operating system, and Microsoft can maintain the desktop application dominance. With Microsoft’s purchase of Connectix and its product Virtual PC, it will also allow Microsoft to include virtualization software for Win32 applications as it moves along.
Microsoft’s dominance has always been the widespread adoption of the Win32, its cash cows depend on it (Windows OS and the Office Suite), but the API is already showing it’s age. With this two technology products, Microsoft doesn’t seem like it’s going to bet it’s future on Win32 running the show for the next 20 years.
http://research.microsoft.com/os/singularity/