MIX - Afterthoughts - A realistic view
I'm very pleased I attended the MIX conference, it's been a blast.
Seeing the culmination of Silverlight and all the work which has been going on for so long internally at Microsoft was really rewarding. The guys from the team that were at the event were beaming, they are all very proud of what they've done (and well deserved!).
From today, and moving forward, I'm now a Silverlight developer as well as an ASP.NET Developer, I have already begun developing Silverlight components which will be used to build up larger applications for my customers. That's how convinced I am that Silverlight will be a success.
Silverlight *will* be big, but it will also take some time to become big. Problems include: -
- There are many enterprises which will not allow browser plugins installed (other than the default ones - Flash).
- Flash has a huge userbase already, there are lots of designers with amazing Flash skills and they will do everything they can to protect that market. (I don't blame them!)
- The OSS guys insist that Silverlight and supporting technologies are evil becuase they're from Microsoft.
So Silverlight will not hit every Windows and Mac machine overnight (Microsoft estimates 98% of desktop machines are either Windows or Mac based), which will mean that in the beggining people (you and I) will need to develop both uplevel and downlevel applications where the consumer is the end user (not so internally where you can control the environment).
How do we go about providing both uplevel and downlevel functionality as easily as possible? Well, there are good practices we should all be following, first and foremost, unobtrusive javascript should be a pattern we're all using by default, (that's not to say I will - but the good intention is there), once we have applications which will work without any Javascript at all we can take things to the next level, we can start to think about wheather we have Silverlight installed.

Level 1 - No Javascript, HTML Only.
At the bottom of the evolutionary chain we have HTML, our old friend, hard working, resiliant, stubborn, incosistent and destinctly not cross browser. We're limited to using links and form Posts for navigation, no ajaxy goodness here. So why bother?
Well, if you can code in HTML only, you'll find that your HTML will be lean, mean and you'll understand how to get the best from your applications, it also means you can with almost certainty guarentee the site will work (might not look identical) across all browsers and platforms be they IE and Firefox or Nokia and Motorola.
How many people will code to Level 1? Not many, and if I'm honest, I doubt very much if I'll be one of those people. Most of my taget audience have got at least Javascript avaliable to them so I'll take the advantage of that and cut down on my development time and therefore cost.
Level 2 - Javascript enabled, no Silverlight.
This is todays world, AJAX and Web 2.0 and all the other terminology which makes you gag. In this envitonment you can take advantage of DHTML and Javascript on the browser, there are lots of little tricks and techniques for making your browser seem much more powerful than it really is, but let's be clear about this, almost all AJAX is a hack to work around the built in limitations of browsers.
We should NOT be able to do what we can do with Browsers and AJAX today, it's really not meant for it.
Having said that, we do, and it works :-)
Level 3 - Silverlight lovliness
Designed from the ground up, with the hindsight and knowledge gleaned from other products, Silverlight is intented for building Rich Internet Applications (RIA). With this in mind we have: -
- Rich and powerful media integration
- Managed code running in the browser (Compiled on the server OR Interpreted on the client where the language is dynamic (IronRuby, IronPython, Javascript ....)
- "Full Screen" support allowing the feel of a desktop application which is loaded from the browser (note, we're hacking around a browser limitation here!).
- A guarenteed consistent look across all browsers (not too sure how this is working on mobile devices ...)
- A guarentee that the code will work across all browsers (like Macs with hardware, the permiatations are limited, IE and FF on Windows, Safari and FF on Mac)
There's still a downside though, because Silverlight is hosted inside the browser, there are some limitations with which we have to live, limitations which I expect to see people hacking around in the same way that AJAX became a hack for the limitations of the browser.
- Default limit of two simultanious connections to a domain in IE
- Very limited access to the local file system
- Default limit of two simultanious connections to a domain in IE
- Security limitations to stop cross domain scripting
- Default limit of two simultanious connections to a domain in IE
It's going to be an interesting 12 months.