Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Recently I have read some articles/blogs/comments about the development and hist

ID: 642479 • Letter: R

Question

Recently I have read some articles/blogs/comments about the development and history of WPF and Silverlight. In some forums many developers and users criticize the performance of WPF applications (for example Visual Studio 2010). Actually the market share of Silverlight in comparison to Flash is not very high. At PDC 2010 Bob Muglia said something like "our Silverlight strategy and focus going forward has shifted...." and Microsoft wants to push HTML5 in the future.

Additionally, Microsoft has announced HTML5 being a core part of the Windows 8 and Windows Phone 8 ("Mango") platforms.

Recently I have started learning Silverlight and now I must ask myself, if I should continue investing time in learning these (in my opinions) very nice and powerful technologies!? Does they have a future? Does (Windows) desktop (client) applications have a future? Does so called "Rich Internet Applications" have a future? Or will HTML5 become the "absolute truth" in software development?

What is your opinion and what do you think?

Explanation / Answer

Silverlight + Flash vs HTML5. Oh boy. There's been a TON of discussion around this one.

Let's focus on Silverlight (though many of the same arguments can be made for Flash). Is it dead in Microsoft's eyes? NO. Just watch the recent Firestart event, specifically Scott Guthrie's keynote (Plenty of new features coming)

What it gives you:

The ability to write Internet apps (and desktop if you use Out-Of-Browser) in your favorite dotNET language, today.
Give your users highly interactive and rich interfaces across all major browsers and platforms in a consistent manner, today.
Access to advanced APIs on the client (this is a fairly weak argument as JavaScript always has new libraries being added and it is pretty awesome).
Windows 7 Phone programmability - Silverlight is one of the two primary "native APIs" to the WP7. That's one device at least that you can build apps for natively.
The downside:

Mobile - There are a ton of mobile devices that Silverlight will NEVER be on. Not gonna happen.
Microsoft - Let's face it. Lots of people will refuse to use it just because it's Microsoft. Some of your users will refuse to install the runtime because it's Microsoft. It's dumb, yes, but it's a fact.
Oh there are others. Do I really need to iterate all the down-sides?
HTML5 will answer many (if not all) of the downsides we can think of for Silverlight. But what are the downsides to HTML5:

It's not a finalized spec. Yes, many browsers implement a lot of features of HTML5, but many browsers don't, or many do it in different ways. And even if they do implement it today, there's no guarantee the spec won't change over the next few months/years.
It's not 100% ready today. Again, there is lots of talk about what HTML5 will bring, someday. But for a lot of stuff, it's just that. Talk. While some CORE stuff has been done (animation, graphics, etc), there are still a lot of pieces that are WAY up in the air and nowhere near being standardized on every implementation yet (hardware API access for devices like accelerometers for example). You can start using some of these pieces today, but you will be locked into certain browsers, and again there is no guarantee you won't have to change your code as the spec approaches finalization.
Browser consistency - If you think HTML5 is going to be exactly the same across all browsers/devices then you are delusional. Every browser will implement it slightly differently and you will need to have code to detect the browser and insert the appropriate "interpreter". It will be easier to detect the browser I'm sure, and I'm sure libraries will help (like JQuery does today), but it will still be an issue.
App Stores - The fact is that no one is going to buy your HTML5 app like they do with Apple apps today. If you want user's to buy your app through an App Store then you are going to need to write to the device's native library. Again, there's been a ton of debate around this issue, but the fact is that all modern mobile devices provide browser access and browser-based apps just don't have the appeal of a native app. Apps built today using HTML/CSS just don't have the appeal that their native counterparts do.
The way I see it, Silverlight gives you the "rich client" ability today. You don't get access to every device (especially mobile), but for certain classes of apps it's a great choice and will remain so. HTML5 will be a serious contender very soon and I strongly encourage everyone to learn it. You WILL need it.