Saturday, October 30, 2010

Microsoft Kombat!!!

As I attended last year’s PDC, and especially after the 2nd day’s event, I couldn’t help but feel an enormous amount of excitement and energy around Silverlight.  This “platform within a platform” was touted as the future and that it was a prudent decision to “bet on Silverlight” for your target platform not only for web applications, but for desktop and (then only hinted at) the phone platform.  Silverlight for Symbian was released.  Microsoft was going to make a version of it for Moblin.  Hints of movement on the Android front were not exactly denied.

Funny what can happen in a year.

The other day, I and my team at the office watched the 2010 PDC keynote presented by Steve Ballmer and Bob Muglia.

As Mr. Ballmer sauntered onto the stage and began speaking, I couldn’t help but notice the Silverlight logo conspicuously missing from the banner of products that implied what this keynote was going to be about.

And aside from a very short demonstration of Windows Phone 7, Silverlight was absent from the keynote.

It seems that I am not the only one who noticed this.  Respected journalist, Mary-Jo Foley at ZDNet noticed this very same thing, and asked Bob Muglia about it.

Apparently Silverlight is no longer the cross platform RIA client framework that it was intended to be.  In fact, it looks like it’s now just a little more than the new version of the .Net compact framework.  A talk back participant on Mary Jo’s blog linked to a video where Silverlight evangelist John Papa interviewed Scott Guthrie on the future of Silverlight.  This video echoes the new direction in a far more subtle way.  Apparently desktop focus on Silverlight will be for “certain vendors” and “proprietary” purposes.

I guess that doesn’t mean that Silverlight is “dead”, per say.  It will fill the some niche roles and remain a minor competitor to Flash (at least on the Windows and Mac platforms).  Having used it in an intranet environment, I agree that it’s a great and arguably more stable alternative to Click-Once deployments.  And I know a lot of managers at Microsoft have been quick to play this card of damage control since Ms. Foley’s article.  Simply put though, what did they expect the reaction to be? Given Microsoft’s track-record of rapid change of focus, its hard not to take things at face value during an event designed to give the developers in their eco-system a sense of where things are going.

But in terms of the wider audience for cross platform rich internet applications, it has suffered a fatal blow.  Or in the words of the announcer from the video game Mortal Kombat:  “HTML5 Wins.  Fatality.”

The allegations were true!
About a month ago, a former Microsoft manager on the Silverlight team, Scott Barnes, rang the warning bell of this impending situation via his blog and Twitter.  To be completely honest with you, I initially wondered if this was some FUD-monger tactic of a disgruntled ex-employee.  And a few of the “corporately minded elite” seemed to down play his allegations.  However, after reading his blog entries, I started to develop a different idea about his motive.

Clearly he is/was proud of the work he did at Microsoft. Post-employment, he has even continued to evangelize the framework by offering design solutions to hard problems, such as the install experience.   Further, he has acknowledged the investment so many people have made in Silverlight for what it was promised to be.  Spilling the beans was not a malicious act.  It was an attempt at intervention.  And while it obviously burned a huge bridge in the process, it must have burned in the wake of a clear conscience.

So now what?
I'm a little bitter-sweet about the direction that Ballmer and Co. have taken this.  From a day-job professional standpoint, if you’re like me, it won’t matter a whole lot since Silverlight will still exist in the capacity of what we’re using it for:  Easy to develop and deploy, rich UI intranet applications.  And I guess at some level, it’s nice to know what the “official” direction is, even if it’s not the one I hoped it would be.

However if your audience scope is a whole lot bigger (like my personal off-hours aspirations).  Then you will probably be wandering into the world of weak-typing, non-intellisensed mark-up and “web standards”.

The good of Microsoft’s embrace of HTML 5…
To be optimistic, the jump from xaml/c# to html/javascript isn't nearly as terrible as it used to be.  (Ok, who am I kidding? It still sucks.  Just not in a late-90’s early 2000’s sort of way.)

From a cross platform perspective, this does release Microsoft from the burden of implementing a Silverlight player on all the platforms out there. Nearly every platform out there with a web browser will most assuredly make it HTML5 compatible at some point.  This also means that all the outcry for “Make Silverlight for iPod/iPad/iHateFlash” and “Make Silverlight for Android” all becomes someone else’s problem.  And while the wheels at the W3C do turn slowly, they do turn, and it’s direction is kept in check by the competing agendas of Microsoft, Apple, Google and anyone else on the advisory board (which is a good reason why it’s adoption of standards is so slow).

Comparatively, perhaps the notion of support for multiple platforms for Silverlight was too ambitious of a goal to begin with.  James Gosling of Java fame implied in a recent blog entry that most OS-implementations of Java were managed by the OS owners themselves.  Adobe’s has had Flash for years, but it wasn’t until recently that they made any major attempts at leveraging it as a cross platform framework.  And even then, this was prompted only because Apple’s market share for casual web browsing was threatening to put blue legos in all of Flash’s website airspace.  If you read between the lines of Muglia’s comments to Mary-Jo, they are throwing in the towel for Silverlight in recognition of that same insurmountable threat.

I know I'm not the first to suggest this, but perhaps a way of re-structuring of Silverlight so it outputs HTML5 rather than CIL isn't such a horrible idea.  Of course, this would probably cripple the Silverlight C# implementation enough to call it an entirely new product.  Maybe something akin to a client-side focused ASP.Net development environment.

Hey, it’s wishful thinking.  And Microsoft is probably not the company to do that job since there will be a temptation toward IE9+ bias.  But it would be a totally rocking product if done responsibly.

The bad of Microsoft’s embrace of HTML 5…
If you paid attention to the keynote demonstration, Mr. Ballmer exalted the virtues of HTML5 standards, and gave exuberant praise of how well Internet Explorer 9 handles the content.

I say I have to agree with him there.  The folks on the Internet Explorer team have done a fantastic job making HTML5 content as snappy and responsive as any Silverlight or WPF application I’ve seen.  Kudos to them for raising the bar high and challenging competing browsers on Windows as well as other platforms to match the experience it provides.

However, after praising the benefits of following the standards, he proceeded to drop hints of how IE9 will “enhance” the HTML5 experience for Windows 7 users.
One can’t help but think that the EEE snake is rearing it’s head again with the notion of application “jump lists”.  If you watch the demonstration carefully, the Windows 7 Javascript APIs carry a Microsoft naming convention.

You have to ask yourself, what if you’re running this Javascript in a browser that’s not aware of the Microsoft APIs?

Even if Microsoft were to make these APIs available to competing browsers on the Windows platform, what happens on the iPad?  Or on Android? Or the Wii? (Though I suppose some may argue that these platforms will have their own specific APIs as well)

What if another OS implements a means for “jumplists”?  Is the Microsoft Javascript encumbered by patents?  Will there be multiple “jumplist” APIs made by different OS providers? What a mess.

But since Windows is the dominant platform on the desktop, there’s a big danger and temptation to encourage web developers to assume that IE9 will be the browser to target.  Those of us who have been around for awhile will know that we should also test in competing browsers as well.  Given the myriad of capability testing one has to do when making an HTML5 page, it’s very easy to take the easy way out and write the pages to not bother to check.

Microsoft knows this, and as a company full of developers, they know fully well that the average developer (and there are a LOT of average ones out there) will likely opt for the easy path rather than the best practice.

The Ugly inconsistency of HTML5
The interpretation of "standards" is pretty loose.  Basically in the case of HTML5, it’s a list of specifications that a browser should implement. A browser claiming HTML5 standards doesn’t necessarily have to implement every specification (thus the need for capability detection).  And unfortunately, there is no “standard” for performance.  This means that all HTML5 frame rates will dramatically differ, particularly on underpowered devices such as phones.

To put it in perspective, my Android handset running Éclair does HTML5 in it’s standard browser, but not particularly well. It is slow, and sluggish.  I imagine this is due to the lack of hardware acceleration.  In these scenarios, it would be desirable to avoid HTML5 altogether. I’m not sure if the slowness has been addressed in Froyo since Sprint isn’t letting me go there without rooting my phone and voiding my warrantee.
I have also heard of similar complaints on the iPad.   And again, I’m not sure if this is addressed in the coming upgrade of that product’s OS.

Presumably, this will all be easily corrected in time by allowing these platform browser’s access to the hardware like Internet Explorer 9.  But until then, the HTML5 experience across platforms is going to be inconsistent and spotty.  Same as how HTML has always been.

More follow the leader…
In conclusion, I can’t help but speculate what happens next at Microsoft.
Recently, Mr. Ballmer said that Windows 8 will be Microsoft’s riskiest product bet.  Some of the things mentioned were “instant on”, an “app store”, integration to cloud services..

Couple this with Office 365 and the demonstration of IE9, which seemed to make IE9 less of a browser and more of a “virtual desktop”, one can’t help but draw similarities between what Windows 8 might actually be and another operating system brewing out there.  If Windows 8 is a “cloud client OS” that simply boots into IE9, that would certainly qualify as a risky product bet.

So is Windows 8 a successor to Windows 7, or a light-weight sister product similar to Chromium-OS?  My guess is that it will be the latter.  Windows 8 will be aimed at the casual user as a means of consuming Azure, and Windows 7 will be for advanced  users such as those that do software development.
If this is true, the sudden love affair with HTML5 makes a whole lot of sense:  they are paving the path for their next version of Windows.


  1. So, as a developer and owner of a small and adaptable software company, where'a the best place to position ourselves? Obviously, specializing in Silverlight seems like a risky choice, but HTML5 wont be coming to corporate workstations for a while. WPF for LOB apps is great, but a lot of our clients are looking for rich web apps. A tough decision to say the least!

  2. Hi Michael:
    I don't think there's a single direction for this. Admittedly, the Silverlight applications I develop at work are confined to the company intranet. And any external clients we would ever ship to are pretty well anchored to Windows because of high reliance on tools that reside on the platform.

    The last company audit that I got metrics from indicated that a pretty large percentage of the company I work for is still on IE6. So I'm in the same boat you are as far as adoption rate is concerned.

    The business still needs to function right? A lot of good it does to deliver a product that doesn't run for your customer. I think I will personally keep using Silverlight for rich web apps for as long as I can, with an eye toward HTML5. The alternatives in the Microsoft stack here are pretty limited to say the least, and it's hard to get out once the investment has been made. (which is part of the reason this switch in Silverlight strategy is so annoying. They've disrupted and instilled a LOT of FUD in those of us who've invested considerable time and effort in SL)

    For Microsoft's web dev division to remain relevant in the next couple years, they will have to make serious strides toward HTML5 tooling in the ASP.Net realm. And not just focusing on the server side as they traditionally have. ASP.Net's development tools are going to have to support a great client-side experience as well, complete with all the various "fall back" strategies for browsers lacking the necessary bits of HTML5 support.

    Once that happens, one would hope that the transition from Silverlight to HTML5 could be less painful.