The story came up on Microsoft Watch, that Longhorn has a dirty little secret—that it won't be built on managed code. This has been talked about all over the blogosphere and caused quite a stir in Joel’s discussion forum.
References were made to Paul Thurott’s insider report that
- Longhorn underwent another “reset” after Windows XP SP2 shipped last summer, reverting to the Windows XP codebase. As a result, Longhorn build numbers jumped from 4000 series to the 5000, which suggest that the Longhorn codebase survived a total of four resets.
- The Longhorn shell (Aero) is reportedly fully or partially based on unmanaged code.
I think fundamentally little has changed. Virtually, most managed APIs that Microsoft has shipped have always had both a managed and unmanaged component.
I suspect that after the reset, the shell was rebuilt on top of the existing unmanaged explorer codebase, instead of being completely rewritten—the benefit of this being less testing risk, less performance risk, and a closer ship date. The original Longhorn shell was probably not far advanced, since it was based on early unstable Avalon code. The new shell windows demoed at WinHEC are clearly using Avalon, so there appears to be some interop between managed and unmanaged code. Thus, the shell is running mixed code—this, by the way, is the most sensible strategy. When a product is headed out of control, one should cut back (eg, sidebar) and work from a stable base.
Jim Allchin had publicly stated that since Windows XP shipped in 18 months, that Longhorn, which already has been years in development, should be able to as well, and a public relations disaster would ensue if Longhorn misses the 2006 deadline as well.
I also don’t think of the shell as much of an API. So, it’s a stretch to say that just because the shell is becoming less managed, that Longhorn as a whole won’t be based on .NET.
There were hardly any additions to the Win32 API set after the PDC; I suspect that this hasn’t changed. There are dozens of libraries from all over Microsoft, being contributed to Longhorn, and I bet almost all of them are managed—some, particularly those heavily object-oriented, probably don’t have an unmanaged equivalent. One already sees this in current Tablet PC, DirectX and Speech SDKs.
Jim Allchin did mention upcoming UX controls in a recent interview (Channel 9?), the first time that I have heard of them. He spoke of UX controls alongside WinFX, as if they were separate from WinFX so it’s possibly unmanaged. I am guessing it is set of new special-purpose controls (built using Avalon), with additional unmanaged wrappers. I certainly do NOT see Microsoft expending effort building these controls with GDI+, when a richer, hardware-accelerated presentation framework is already available.