Understanding the Windows 8 Jupiter fiasco

Update 14th June 2013: I still get a lot of hits on this article, more than any other post in this blog. It’s been a long time since I wrote this, and since it was mostly speculation (some informed, some uninformed), you shouldn’t treat it as fact. It’s basically a historical curiosity at this point, and you should instead get your information regarding Windows 8 from more modern and official sources.

I’ve been reading up about this Windows 8 ‘Jupiter’ platform controversy, mainly by following Steve Barnes‘ blog posts and Twitter account, and I think I’ve got a handle on what’s maybe happened/ing. Barnes’ posts are very useful, but there’s a lot of them, and you have to read between the lines a bit as well. So I’m going to try and set out here, in as concise and clear a fashion as I can, exactly what I understand of the situation:

There is bad blood between the Developer Division (who make .NET, Visual Studio, etc) and the Windows team (I’m simplifying the Microsoft internal structure a bit) dating back to the release of Windows Vista. During Vista, the Windows team attempted to rewrite big chunks of Windows using .NET and WPF. They failed, performance was too sucky and there were bugs everywhere. So they gave up and restarted work based on a fork of Windows Server 2003 (or whatever server OS was contemporary). They also swore off .NET forever, preferring to stick with good old fashioned C++.

Fast forward a few years. The Developer Division continues to push .NET, while the Windows team continues to ignore it for Windows and Office. Further hampering Dev Div is a need to perform to metrics that don’t favour stabilising on a technology, instead they favour winning new developers and pushing out new stuff, only to drop it and move onto something else the next year. One such flavour of the year project is Silverlight, which really pisses off the Windows team as it’s cross-platform, thus potentially eliminating the need for Window altogether.

The Windows team, who hold massive political sway at the top of Microsoft due to them generating the vast bulk of the company’s revenue (through sales of Windows and Office licenses), decide enough is enough and they have to kill .NET and Silverlight. They use their influence to get engineering resource taken away from the client side of .NET. But that’s not enough, too many people are already using .NET for it just go away. They also need a new development story, so they start to hatch a plan. They have an existing, native, Microsoft internal-only, UI platform called DirectUI that dates back to Windows XP days. They start work on improving it, adding support for XAML and high-performance animation. They tie the work in with that of the Internet Explorer team, who are developing a high performance rendering engine based on Direct2D for IE9.

The pieces start to fall into place for the Windows team: A new, high performance application and UI framework. All native code, but leaning on the Internet Explorer engine, codenamed ‘Jupiter’. This means it’s all accessible via unmanaged C++, but also trivial to make accessible via a Javascript object model. Of course, they can’t just drop .NET given its pre-existing developer mindshare, so they create a managed wrapper as well, but the important thing is that it’s just a wrapper, so native applications won’t be locked out like they are with WPF and Silverlight.

The hope of the Windows team, bolstered by the success of Objective-C as the language for iOS applications, is that developers will choose to develop C++ applications in order to get the best possible performance and access to the underlying platform. What’s more, non-Microsoft developers will be attracted by the ability to write HTML/Javascript based applications for the new platform. In time, these non-Microsoft devs will start to leverage the OS specific APIs that the platform provides, and will be converted into Microsoft developers. .NET, while still an option, will be squeezed from both sides by native C++ apps and HTML/Javascript ones, and, starved of resources and evangelism, will gradually wither and die as developers drop it as a client-side technology.

This new platform is deigned to be the flagship developer feature of Windows 8. Microsoft decides that the announcement of the new platform must be a ‘big reveal’, and plans a new developer event, called ‘Build’ to announce it. They make it very clear to all Microsoft teams that nobody is to spill the beans before the big day, if they value their job. However, they want to generate some early buzz, particularly amongst non-Microsoft developers who would usually ignore a Microsoft conference. These non-Microsoft developers are extremely important, because a key metric that Microsoft managers and teams are judged on its their ability to increase market share. So they plan an early teaser event, at which the new framework will be demoed. At the event, they quite deliberately explain that it will allow development of apps using HTML/Javascript.

The reason this announcement is phrased so isn’t because the framework won’t support C++ and .NET, but because they want to ensure the HTML/Javascript message gets out, without being swamped by attention being paid to the other development options. The plan works, in as much as plenty of heat and light is generated the announcement, particularly by furious .NET developers who believe they are being abandoned. They’re kind of right, but not in quite so brutal a way as they fear. .NET will be supported, it just won’t really be favoured.

Thousands of .NET developers beat an angry path to the emails, blogs and Twitter accounts of various Microsoft evangelists, product mangers and engineers. But all of them are bound by the internal edict not to spoil the ‘big reveal’ at Build by talking about the platform too early, and so can’t offer anything more than the most broad platitudes, leaving the developers to whip themselves up into even more of a fury. At the top level though, Microsoft isn’t too bothered, as .NET developers aren’t a priority, no big customers using .NET have baulked or announced they plan to switch away from Microsoft, and they figure the .NET devs will be salved when the Build conference comes.

So, what will happen come Build-day? My guess is that Microsoft will push this new framework as the one true platform, that will solve the WPF/Silverlight/web and native/.NET/Javascript schisms by providing a single, high performance UI platform that combines the best of all possible worlds. Old-school C++ devs will be sold on the ability to write native apps and get high-performance. .NET devs will be sold on the ability to leverage their existing knowledge of XAML and the similar, though not fully compatible, WPF and Silverlight. Doubtless they’ll be some support for converting existing WPF and Silverlight apps to Jupiter, in order to soften the blow, plus the promise that Silverlight and WPF remain fully supported, even if they will not be receiving major development effort in future1. Finally, web developers will be sold on its ability to integrate with their favourite, open technologies, easing cross platform development while allowing access to the full power of the OS platform.

It’s going to be a hard sell to please everyone, and I suspect, as the Windows team wants, that it’ll be the old-school C++ developers who are smiling the most by the end, finding themselves back at the cutting edge of Windows development after a decade in the wilderness. Of course, a question mark still hangs over the future of the Windows platform itself given the growing competition from Apple and Google. The Windows team clearly hope that this new framework will be the start of a renaissance along the iOS model, but only time will tell.

1. I do wonder what they’ll do about Windows Phone though, could Mango still ship with some kind of Jupiter support? Or will it be case of everything changing come WP8?

17 thoughts on “Understanding the Windows 8 Jupiter fiasco

  1. Cyberdyme says:

    Great post .. but the real advantage of .Net is that is allows a great deal of productivity. For most line of business applications the pure performance of power of C++ is not needed.. so I cannot see people leaving csharp and .net

  2. Shafqat Ali says:

    I am very disappointed with the (hell) Microsoft is going to do. I am developing apps with .net since 2003 i am greatly satisfied with the .net but i don’t know why WinDev is so against .net. Now i am planing to shift to Java. At the end i want to say “Bill Gates please come back to save Microsot”.

    1. Somebody says:

      A have at least 10 years of Java programming … stay away … it’s quite boring and it’s not productive at all. UI development sucks. And … a lot of silly tools and frameworks. kinda like linux, bsd & Co vs. Windows.

    2. Connor says:

      I couldn’t agree more about “Bill Gates please come back to save Microsoft”. In the end, Apple’s history can repeat itself in Microsoft – Gates is gone, Ballmer ruining the company, Gates the savior returns.

    3. Steve ballmer says:

      Sorry we upset you. Please stay with us, we will shuffle the entire strategy so you don’t have to go with Java.

      1. ILove.Net says:

        Please dont make me go back to java. The thought of working without lambda expressions, linq, properties, event-handlers and speed is already giving me nightmares!!

  3. djo says:

    je pense que c’est la fin de windows !

  4. Stuart Elmore says:

    So, I’m curious as to where you found the facts that spawned these comments… But I admire your ideas of what’s going on, but unfortunately there’s a lot of misguided statements in this post…

    “The Windows team, who hold massive political sway at the top of Microsoft due to them generating the vast bulk of the company’s revenue”
    This is untrue – it’s actually the Windows Server and business models that ‘bring in the cash’.

    “One such flavour of the year project is Silverlight, which really pisses off the Windows team as it’s cross-platform, thus potentially eliminating the need for Window altogether. […] decide enough is enough and they have to kill .NET and Silverlight”
    Sadly it wasn’t as simple as that! 😉 It truly had nothing to do with being ‘cross-platform’.

    Also, WPF and SL will always have a home in WP7. Plus no-one is killing off WPF, .NET or Silverlight per-say.

  5. AndrewDover says:

    It is no fiasco to provide some alternatives development paths for C++ developers. The edict of intolerance is
    “Thou shalt have no Gods before Me”.

    Actually Windows 8 is an expansion of Silverlight and .NET as now they will have their very own user interface.

    See
    http://blogs.msdn.com/b/b8/archive/2011/08/31/designing-for-metro-style-and-the-desktop.aspx

    Stop moaning about a potential C++ GUI library which won’t hurt Silverlight or .NET at all. They will live or die based on their success with customers. Why must C# get all the development effort when non-Microsoft has voted Java, and Apple has voted Objective C?

  6. Pcunite says:

    C++ is so easy to develop in, what is hard is the lack of good GUI libraries. Borland’s VCL is nice but not entirely complete so you end up using straight win32 calls and subclassing everything. If the windev team would make a nice GUI API that is native they could really maintain and keep the lead.

    1. Pete Zahut says:

      That’s the problem with C++. It’s very easy to make console programs when you can encapsulate everything. But when it comes to Windows-apps you have to choose between plain API calls (using C interfaces), MFC (and its beginner-unfriendly macro system) and ATL/WTL (and the scary template-based framework). A C#-style GUI designer with a simple class-(but no COM)based framework would be AWESOME.

      P.S. Again, no COM please, I hate to use IDontKnowWhatIsThis, IWillNotLeakMemoryFactory and other silly interfaces…

  7. dave says:

    M$ is driving me crazy with this revolving door or programming languages and technologies. I understand innovation must be trial and error, but why must they use all windows developers as their guinne pigs? I dont want a language du jour. I want a stable platform where my investments in code and libraries can be leveraged for as long as possible. Not all application developers need animations or pretty UI’s. Even all the new UI features in newer windows builds drives me nuts. I would accept the OS on a subscription model if thats what it takes to get stability out of it vrs constant changes to try to upsell people every year. I still use vb6 as my main language despite its limitations and except for driver installation issues, I think Windows peaked at win2k!

Comments are closed.