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?
Leave a Reply