It all started with statement Bob Muglia, Microsoft president in charge of server and tools business. This was part of the statement:
Silverlight is our development platform for Windows Phone. Silverlight also has some “sweet spots” in media and line-of-business applications.
But when it comes to touting Silverlight as Microsoft’s vehicle for delivering a cross-platform runtime, “our strategy has shifted.”
Silverlight will continue to be a cross-platform solution, working on a variety of operating system/browser platforms, going forward, but HTML is the only true cross platform solution for everything, including (Apple’s) iOS platform.
Also, on PDC 2010 the WPF received paltry 35 minutes presentation which spent only 10 minutes on new WPF functionality.
Then earlier this week Evernote which has huge user base switched whole app from WPF to C++. Here is what they said:
…there were some problems we simply couldn’t fix: the blurry fonts, slow startup times, large memory footprint, and poor support for certain graphics cards were all issues that the technology behind 3.5 (Windows .net and WPF) was incapable of resolving. As a result, we ended up chasing down platform bugs rather than adding the great features our users wanted. So we decided to start over from scratch, with fast, native C++ that we knew we could rely on. As you’ll see, the results are amazing. This new version will set a foundation for rapid improvement.
It is for sure, radical departure. I think they could have used WinForms at least and have best of all worlds, but I suspect they experienced lot of pain…
So is Silverlight dead?
If you step back and look at the Microsoft latest message shift, now saying that Silverlight’s primary focus is as a platform for Windows Phone 7 what does that actually mean? Would they say this if Silverlight was widely adopted or at least adopted in line with their expectations and used in web applications? (Keep in mind that they know the best how much Silverlight is actually used.) I don’t think they would change Silverlight message at all if that were the case. Which means that while Silverlight is very nice it simply did not get adopted for web applications in large numbers that were expected. But that does not mean it is dead, it is probably more important than ever. But important for something other than it was envisioned for. Important for Windows Phone 7, the latest battleground.
Is WPF dead?
Short answer is, it is not, unless they are cooking new technology we don’t know about. And my money is on that they have nothing so it will be here for couple of years at least which is as much as you can say about any technology…
But WPF is used in VS.NET 2010, I hear you say, that’s good, right? They give it and they can take it away… Things change.
I can tell you that WinForms will be around as long as Windows OS itself works with HWND which it will be for pretty much very long time…
There are and were some badly needed improvements to WPF that took 5 years to implement. For example when 4 years ago I complained about blurry fonts in WPF I’ve been told that they don’t see it. Fonts are fine… I guess they were not fine when they started actually using them so they finally fixed them in WPF 4 and now they started to look acceptable.
It also did not help that they were busy developing ton of new controls for Silverlight and WPF thinking that will spur adoption, but alas it did not help and in my opinion it took focus away from the actual platform. But why not?
Good house is built on good foundation
Developer division in MS is about providing killer platforms so ecosystem can grow around them. They just can’t do it all themselves and they don’t need to.
Instead of making WPF, as platform, super usable with best font rendering, best debugging capabilities XAML and code, best XAML visual editors, best startup speeds, they spend years on other things that are built on top of the platform.
In essence they were trying to build second floor for the house with unfinished foundation… It does not work that way.
When WinForms came out it was clearly better technology than Visual Basic 6. You could do more and you had all tooling support in VS.NET you needed. Debugging worked, visual designer worked. You had all what you liked in VB 6 and more. No wonder we all jumped on it like crazy. It was clearly better.
When WPF came out it was not really better than WinForms. Yes, it had more powerful graphics stack, you can do neat animations, but font rendering was horrendous, it was slow to start-up, it required yet another steep learning curve and VS.NET tooling was crude. So moving to it from WinForms unless you really needed those powerful graphics, and most business apps do not, was step backwards. So most people kept on using WinForms. And they still do! We sell 5 times more WinForms controls than WPF and Silverlight combined. Market voted!
I beleive this can be turned around by getting back to basics. And that is the platform! Make platform the best platform for developing client apps and let your ecosystem do its work. Here is what to do:
- Speed up start-up times. If WPF or Sivlerlight out-of-browser app does not start at least with same speed, if not faster, than WinForms then your platform work is not done!
- Even better font rendering. You look at text rendered by WPF and text in Windows 7. See any difference? Your platform work is not done!
- XAML and code debugging. If there is a bug in XAML and debugger does not break on exact line in XAML which is a problem and it tells you what the problem is, your platform work is not done! If I need voodoo to debug Binding is Silverlight and WPF your platform work is not done!
- XAML User Interface Editor. If you have dedicated XAML code editor window in VS.NET visible by default your platform work is not done! If I need XAML code editor at all, your platform work is not done!
If this platform strategy was in place 4 years ago every single item on this list could have been covered. Do you think we would be talking about death of WPF or Silverlight today?
It is still not too late to get to platform basics. But it has to happen fast!
For DevComponents I can say that while most of our competitors stopped developing new stuff for WinForms we increased our investment there. WinForms will be around as long as HWND is around and that is for mighty long time. We hedge on Silverlight and WPF too with continued investment to make best controls we can make. There is nobody that provides better controls and more value for both Silverlight and WPF than us. I just wish we all could be more certain about both.
What do you think? What tech are you going to choose?