Silverlight: The Rumors of My Death Have Been Greatly Exaggerated!
Update 3: Things are very interesting. Look for a "what we know" post over the next few days.
Update 2: Thanks to MyDigitalLife forum user NaiveUser we have hard evidence that XAML is indeed supported through DirectUI. Also with his process explorer dump it looks like GDI and User are still around.
Update: According to "Ricky" who identifies himself as a Microsoft Employee. WPF doesn't rely on DWM. It uses DirectX natively. Performance issues aren't caused from User/GDI limitations but more resource issues when rendering a large number of items on screen. That does not invalidate the rest of the discussion...just a minor flub or two on my part.
So the Net is all abuzz about the freshly unveiled “Windows 8” and it’s impact on the Microsoft developer ecosystem. A lot of people feel that the fact that Silverlight, WPF, and .NET weren’t mentioned in the demo implied they wouldn’t be supported. I must admit that was my first knee-jerk reaction as well. Let’s take a step back for a second and analyze what’s going on.
Windows 8 Immersive UI has been shown to support HTML5 + JS for writing apps. But here’s the kicker…Microsoft doesn’t control the HTML5 standard. There is no way they are going to have their premiere platform limited by an external standard. They’ve already gone through that with Java in the late 90s. “Embrace and Extend” just doesn’t cut it today. So naturally there HAS to be another framework for developing against Windows 8. Make no mistake, the “classic desktop” is essentially the equivalent of Mac OS X support for legacy apps, the only thing that Windows 8 spells death for is User and GDI. If you look closely at the demo, the Classic shell is a Window within MoSH. If you are developing against frameworks targeting them, then it’s time to upgrade your skills.
HTML5 + JS is an interesting combination. HTML5 is markup, JavaScript is code. Applications = Code + Markup get my drift? By teaching us XAML and having us focus on declarative UIs, Microsoft is now free to swap out the how because our code only says “what we want”. If anything, the only people who should be worried are those still using Windows Forms for development.
Microsoft has been trying to make this break for quite a while. Did you know that the IE Engine, Trident, was originally designed to be a replacement for GDI/User? Microsoft was attempting to provide a declarative UI platform for Windows since Windows 95. The problem back then was performance. They could not get the horsepower needed to render the full desktop and all the applications at a suitable speed under Trident. So they backed off. However, we got the remnants of the effort in IE3 and the Active Desktop. Remember when Microsoft said in their anti-trust suit that IE was a core part of Windows. They weren’t lying. Trident shipped with Windows 95 Desktop Update and Windows 98 not as a gimmick but because there was so much written in the OS that leveraged it, stripping it out would have involved a lot of rewriting.
Fast forward to Longhorn. Again, Microsoft was attempting to bring a declarative UI layer to Windows core. From that effort we got the DWM and WPF (which sits atop DWM). They stopped short of fully stripping out User and GDI, but they telegraphed their punch so to speak. With Silverlight, and Windows Phone 7, Microsoft took off the glove. You get XAML and the .NET framework that they allow. No Windows Forms, no GDI, no User unless you break out of the sandbox and perform all kinds of obscene acts. Effectively the past 5 years has served to wean developers off what came before and start learning the future of Windows development.
There are still performance issues in WPF…there are performance issues in Silverlight on Windows Phone. This is because when you go far enough down it’s not turtles all the way. It’s still the same old stuff that Windows has been hobbled with since version 1. User and GDI.
Until now. Windows 8 introduces DirectUI. And with Direct UI the gauntlet has been thrown down. It’s time to stop doing things in code and on the processor that the GPU is best equipped to handle. It’s time to learn how to tell the framework what we want it to do instead of telling it how to do it. It’s time to realize that whether it’s called Silverlight, WPF, Jupiter, or Uranus, the future of Windows Client development is declarative. HTML just happens to fit the model…but XAML was born to do it.
