WPF has a lot of potential going for it, it’s one of these products that you absolutely hate upfront when you first start on its learning curve but over time you grow to love it dearly as it unleashes a lot of creative potential within you early.
There’s been a lot of talk recently around its futures, namely by myself but also in various forums, discussion lists and so on. It’s both healthy but at the same time it’s not being heard by the right people internally within Microsoft.
WPF has a few problems to sort out, firstly there is what I call the convincing phase, in that getting people to initial embrace the latest version of .NET 4.0 is a challenge unto itself – which has next to no marketing attached. The second challenge, is the ask that folks get behind the learning curve / investment of adopting WPF instead of Silverlight for desktop based solutions. It’s a challenge because Silverlight Out of Browser has confused a little on which is best for what and where. The last but most important challenge of all is the learning curve attached to WPF, as it’s somewhat a very chaotic and noisy Google search to undertake.
Why adopt WPF?
In 2007, I was an Evangelist for Microsoft via Australia for this question. I’d probably give you some prescribed marketing spin that went something like this:
“WPF is for ultimate experience, Silverlight is for great experiences and lastly AJAX/HTML is for good experiences”
I’d then throw up a slide and show you the three pillars of Microsoft UX Platform and how we as a company are investing big into the futures of developer & designer productivity. Its obvious that was a lie, and apologies to any who bought it – as even I bought it.
The reality behind why adopt WPF is simple, you have full control over your user experience on a Windows based PC (both Windows XP and Vista/Windows7). You have more ubiquity (70% of Windows machines today - have at least .NET 3.5 installed) than Silverlight and in many ways typically have more support around API’s then Silverlight. You have a much more engaging interop story (ie access to the quasi 3D now in WPF but should you want to go big, you can again via interop do more). You have now a descent amount of download size as well, roughly ~40mb give or take to deploy with.
I could list a whole bunch more reasons, but the end summary is that WPF has a lot of positives attached to it today than people typically think or know?
If it’s so good, Why is WPF dying then?
I’ve thought about this question a lot since leaving the WPF/Silverlight teams. I’ve blogged about the fact I think its dead, I’ve explained many times over the reasons why there is internal politics getting in the way but ultimately what it comes back to is simply a Product Management problem. As a former Product Manager of this product, I simply wasn’t doing my job for WPF. I ignored it, it was easy to do so as Silverlight was the main star in this theater.
WPF isn’t being evangelized anymore, it has zero marketing and more importantly the development team within Microsoft are tasked with all of this as well as partner hand holding and actually development of the said product. Scott Guthrie can throw a random 200+ engineers are working on it all he likes, but ask anyone internally if I’m lying about who does what and where, and I will guarantee you the bulk of the work falls into the hands of the WPF Engineering team to do it all solo.
Point and case, Evernote this week blogged about how they abandoned WPF and went C++ instead, citing performance reasons etc. as the reason(s) why. Fair enough, but what struck me is odd was that none of the usual suspects where jumping ahead of this PR issue, in that typically you see something like this you quickly put some spin on it, reassure the masses with your said messaging framework and rinse/repeat until you get downright annoying about how good WPF is still.
Still not convinced? take Windows 7 Launch. I remember seeing an internal memo about how the said campaign was going to work and more importantly how $300million+ in marketing budget was going to be spent convincing the world that Windows 7 is a good bet this time round. “I’m a PC” was born.
I also remember sitting in a team meeting discussing what story we would pitch for WPF/Silverlight around Windows 7? we soon learnt that Windows 7 had the same developer story as it did Windows Vista. This then resulted in the team deciding that since there was nothing new or shiny to talk about, we’d just leave it be.
This frustrated a colleague and myself. The reason being is that who said Windows Vista + WPF got traction? who said we still couldn’t use the same goals as we did back then! I mean our team even re-branded .NET logo to fit into a more up to date branding strategy.
We simply didn’t go out there and market .NET 4.0 or 3.5 along with Windows 7. We should have been hitting the usual channels, promoting how with WPF you can get blah blah potential out the door. We should have been investing heavily into adoption channels, ensuring the future of tomorrows .NET developer was embracing Windows as well as the potential for cross-platform, cross-device and cross-browser technologies.
Learn once today, Use many tomorrow – or a cheesy tag line like that should have been conjured.
Instead Silverlight is and now Wp7 are being pushed as the sole future(s) of Microsoft. It’s no wonder the Windows team aren’t on board with DevDiv, as when you take a step back and look at what they have to leverage from the developer community – then you are left with a solution that basically works in all other platforms as well as their own? the only chance you get of keeping that genie in the bottle is to bake features that are Windows Specific into place – yet this won’t bode well as that level of adjustment to an existing agnostic product won’t happen as it simply deposits large amount(s) of hate debt into the bank from developers world wide (embrace and extend is a known tactic of Microsoft that breeds distrust and disagreement)
WPF needs Product Management 101
PDC has finally got one session in its talk agenda that is focused on WPF. It took the guy in charge of WPF’s development teams to step up and do Microsoft Developer/Platform Evangelism Team(s) (DPE) job. Rob is an awesome guy and I have a deep amount of respect for his work, it just seems downright disappointing that he’s got to focus on a session talk instead of sitting in a bubble thinking up better ways to develop WPF’s future(s).
MIX and TechEd for the last 2 years has had little next to none (I can think of anyway) WPF discussions happening, essentially Microsoft is putting WPF on its ignore list.
What needs to happen is Product Management 101, there needs to be an actual WPF Product Manager dedicated to its future. At the moment that role fits under the Silverlight Team at best, and is thinly spread between Silverlight, Windows Phone 7 and any if not all Rich Platform compete issues ranging from Adobe centric through to the threat of HTML5. There is no one person really owning this problem, just a few directors appearing to.
Product Management is about protecting the brand, it’s about sitting down with partners and figuring out what features worked vs what didn’t. It’s about thinking about how your competitors are doing xyz and then coming up with ways to differentiate from them. It’s about working with community leads (corporate and street evangelists) ensuring they understand your vision for the future of the said product. It’s about crafting a marketing channel (web page, blog etc) that echoes your reasons for why it exists, where its heading and what successes and failures its had. It’s about investing in learning material on features that are rated the hardest and letting developers discover the ones on their own that are less harder (it plays into the psychology of learning, if you learn something that is a little hard but tad easy, your confidence levels rise). It’s about ensuring others are inspired by your products vision and compete with one another to create beautiful experiences that go beyond your initial baseline of expectations.
None of this exists today. It all sits in the hands of the engineering team who are doing all this and actually coding at the same time.
Scott Guthrie said there were 200+ engineers working on WPF & Silverlight. How many are working on WPF and more importantly how many people are marketing WPF & .NET 4.0 today? If its more than one, then tell me, what have they done lately?
As I seem to be the most vocal guy on the planet right now about WPF and nobody has challenged me head-on in proving me wrong?
I’ve often thought about what I’d say if someone actually asked me to move back to Microsoft Corp and take on this role? my first answer would be – I want to sit next to the development teams and I want a ring fenced budget that I spend solely on WPF, give me those and I’ll do the job again, only this time I’ll execute more precisely.
Ruby On Rails has less to work with and they've kicked Microsoft’s butt so badly now, that its now considered a competitive threat! do more with less I guess?