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.
Lot of people took this as declaration of death for Silverlight. Well, at least for being used to build web applications.
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.
However, if you have ever developed web app with JavaScript and HTML you know how painful that is. Silverlight does make things much easier, much more productive so why the heck it is not used more? Its platform that it could be easier to develop for and I’ll cover that later. Read on.
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!
Way forward
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?
Hi Denis,
The reality is that MS made everything wrong last 5-6 years, not only WPF and Silverlight. It is ridiculous to introduce new technologies and to stop developing and supporting old ones when there are lot of bugs and fundamental problems. 3-4 years ago I saw opportunity to create touch screen .NET components – hardware prices decrease to allow wide usage of technology, lack of microsoft or 3th party components and etc. I had experience creating GUI back from DOS era so this was moment to left my previous company and create a new startup. It was beginning of 2009 – the reality was that more that 70% of computers worldwide are still with XP so my target was to create components that looks good and works well on XP. I loose more than year creating them and my life was a real nightmare – WinForms and GDI+ performance was terrible so I decide to stick with Win32 GDI instead, supporting different VS versions was another big problem, preparing help and integrating components in design time was another one – this should be simple things but everything was over complicated. I had clear idea what I want to build and it was not possible with WinXP without using DirectX or OpenGL, but they cannot be integrated together with HWND (WPF still has this). So, at end my decision was to completely leave Wintel platform – it is doomed, i cannot see bright future with it. It is sad because at end I need only one method to solve my problems – partial layered window update but it seems that MS will never do it – they introduce Direct2D and etc (but not on XP) instead. I think that all .net desktop technologies are dead or will be in near future (WinForms, WPF and Silverlight), there is no more innovations, only adding unnecessary complexity. It is not normal 15 years after first mainstream 3D video controllers OS like Windows to stick back to 25 years old architecture (VGA). It is not normal to use main memory as double buffer instead of video memory and to lack API to do it. Anyway, my pain is too big to continue writing … wish you better success with you components.
Sorry to hear that. You’ve been ahead of the time. There is still not good touch screen device on Windows platforms.
You should check out Delphi. The last two releases have had built-in touchscreen support that actually works right, on XP as well as newer systems.
Yep, this is also true. I saw the market in three areas – POS terminals (in supermarkets, restaurants etc), KIOSKs, industrial HMI. If someone want to build such solutions with wintel it will cost not less than $1000 only for hardware and Windows licenses using cheap hardware and more than $2000 using industrial PCs or touch panel computer. Few months ago I read that some smart boys put iPad in kiosk witch cost them $500 for cutting edge technology. This was moment when bells began to ring in my head – there was something very wrong with my planning. I start to think how to beat them and found only two ways – to use cheap second hand PC-s (which is not good) or to create devices based on any ARM SoC device – for example cheapest LPC1114 costs less than $1, and whole device with touch screen LCD is less than $100. Of course there is no word about .NET or Windows. That is, the game is changed, it is end of expensive computers and OS-es. Yes, you can still have a good business with Microsoft and PC-s but you are not more on the cutting edge technologies and probably will decrease your turnover and profit in next 3-4 years. With this in mind I am sure that there never will be good touch screen windows based device that can beat ARM based solutions.
Well written, I can almost sense your anxiety… 🙁
Nice article Denis – I can see so much potential in SL and WPF but the landscape has changed dramatically in the last few years and MS is being forced to align itself in unnatural ways. I was watching the PDC keynote and turned to the person next to me and said – have you been counting how many times Ballmer’s said HTML5?! Who would have guessed? For that to be the overriding message of the PDC keynote is amazing but unavoidable at the same time.
Strange times.
Yes indeed Andrew strange. But I can also see strategy for why push HTML5. No doubt if you are building public facing app, you want to cover your bases and you develop with technology that has widest penetration which is HTML. It works everywhere and you have bunch of clients/browsers for it. It is little more painful to develop for but that’s the price you pay for wide audience.
So if IE9 is the best HTML5 host available hands down, and you provide best tools for developing HTML5 apps it means people will use your browser and use your tools to develop HTML5 apps. And for both they need your OS, which is Windows 7 or 8. And if they already do that they might as well host on Windows, because that is super easy too. 🙂
Great post Denis, bold as usual! It was a very satisfying read and I agree with almost all of your points. One thing in particular seems questionable, though. Could the resources MS spent on control development really have been used to make the platform better? I’m not so sure. You’re obviously aware of the quality issues with those controls. Who developed the WPF TreeView control, for example? It was a whole team in China that disappeared off the face of the earth shortly thereafter. (Seriously, check their blog.) TreeView was then frozen in time, destined to be eternally fixed up, worked around, or reimplemented by third parties. And what happened with the WPF Toolkit? I agree with you that there seem to be some serious management issues all around WPF. However, let’s not forget that VB6 controls sucked badly, much worse than WinForms, and even worse than WPF controls in some cases. So I at least kind of appreciate Microsoft’s attempt with WPF.
I agree with you on startup performance and text rendering. At least with startup performance some optimizations can be done, but try to get ClearType to stay enabled in all [reasonable] parts of a real app… next to impossible, even in WPF 4.0! Text also mysteriously blurs sometimes when using cached composition. That kind of stuff should be fixed, but will it ever be? The more I develop, the more issues I find that are like “oh yeah, we knew about that… THREE YEARS AGO… but uh.. it’s still a mystery.” Nothing insurmountable so far, just irritating.
As for banishing XAML code editing altogether, that seems really tricky. Can the designer have such good UI as to support the complex layout and composition paradigm of WPF/SL, while also being intuitive enough for people to use it correctly? Personally I’ve been editing XAML by hand, watching the results in the VS2010 designer, and it’s been working great – even as I get into more involved parts of the UI for my app. I still do think about Petzold and his hand-written .rc files from time to time though… how barbaric, right?
Finally, for my latest big app, I waited awhile and finally chose WPF 4.0. The app is heavily focused on tightly integrated Direct3D content (courtesy of SlimDX), yet it also requires some serious UI. I still feel nervous about the choice of WPF but so far it’s working. The app is rather young but already far enough along to solve real business needs, and it’s running pretty darn well even on 5 year old XP systems, netbooks, and low end Atom-based tablets with only 1GB of RAM and Intel graphics. I’ve hardly put any time into optimization, but I’m thinking about performance and doing at least basic observations and testing every step of the way. Premature optimization may be the root of all evil but ignoring performance for very long is just as foolish, I think.
Admittedly I’m still waiting to deploy to a wider audience and see how things really go with display drivers and .NET Framework deployment. I’m sure it will be buckets of fun. But will it be more or less fun than endlessly shuffling around HWNDs and messages? Or driving OpenGL from JavaScript? What an interesting world we live in today.
Hi Tom,
Thank you for insightful comments. I completely forgot about WPF TreeView control 🙂 I’ll put it on the list for us to develop.
My comments come from place of appreciation. I don’t think there is company in world that provides as good tools as Microsoft does. Currently they are second to none. When you try to develop for say ROR or OC++ you realize how good VS.NET and surrounding technology is. But I think also that there is some very confusing messaging and strategy going on in last 5 years and I think that it is very good that we as community discuss that openly. I can only imagine how many jobs and families depend on WPF and SL. And both are very good technologies that I do not see any reason to throw out.
I agree on some of your items. But the reason you have sold 5 times more WinForms controls than WPF and Silverlight combined was because developers doesn’t need 3rd party controls when making business applications using WPF. They can pretty much do everything with the built-in WPF controls.
Not true. I guess you have not tried to make complex control for WPF or Silverlight :-). They are as involved and requires as much work as WinForms controls and design-time support requires more work than WinForms controls.