There has been a whole heap of talk recently about the uncertain future of Silverlight, sparked in part by the comments at PDC2010 surrounding HTML5, and it would appear continuing even after the Silverlight Firestarter event on Dec 2 2010.

And of course God, ahem I mean Steve Jobs, has told us that HTML5 is the second coming and single handily attempted to crush Adobe in the process, so it must be true.

Well I ain’t buying it I tell ya, I am not buying it.

Now if I was just a tech blogger and not a developer I could perhaps understand the uncertainty. However, I am a developer and for me I still see Silverlight having a very strong future: on the phone, on the desktop, on the web and (I hope) on a tablet device in the very near future.

Now I don’t disagree that HTML5 has some great things to offer: It makes video and audio on the web much easier amongst other things. CSS3 looks to be making layout much better and more exciting. And that’s great for what I call the front end web. What your average punter sees on the web when consuming. However, it is shear hell supporting all those browsers, no matter how hard you try it just is not consistent. Of course I place blame front and center at Microsoft for a lot of those problems with IE. But even that aside, HTML is just not an ideal solution and I doubt it ever will be. There is too much legacy stuff to support.

And let’s take a look at where HTML5 is right now. Even the W3C is telling us it’s not ready and it won’t be for some time. So great, we (developers) will be stuck for who knows how long trying to cram in the new features of HTML5 but then having to also provide fall back features for browsers that don’t support HTML5, some or all of it’s parts. That costs $’s people and time is money, so don’t expect a small miracle for a small pay packet.

And since HTML5 is apparently the 11th commandment what do I tell my customers? “Hey guess what, that line of business app you what to put on the web. Well ummm it’s going to cost you 3,4,5… Who knows how many times more than it should just so you can get it to work as an HTML application. Oh and by the way, I can’t 100% guarantee that it will work for absolutely everyone”

As sales pitches go I would say that kinda sucks.

So what are the options?

Well there is absolutely no doubt, no argument here that the web is where it’s at. But, what I am recommending is that only the parts that have to be front and center consumer focused are HTML. For the most part this is online catalogues and eCommerce sites. That bit, without a doubt has got to be browser based bog standard HTML and CSS and if you want it to work (hopefully) across all browsers keep it simple and clean. Yes, how Google has been telling us for years to do it. They don’t keep it clean and simple just for SEO in my opinion.

Reign in your rockstar designers that are all care and no responsibility. When it comes to designing something that looks truly ‘rad’ (dude), 99 times out of 100 the designers have absolutely no appreciation for the development effort involved in getting their works of art to actually function. I have one word for designers. ‘Compromise’.

If you want to do truly flashy stuff then use Silverlight or Flash. These tools are designed for that and up to the task. I can guarantee that they will render 100% the same across browsers.

But wait, there is much more to this story. I don’t dislike Flash but I am not a Flash developer. I have dabbled but even Flash is now starting to carry a lot of baggage and I agree with Steve Jobs, it is a resource hog and buggy. The tools for developing flash applications are, well, poor in my opinion.

Silverlight on the other hand has tools that are truly outstanding for developing applications. Even animation and storyboarding for Silverlight is fantastic using Expression Blend but I suspect that Flash probably still has the lead there as that is what it was designed for.

However, if you are looking to develop a line of business application or even a CMS system for example then Silverlight is an awesome choice. That’s what it was made for.

There is a lot of talk about the dilution of Silverlight and how it is breaking away from a write once run anywhere model with the likes of access to P/Invoke which is Windows specific. Sure, I get where people are coming from but let’s put it in to perspective, this is for edge cases and dedicated solutions which will require access to hardware (medical applications perhaps) and these are going to be running in a controlled environment that is both secure and well managed. It’s not something that you will be just throwing out on to the web for the global population to use.

So you might be saying well if that’s the case then why not just develop it as a Windows application. Sure you could but then you lose all the deployment benefits provided by a web based Silverlight application.

Speaking of Windows applications I can’t remember the last time I wrote one. Now that Silverlight is maturing I really can’t see why I would. In my humble opinion what Microsoft are doing (and I am very happy if they are) is replacing the Windows development environment with Silverlight and not trying to replace the web development environment which is never going to happen. HTML and CSS for better or worse is with us for the long haul.

That my friends is why I think Microsoft are embrassing HTML5 and why I don’t think Silverlight is going away anytime soon. Heck it’s only just getting started.

Wether you like Microsoft or not you cannot deny (unless you are an Apple Fanboy in which case good luck to you) that they have an enormous arsenal of server based products that make up the bits of the Iceberg that you never see when looking at a web site and that few people understand. If it was that easy then the IT industry would have been overrun with double glazing salesmen a long time ago :-)

So my final words on design, development, HTML and Silverlight. I am going a bit off topic here but heck that’s why I have a blog, so I can express my opinions.

  1. Take a balanced approach to using new technologies
  2. Use the right tool for the right job.
  3. Don’t let designers make calls on development, they don’t understand.
  4. Don’t let developers make calls on design, they don’t understand.
  5. Get designers and developers to work together on the final plan and make sure everyone checks their ego at the door.
  6. Don’t make the mistake that a lot of digital houses do of letting the place be run by designers and sales people.
  7. Make sure sufficient time is in your project plan for development, testing and deployment.
  8. Do not make assumptions about development.

Ok that’s enough of my ranting for one day.

Silverlight Rocks and I for one welcome it with open arms.