How one announcement destroyed the .NET ecosystem on Windows

This post is based on events that happened 5 years ago. I had the basic points of it in my “drawer” for years, but thought it’s water under the bridge and there’s no point in actually writing and publishing this anymore. However, last week the main character of this story was “wrong on the internet” and apparently still unaware of the effect that announcement had on the ecosystem.

So, I decided it is important to write down the effect these events had on me personally and the whole vendor and developer ecosystem in the client .NET developer community.

The Story: Windows 8 announcement at D9

The focal point of the story is the first public announcement/demonstration of Windows 8 at the AllThingsD D9 conference back in the spring of 2011. Specifically, a part of it that provided both vague and, at the same time, pretty specific details on how native Windows 8 apps will be written (emphasis mine):

Windows 8 essentially supports two kinds of applications. One is the classic Windows application, which runs in a desktop very similar to the Windows 7 desktop.
The other type of application, which has to be written in HTML5 and Javascript, looks more like a mobile application, filling the full screen.

At the time of that announcement my primary occupation was leading the .NET side of a very popular charting component package amCharts. It is still the best charting library for the web and I encourage you to check it out, but it is all about HTML/JavaScript now. The .NET part is gone, as is Flash/Flex.

By .NET, in this case, I mean charting controls for WPF and Silverlight that I developed over several years. Which it turn means XAML/C# (primarily) as underlying technologies. amCharts for WPF and Silverlight were the primary source of my income by the time Windows 8 was demonstrated at D9.

For the next 3 months our sales on the .NET side fell to literally $0.

As Steven Sinofsky likes to remember they have announced the development stack for Windows 8 in reasonable detail at Build 2011 in September. Which is absolutely true. And it included XAML as the first-class citizen for “metro” app development on Windows 8.

Windows 8 development stack diagram presented at Build 2011

The problem is that D9 happened on June 1st and for the next 3+ months Mr. Sinofsky and co. did very little to publicly dispel the sentiment that XAML is being relegated to “legacy” platform on Windows 8.

Since then, the company has refrained from making any further comment on the issue. In particular, the question that has many Windows developers particularly concerned — how can I make use of my existing skills and experience when developing these new applications? — remains unanswered; the company plans to reveal nothing until its BUILD conference in September.

What this meant for every sane developer team? It didn’t take long for all of them to decide to park all the new client-side XAML development projects until the situation clears up. And that, obviously, included investing into XAML based components and component suites.

I’ve discussed the situation with a CEO of one of the biggest component vendors in the .NET ecosystem (who should probably remain unnamed) and he confirmed that, even though it didn’t drop to $0 because of their scale, they’ve seen a very substantial dip in sales.

And what does a sane CEO do when he sees a substantial and sudden drop in revenue from their main product suite? They decide to accelerate plans to diversify and loosen the dependency on the single ecosystem owner. And where do they get the funds for that diversification? Yes, you guessed it right, by shifting budgets and attention from the “XAML projects” to that next thing (whatever it was for each specific company).

As a result we’ve seen many of the vendors lower their investments into the .NET space. And that doesn’t just mean less attention invested into building products. That also means less marketing and evangelizing for the native Windows 8 and now Windows 10 development. And Microsoft is a very partner driven company, so the whole community was affected even if they didn’t notice it explicitly.

One may argue that all of these shifts are purely market driven and would happen anyway. I may agree with that, but I would also argue that these events had a major effect on accelerating the processes. I, for one, had to quit .NET control development as a direct result of that announcement.

Lesson not learned

Mistakes happen. That’s normal. As long as you admit them and learn from them. Unfortunately, it looks like the highly intelligent person (no sarcasm here) responsible for this mess still doesn’t think that there was anything wrong with all that transpired in the spring-summer of 2011.

It is impossible to learn from mistakes when you think there were no mistakes made. I have no idea what happened inside Microsoft between that announcement and Build 2011. Maybe there really was no intention to support XAML-based apps on Windows 8 in May and the announcement was the truth of the moment. But I find it really, really hard (actually impossible) to believe. Someone in the leadership could’ve made a very brief public statement: “There will be a first-class development story for native Windows 8 apps written in XAML/C#. More details coming at Build 2011.” But they didn’t (as far as I remember).

Fast-forward 4 years. At Build 2015 Microsoft announces that they will create “bridges” to bring iOS and Android apps to Windows 10. This time I was there and I’ve seen and heard from my friends doing contract Windows development. For many of them this meant they were out of a job. Their clients called them and asked: “Why would I pay you to create a Windows 10 app, if I can just take our Android app and run it on Windows?”. And there was no good answer to that, since there weren’t that many details about the Android bridge at the time.

As we know now that bridge never really happened. But the damage was done. I’ve heard people quite high up the ranks admitting that underappreciating the effect of the announcement was an oversight and even trying to mitigate the fallout. And that was encouraging to see despite the actual mishap.

Would admitting the mistake in 2011 prevent the 2015 announcement? I don’t know. But I’m pretty sure it would be a good reference point and make everyone stop and think for a minute.

Update (May 25th, 2016): I’ve compiled some of the interesting Twitter reactions to this in a separate post.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.