My view on HTML 5…and Silverlight

I continuously get questions regarding HTML5 and Silverlight. Especially after Microsoft’s somewhat brilliant comments at PDC. How is Silverlight going to survive now that HTML5 is coming? Why would you chose Silverlight over HTML5? Are you going to lose your job now that Silverlight is dying?

Well, I have finally decided to state my opinion  on my blog. It is obviously a biased opinion as I believe Silverlight to be a better choice in a lot of situations. So this is obviously a risky engagement, but I guess I will just have to endure the flaming I am going to get from a lot of people. Even a lot of people close to me.

But before I go too far, I do want to mention that we are living/working in an ever changing world. My opinions regarding the different technologies will probably change over time as the world changes. But this is my current view of the situation…

So…here we go…let the rant begin!

The by far biggest issue I have with people touting HTML5 as the obvious RIA platform today is the timeline. Anyone that thinks that HTML5 is a viable platform to start delivering applications on today, must have missed a major factor. HTML5 is a spec. It is not a specific technology, it is a specification. Just as previous versions of HTML. And a spec that has to be written and defined and go through “certification” and get accepted and so on. There are drafts to be written. There are hoops to jump through. Things that take time. A lot of time apparently. HTML5 is scheduled to be finalized in 2022. 2022!

Ok, so this is the target date for the final spec. This is not quite relevant as HTML5 can definitely start to be implemented a lot earlier than that. October 2009 was the last call for the working draft of HTML5. So it is closer than 2022. But we are still talking working draft. Even if we look at browser picking this up and starting to implement it, the spec is still moving. So not only will it take time for the vendors to get their browser to support it, it is a somewhat moving target until the spec is finalized…

Another probably more reasonable date is 2012. This is when the spec is expected to be done as far as needed for it to be viable for “final” implementation. 2012…and it is 2010 now, soon 2011. So it is more than a year away…

There is no way that we can start delivering RIA apps on a spec that still has another year to go before being set! On top of that, it is just a spec. Browser vendors then need to implement this spec to make it possible to use. And even though vendors are doing a lot in this area already, there are still issues. Different browser implement different parts and in different ways. We are basically back to IE vs Netscape. We are back to browser specific implementations to get it to work. Yay!

The best ever comment I have heard in this matter came from a developer at my office. It is obvious that IE is not his most favorite browser, but seriously... The comment was “Microsoft should just drop IE9 and build a WebKit based browser so that it implements HTML5 correctly”. Ok…so there are so many interesting things in that statement. First off, I do know that IE has had serious issues following the rules, but this time around it actually seems as Microsoft is trying to play by the rules. They have even invested time in helping out with the creation of tests for some of the new HTML% and CSS3 features. But my biggest problem with that statement is the fact that a person that talks about openness and how much better HTML5 is than Silverlight as it is open, still believes that all browsers need to build on the same platform to support the openness. How the hell is that open? An open spec should mean that every vendor should be able to implement the spec independently and still end up with a usable browser.

Anyhow…on top of the fact current HTML5 implementations are differing in implementation and so on, and we did build a custom implementation that worked in all HTML5 enabled browsers, we would still need to take a look at the non-HTML5 browsers on the market. If I look at the current stats on browser on the web, I get the following:

IE 28.6%
Firefox 44%
Chrome 20.5%
Safari 4%
Opera 2.3%

That is if I look at the W3C stats. These are way off according to me. They are gathered off the W3C website, which is a website aimed towards people who look at HTML specifications… come on… that isn’t average Joe. So let’s look at our old friend Wikipedia, as they collect from several sources

IE 46.22%
Firefox 29.92%
Chrome 12.40%
Safari 5.55%
Opera 1.93%

Hmm, that is quite a difference. But the Wikipedia one seems a lot closer to the real world in my eyes. So if we go mainstream and keep it disgustingly simple and say that IE is the only browser that has no HTML5 implementation at all (ignoring the few IE9’s out there). This statement does leave a lot to be said, as it assumes that everyone else using the other browsers are up and running late releases. But let’s ignore that for now and focus on the webs most hated browser…

This still means that 46% of the people out there cannot use an HTML5 application today. 46%! (Real world is higher…) So when people say that they are going to chose HTML5 over for example Silverlight as Silverlight does not have a big enough market penetration, I say that people are talking BS. According to riastats.com, Silverlight 4 is detected on almost 64% of the machines on the web. Which is WAY more than HTML5… And this data is gathered over 126 sites across the web. Sites not specifically about RIA technologies…

Even if all the vendors have to come out with HTML5 enabled browsers, we have another problem. We still need to get rid of all the old browsers. Not only old IE browsers, but ALL old browsers. Developers around me often say that that is easy, people who use FF or other browsers will just update their browsers ever so often so they will quickly be on the newer browsers. Not true! It will take a LONG time! My parents don’t update their browser. And my girlfriend. And most of her friends and so on.

And to be honest, even though a lot of people hate IE, there are still people who like it. And companies who have it as the browser of choice in their organization. And considering that IE 9 will never run on XP, it means that people using XP will never be able to upgrade to an HTML5 enabled browser. Instead they will have to switch browser completely. Something that most people don’t do in a whim. Just accept it, people are creatures of habit… And Wikipedia says that XP still has a 45% market share. (Wow…people should really update…but I guess companies are slow…)

Ok, so so far we have a spec that has years left to mature and market penetration that is low and years before old browsers are gone. So why is HTML5 all the rage right now? Well, to be honest I don’t really know. I still have not seen it being used even close to as much as it is being talked about. But my guess would be that it has to do with a certain turtleneck wearing CEO from the US.

As Apple has decided to not let vendors add plug-ins for the iOS, HTML5 is the only way to deliver RIA applications on that platform. And apparently that platform is the most important platform to a lot of companies. Not that I really understand why. I do understand that it is Apple and that fanboyism and media will push it far, but I still don’t understand why iPads, iPods and iPhones would define the future of the web. Or the future of all software companies… Right now they are the thing to have, but they will disappear much quicker than the web… But thanks to this platform, HTML5 has a bright future. If anyone ever wants to be truly cross-platform, they need to deliver using HTML5.

So, I am obviously biased, but why? Is it because I have invested a lot of time in Silverlight? Yes. But that is only a small part of it. A big part of my attitude against HTML5 has to do with the fact that people are trying to force solutions on to this platform ahead of time and without real reason. Except for the fact that media is saying it is the next big thing. There are loads of apps as well as whole companies out there that have no reason to got for HTML5. And by apps, I mean line of business applications. Not your feature rich fart app…

If your app doesn’t really target the iOS platform, there is as I said no specific reason to use HTML5. And there thing that talks against HTML5, if we leave specs and dates and so on to the side, tooling and maintenance are still issues. There is very little tooling for JavaScript and HTML5 development out there today. And those that are out there do not come close to the power you get out of Visual Studio 2010. On top of that, you are placing the code/functionality into a weakly typed language like JavaScript. Something that will likely make maintenance harder.

And no…I am not about to go ballistic on JavaScript! I actually like JavaScript, even if I definitely need to spend more time with it. The reason I am talking about JavaScript is something else. It is the average developer. During my 2 years as a technical trainer, I met thousands of developers from around the world. And you know what? Most of them were not comfortable with JavaScript. Most of them did NOT like the fact that there was no great debugging, no intellisense etc. And no, the JavaScript intellisense in VS2008 and VS2010 doesn’t count as it lacks a lot!

The average developer might use JavaScript to validate some inputs on his form. And maybe add some jQuery goodness to the site. But he currently does not feel comfortable writing full applications in JavaScript. And that is what we are talking about. APPLICATIONS! Not collections of webpages like we normally build on the web. We are talking applications. This is not a simple task with JavaScript unless you know what you are doing…

This will obviously change over time. We will get tools. We will get step through debugging. People will learn.  But it will once again take time.

All of these are things that is already available in both Silverlight and Flash. Two mature technologies that offer everything that HTML5 will have, and hen some. Actually, and then A LOT! The issue is the plug-in. people don’t like plug-ins. They make the browsers unstable. They make the system unstable if you use an old browser. They hog memory. And so on and so on. but seriously, we are already running plug-ins. It isn’t that big a deal…

My last point in this whole discussion, at least for now, is offline functionality. Do we really live in a constantly connected world? I know I don’t. Even if can probably be connected all the time, I still have downtime on my internet connection at home sometimes. My new laptop has built in 3G, but due to cost of bandwidth in New Zealand, I haven’t got it connected. So when I leave my apartment, it is disconnected. And this is the world for a lot of people. Will HTML5 really be a great option for offline scenarios? Well, it obviously supports going offline like any HTML based web site. But it consists of a lot of files. if consists of html files, JavaScript files, images, stylesheets etc. It will be interesting to see how that will be taken offline in a simple way. I am sure it will be possible in the future, but I doubt it will be as simple as selecting it from a context menu anytime soon. Silverlight supports out-of-browser apps and local “installation” by just right-clicking the app and choosing to “install” it. This takes Silverlight beyond the browser in a very simple way.

And even though Google believes that we can live inside out browser only, I beg the difference. We can definitely to some extent, and we will obviously be able to get more and more apps through our browser only. But I still believe that it will take a long time before I will be able to do everything through the web. And by that time, I think the web will have changed and that HTML5 will be an old relic that we laugh at… So for now, I like to be able to take my apps out of the browser and have them available in an offline scenario as well.

And I am not saying that offline apps are easy to build in a satisfactory way in Silverlight. But if it is hard to do with the power of C# and Visual Studio 2010. I would not want to do it today in HTML5. And definitely not make it cross-browser and cross-platform…

So, what do I want to say with this post? Well…can you please have a look at the world before making decisions. Do you really have to target iOS? If you do, then HTML5 is the way to go. but remember that you will have to build 2 solutions at the moment. One for iOS and one for the rest of the world. If you don’t, then look at the options. Don’t just follow media and chose HTML5 because it is the hype right now. Weight in the pros and cons of the different options. A Flash app is not as cool as an HTML5 app, but it will reach your audience…

Analyze the facts. Be objective. And be honest. Is the chosen technology the one that will be the easiest to work with, fastest to build on and easiest to maintain? If not, then it might not be the right one…

I hope I haven’t stepped on too many toes with this post. I just want people to open their eyes and look at things a little differently.

Comments (2) -

Well said and I agree with much of your rant.  The whole media hype and bandwagon of html5 is ridiculous if you are building any serious applications for web online/offline situations.  HTML5 does nothing for that so you might as well compare javascript to silverlight or javascript to flex.  Javascript will fail in both comparisons for any serious app developer.  Great points you have made!!!

Well said and I agree with most of your outburst. Dimensions and mediahypetystä bandwagon, and HTML5 is ridiculous if you're building all web applications seriously, online / offline situations. HTML5 is not something that could well be compared with the Silverlight JavaScript or JavaScript flex. Javascript fails in both comparisons, application developers are not taken. Great points you made!

Pingbacks and trackbacks (1)+

Comments are closed