Friday, October 29, 2010

So What's the Fuss about Silverlight?

Perception is said to be reality and there has been a lot of speculation recently about where Silverlight is going and what Microsoft's position is. One of the reasons for this is the emphasis on HTML5 at the recent PDC conference. Unfortunately, that has led to talk and fear about the "doom and demise" of Silverlight. As a Silverlight MVP, what are my thoughts about this?

The HTML5 Story

First, let's start with the HTML5 story. It's a great one. I'm a fan of it, and I believe it is going to be a very positive force. The consumer-facing web is an enormous block of real estate that can only be enriched by providing a cross-browser standard that is far more current than the specification is today.

The problem is twofold: I don't think a lot of people really "get" what HTML5 is or does, and are trying too hard to make it solve problems it wasn't intended to.

If you read this post about a similar topic to my own, you'll see a link to this game written in HTML5 that is quite impressive. You'll also read that "It likely would taken about half of that in Silverlight" and that ... here is the kicker ... the developers "dealt with all kinds of browser compat issues."

The Promise: Cross Browser Compatibility

The Reality: Ummm ... Not Yet

Microsoft itself while embracing HTML5 managed to demonstrate some of the problems with HTML5. They showed how their IE9 browser used powerful graphic acceleration to provide HTML5 experiences at a frame rate much higher than competing browsers. I had to scratch my head there, because suddenly I've lost the consistency. It's great that IE9 does this, but what happened to a consistent cross-browser experience? The HTML5 promise falls short when the experience isn't consistent. If I want to reach my users, I have to code to the lowest common denominator and assume they're not going to be runnig this cool new version of the browser!

Just following the posts about audio and video and graphics I can't tell you how many examples I've read also come with which build of what browser it works on. "This only works with x build because of the audio features." That doesn't doom HTML5, but it sends a strong, "We're not quite ready message."

So What did History Teach Us?

Remember that old, ugly, out-dated HTML4 technology that HTML5 is coming to replace? The HTML4 specification appears 11 years ago: check it out yourself. How long is 11 years? It's a long time - it's before my 10-year old daughter was born. With that much time to digest the standard, take a look at the Acid 2 tests and let me know how far we've come for that truly cross-browser experience.

And we think HTML5 will somehow be different?

Again, don't get me wrong ...I like HTML5. I am taking a serious look at it and know it will be a force in the future. But as I tweeted earlier today, I have to ask ... "Will the real HTML5 line of business please stand up?" It's not there.

Oh, and, lest I forget ... HTML5 is markup. It's not a framework. It is popular to compare it with Silverlight, but Silverlight isn't just a way of rendering things ... it's an actual engine that runs business logic, stores data, and much more. I've written an object-oriented database called Sterling that runs in both Silverlight and on the Windows Phone 7 ... how easy would that be to build in, say, HTML5 for relational queries in offline mode?

My point is that I believe HTML5 is compelling for online content and document-based websites, but I'm nowhere near sold on the line of business story (or even the game story - there are some neat games but the frame rates are absolutely horrid compared to similar Silverlight and Flash games ... yes, Flash, I'm talking to you, too).

The Promise: Write Once, Run Anywhere

Do you remember the popular CASE Tools we were bombarded with in the 80s and 90s? The promise was that we could drag and drop some business logic on a service or use a pseudo-language and everything would generate to native languages for various systems and run everywhere. Of course, when we wanted to customize that, suddenly we had to crack open the tool and wade through obscure code and tweak it to behave the way we needed. What ended up happening is that the CASE tools began collecting dust in most cases and we went back to having different teams that would target different platforms. Most large corporations have this today - ever heard of the rivalry between the "Java shop" and the ".NET shop" in house?

One common trend recently is to tell me that HTML5 is going to be GREAT for phone applications because you'll write it once and it will run everywhere.

Do you really believe that?

Personally, my phone browser is fine for rendering 90% of the websites out there today. And I hate it. It is not a good user experience to have to use a pinch gesture to expand the screen and try to avoid accidentally clicking a link and then navigate somewhere and get something done.

Some of these sites are friendly and offer a mobile version. This is great. It makes a lot of sense to me for browsing pictures and flipping through articles. But this isn't accomplished by "write once." They might be using a single technology (HTML) but there are two pages, one for desktops, and one for browsers. That's "write twice."

I helped build a software company that provided mobile device management (MDM) solutions. We had to create clients for various devices such as Windows Mobile, RIM (Blackberry), Android, and iPhone (this was before Windows Phone 7 was released). So we invested a lot of time in looking at the best way to take a line of business application and penetrate the various platforms.

Of course, this problem had already been solved by other companies, and I think everyone would do well to learn from their examples. When I want to browse Facebook on the iPhone, I don't go to the Facebook page. I run an iPhone Facebook application. It wasn't written in HTML. It was written in Objective-C. Netflix has a streaming experience on the iPhone and it wasn't written in HTML either. Their version for Windows Phone 7 isn't HTML5, it's written in my language of choice, Silverlight.

What's my point? For rich, high-touch applications - I mean the ones with lots of functionality and interaction with the user - HTML doesn't cut it. And before we say HTML5 will solve it, you can make the interface you need with HTML4 and Javascript. It's a pain, but it's possible - and it also just doesn't feel nearly as good as having the response of the native application.

So we ended up doing what most successful mobile shops do. We took an idea, then we had an iPhone team write it for the iPhone, a Windows Mobile team write it for Windows Mobile, a Blackberry team write it for Blackberry ... you get the point.

If there was any "write once, run anywhere" code, it was the service layer. It turns out you can write a rich set of REST + JSON services that are very easy to consume and use across all platforms. That's the cloud coming into play, not HTML5.

Why I'm a Silverlight MVP

If I haven't convinced you that not many well-positioned mobile shops are going to start converting their mobile applications to 100% HTML5 anytime soon, let me share the story from a different angle. I was an ASP.NET developer and was helping build some pretty rich and interactive websites using JQuery, AJAX, and all of the latest and greatest technologies. The only problem was that a lot of companies are still running Internet Explorer 6.0 (yes, even with 9.0 coming out) and compatibility was an issue. It wasn't just IE6, though. Chrome and FireFox all had their subtle ways of "interpreting" the standards and we were burning development cycles trying to create a compelling experience that worked across all browsers (don't even get me started, Safari and Opera).

When I researched Silverlight, it was mainly from the perspective of improving the UI and also being able to truly write the UI once and have it run everywhere. That's all I was looking for and all I expected to get out of it.

Then I wrote the first proof of concept project, and the rest, as they say, was history. I was able to create a compelling experience so fast that my boss didn't even believe me until I demonstrated what I had done. We found it was incredibly easy to train the team and in no time were producing functionality we couldn't even begin to consider using the old HTML technology ... with fewer defects and in about 25% of the time.

You read that correctly. By my best estimate, transitioning parts of the web-based application to Silverlight enabled us to produce 4x what we did before and at higher quality. That is what led me to Silverlight. Frustrated that I had to dig to find this out, and seeing the public perception that it was nothing but a trumped up media player trying to compete with Flash ads, I set out to educate people about the platform through my blog, talks, and other venues. This ultimate lead to the Silverlight MVP award which I am thankful for because of the voice it has given me to share how powerful Silverlight is for serious, enterprise line of business applications.

So Why am I Sharing all of This?

HTML5 is a great technology and it will transform consumer-facing websites. I just don't buy that it is going to be a major player in the line of business world. Perhaps years down the road when standards start to coalesce and more tools are available, but now? The spec isn't set to be finalized until the year 2022. Yes, you read that correctly ... remember HTML4, 11 years ago? That's HTML5, 11 years in the future. Great things will happen before then.

However, I don't believe it is going to replace writing native mobile platform code. Silverlight is alive and well on Windows Phone 7 and will continue to thrive there as Java does on Android and Objective-C does on the iPhone. Let's talk economics - all of these platforms have application stores. Will HTML5 circumvent that? Will the platform truly transform to not need an application store because it's all HTML5? Is your third-person shooter game really going to run just as smoothly in an HTML5 engine? I don't think so ... only time will tell.

Let's forget the mobile side though. We aren't getting rid of laptops and desktops. They're here to stay, and you can't ignore how compelling that platform is for rich applications.

But that is where the playing field is different. Because I'm a Silverlight fan, I'll even use a competitive example: Adobe AIR. I don't see much speculation about AIR going away, when it is a platform for develping rich applications that run on different platforms.

Silverlight shares the same story. With the in-browser experience you can write rich, compelling, powerful applications that easily connect to services and drive user experiences in a short amount of time. I am able to write a fully-styled feed reader application from scratch that interrogates RSS feeds, shows them on an optimized grid and serves links to the sites and stores the data for offline reading in about 20 minutes. I challenge anyone reading this to do the same in HTML5 (and I'm not saying it can't be done - that would be a GREAT example I'll gladly link to when presented).

Silverlight in out-of-browser (OOB) mode is even more compelling. Now I can create a full-fledged application that runs even when disconnected from the Internet ... and here's the kicker: I can easily install it with a click over the web, and I'm confident it will run as I designed it on both a Windows and a Mac. I can truly write it once and run it on multiple targets.

That's a powerful story and I work every day for companies that see the value in that story. So while the speculation out there is that Silverlight is doomed, the project queue says otherwise and the applications you sometimes don't see are the ones driving critical business functions behind the four walls of the corporate intranet.

And the Final Word...

And as a final word, I do have to address the misconception that the PDC event failed to mention Silverlight at all. I heard the word "Windows Phone 7" multiple times, and short of XNA-based games, Windows Phone 7 is practically synonymous with Silverlight. So just substitute "Silverlight" for "Windows Phone 7" and you'll see it got plenty of coverage this go around.

I usually try to focus on technical articles but this is such a large topic that I felt I should share my insights and thoughts. Now I'm excited to hear your feedback as well! Please post comments below.

Jeremy, what's your position?

I believe Silverlight is the absolute BEST choice in MANY scenarios (but not all) and will continue to be a powerful force in the line of business, web-based application arena. I don't think it makes sense to replace web sites with Silverlight, and I absolutely agree that HTML5 is the technology to look at for media, content, and document-based websites and applications ... but for line of business? Give me Silverlight.

Jeremy Likness

50 comments:

  1. Very good post!

    In few weeks when all this 'Silverlight is doomed' fuss vaporizes everyone will point to this article as reminder.

    ReplyDelete
  2. Jeremy, excellent article and great points. The only thing I don't agree with is that "HTML5 is the technology to look at for media". Maybe it is for putting a video on your blog (if the codec issues will ever be solved), but I doubt it will deliver the kind of premium media experience needed for things like the Olympics broadcast, Netflix (DRM is nowhere in sight) and so on.

    What is happening is that things that were only possible with Flash and Silverlight are slowly becoming possible in HTML5 and Javascript. But Flash and SL continue to race forward. In a year or two, HTML5 will be where Silverlight 1.0 was four years ago, while the plugin technologies will continue to race forward with breakneck speed.

    ReplyDelete
  3. 1. I totally agree that too much is made of HTML5. It IS awesome. It IS NOT a silver bullet.

    2. Assuming WP7 has any degree of success, Silverlight (in some form) will be around for a long long time.

    However, as someone who's banking heavily on Silverlight as a web platform (see my startup http://scratchaudio.com) I am a little nervous about how quiet Microsoft is on the future of Silverlight in the browser. If (non WP7) Silverlight is relegated to a tool just for LOB apps, I fear it could be abandon.

    I think the question for me is, has Microsoft gone quiet on Silverlight (for the browser) because everyone is excited about the phone? Or, is the phone the thing keeping Silverlight alive? Hopefully the first... or neither :)

    ReplyDelete
  4. As years of IE have shown us, it doesn't mean one bit what the spec says.

    ReplyDelete
  5. From the user standpoint, having Safari grind to a screeching halt and my MacBook Pro switch graphics cards each time Xbox.com decides it wants to show me a splash page is bad. Having to install 87,000 different plugins and such is also bad. Not being able to view the same content in a clean HTML version on my iPhone is also bad.

    Give me content and the UI will take care of itself. For most of what it's used for, from the user's standpoint, Silverlight etc. is overkill. I don't care about your compelling user experience. Silverlight is not compelling. I don't care about your splash page, I want my content.

    ReplyDelete
  6. Jeremy, Thanks for writing this timely article. I was witnessing all the recent messages around the "strategy has shifted with Silverlight" and have to admit I also get concerned after investing a lot of time in learning and working with it, but the recent messages seem to be morphing from a single comment into the "Silverlight is dead" nonsense. I'm guessing that when MIX11 comes around some may be asking "why all the talk about Silverlight, what about x?". Thanks for weighing in.

    ReplyDelete
  7. Great article Jeremy, I totally agree on your points.
    I've worked over the years with some technologies - PHP, HTML, JavaScript, ASP.NET, VC++, WPF, Silverlight. The one I was truly impressed by now is Silverlight, I'm still amazed how fast some things can be done with it and how well it is architected. It works over the web and on different platforms! Maybe that's why it's getting so much flame lately...
    I'm going to say something straight - that the people blaming Silverlight, or saying it is dead are in one of these situations:
    1) They have no idea what it is.
    2) They just hate Microsoft.
    3) Silverlight/WPF have a steep learning curve, lets be honest they are not so easy to learn by the average web-developer. You tend to hate something you don't understand ...
    4) They invested in something else already and they feel threatened by the quality of Silverlight.

    ReplyDelete
  8. I'd like to believe you Jeremy, I really would, but I think putting the "Silverlight is dead" doom down to just PDC10 is hardly fair.

    Smoke signals have been emanating from Redmond for some time now: Smoke signals that make it clear that Microsoft have, to all intents and purposes, given up on Silverlight other than for Windows Phone, even before today's statement about the "change in strategy" from Bob Muglia (see MJF's blog).

    I'm only allowed 4096 chars in your comments so I'll just point out the following

    - Even Scott Hanselman has pointed out that the learning curve is steep. Developers don't have time for all the new crap Microsoft keep over-hyping and then dropping like a hot brick, especially if there's a steep learning curve involved and little real world demand.

    - Scott Barnes tweet about Silverlight being dead gained traction in the tech media. Microsoft's response? Say nothing except when really pushed dish out meaningless smoke and mirrors about "200+ engineers working on Silverlight and WPF". What's an engineer? How many of those are on Phone? Is P&P included in that?

    - Microsoft's own sites (even the Silverlight ones) didn't use the technology. Nearly all used Flash. If Microsoft didn't believe in Silverlight why should developers already working crazy hours on "the old stuff" believe in it?

    - The Silverlight initial pitch (check MIX07 keynote) was identical to the HTML5 one given 3 years later at PDC10. The only difference the word "Silverlight" was changed throughout to "HTML5"

    - The "silo" mentality has added to the learning curve pain. "MVVM is simple" is clearly unacceptable when 15 months on people are still arguing bout how to get it to work with this silo or that silo. Blendability, MEF or Unity, Silverlight Navigation framework or roll your own, which of 20+ MVVM framework do I use etc etc. All just have most developers saying "What a mess. This is too risk and takes too much time. Stick to what we know works"

    - "Silverlight is the new VB6". That's a quote from Ian Griffiths who does Silverlight training for PluralSight and did the official Line-of-business training for Microsoft!

    - Ray Ozzie, Chief Architect in Bill Gates old job, was the originator of that "Silverlight is Microsoft's premier UI" last PDC. He was Silverlight's main advocate within the company. First Microsoft say he's "moving to consumer products" then admit actually he's leaving just hasn't agreed a date yet.

    Remind me again why I should spend all my time and effort on using and promoting a technology that Microsoft have quite clearly decided to give up on!

    ReplyDelete
  9. @Ian ... those are all great insights, but I just have to disagree with the full-court press on the learning curve. I don't see people preaching the doom of the iPhone, and the learning curve for Objective-C isn't a walk in the park.

    I've programmed both Objective-C and C# and my experience is that C# is far more enjoyable and easier to learn (and I've coded 6502 assembly, C++, Fortran, Pascal, and lots of Java apps so I'm not speaking from a silo) ... and then we get to the UI. I don't see much out there that can hold a flame to XAML.

    Can someone please tell me which language is EASY to learn? Which one everyone agrees "just do it this way" and developers pick it up overnight and knock out great applications?

    The "easy" kits out there allow a lot of people to quickly write simple apps, or poorly architected complex apps.

    I guess the other caveat is in learning to be a really goood Silverlight developer you have to learn to be a really good .NET developer (via C# or VB or whatever) so while the framework might transition the underlying tech doesn't go away.

    C++ has been out for ages and you'll still find debates over the way to architect large apps - I just don't buy the "Silverlight is doomed because MVVM is complex" argument. ASP.NET was complex. It didn't stop people from writing a lot of bad software but if you think it was easy to learn to write GREAT ASP.NET applications then we're not talking about the same technology.

    ReplyDelete
  10. I think this is just noise Microsoft needed to hear... How can you build a great Web Lob App at this moment? Is it remotely possible now with HTML 5?? I know a lot of great Silverlight apps are being developed now, they are not visible yet because they are not presentation sites.

    ReplyDelete
  11. great post Jeremy - nice to get some balanced commentary in a sea of confused messaging from media, community and (unfortunately) Microsoft themselves. It's going to be an interesting few years - my guess is that we'll all start talking about Silverlight without distinguishing between it's target platform. You might be writing XAML/C# for Windows/MAC, WP7, TV, Car... at the end of the day Silverlight and WPF have introduced us to a great development plaform that can target platforms like no other technology. It isn't going anywhere.

    ReplyDelete
  12. Here are my thoughts on the matter... basically, I think Silverlight is moving to become a framework on top of HTML5... not a separate platform.

    http://houseofbilz.com/archives/2010/10/30/cross-training-in-silverlight-flex-the-future-of-rias/

    ReplyDelete
  13. If Microsoft had invested in HTML what invested in Silverlight, at this moment we would count with a c#-javascript compiler, html rich controls, Ria Services for HTML. Then writting HTML X line of business app in .NET would be as easy as doing it in Silverlight.
    The lack of tools for HTML 4 or 5 is because the big mistake Microsoft did wasting 4 years of development and lots of resources in a technology that is not going to be used.
    Other companies are investing in HTML since years, for example Google with GWT.
    Line of Business aplications in HTML 5 won't stand up in .NET in near future, that's for sure, but in others platform is very different situation.
    Microsoft lost a cycle of development in another market, this is common these days.
    If WP7 is not a hit, Silverlight will be just a useles waste of time and resources for everybody that worked in this technology.

    ReplyDelete
  14. Jeremy,

    Great post.

    Anyone who bashes Silverlight just does not know emough about it. If I were to listen to the tech media, I should be dumping all my Microsoft assets because the company is doomed. Really?

    What Microsoft gets is business, enterprise business and Silverlight is simply the most amazing LOB (line of business) developement platform available today.

    I have been a dot.net developer for 10 years, a web developer for 15 years and a silverlight developer for 2.5 years. Is there a learning curve for WPF, of course, but it is very similar to ASP.net web development as the markup and databinding concepts are identical.

    Silverlight is not difficult, it's markup and code. As opposed to HTML, javascript, css and of course browser compatibility issues.

    If you say MVVM is difficult, then I would say you don't understand it. You don't need a framework to do MVVM, it is simply a way to seperate concerns. The view model is simply the facade for the UI. Binding to a property is much simplier than trying to hook into event handlers.

    The biggest hurdle Silverlight faces today is not technical but political. It not a technical issue that is keeping silverlight off the iPad and iPhone, it's political. Microsoft needs something to differentiate the WP7 phone from the iPhone. Bill Gates viewed Silverlight as a threat to Windows dominance. Why because if this plucky little plugin runs on a linux machine, mac and windows the OS is no longer relevant.

    In the end if you have a tough business problem to solve and you are not using Silverlight, your solution is quite frankly a hack.

    ReplyDelete
  15. People fail to distinguish between a consumer facing web application and a line of business application. Your article clearly defines the two and demonstrates why HTML 5 & Silverlight technologies are distinct and complementary rather than competing.

    ReplyDelete
  16. Dude...nobody is saying HTML5 is perfect...or even complete...or even that it can do everything that Silverlight can do. But as long as MSFT trails APPL and GOOG in the happening mobile device/tablet space, Silverlight is not happening. That means HTML5 since there is no alternative. Imperfect or not, we have to live with it.

    ReplyDelete
  17. Wait till the Gen Y startups discover 1000 lines of Javascript on NoSQL won't pay the bills.

    ReplyDelete
  18. Excellent article Jeremy. In my 22 years of LOB experience, I have never had it better than I do now with SL 4 + MVVM + WCF RIA + L2S. I'm currently leading a team that is developing a $1 million (budgeted) SL4 intranet LOB app. We're 50% done and the results are incredible. We have put the completed modules in the hands of the users and they love the UX. And we have built it in what I estimate is 50% of the time it would have taken using another platform. In fact, this job was bid out to a non-SL firm in India and their estimate was 3x the effort and 2x the cost.

    If MS drops SL for LOB applications (a) I will be extremely ticked off and (b) it will be one of the dumbest moves they have ever made.

    ReplyDelete
  19. I wondered how long it would be before someone leapt in with an "MVVM is so simple" post, accompanied by the usual finger-pointing that if people have a problem with it then they're stupid.

    Yes, the whole point is that MVVM IS simple. That's exactly why it's so problematic. It's so simple that doing real world stuff in it turns out to be problematic. If it really is so simple and understandable the subject would not STILL be being argued about 15 months after the arguments and debates first started on an almost daily basis. Nor would we have over 20 different "MVVM frameworks" out there all doing things slightly differently with different weaknesses and strengths that the newbie has to try and analyse and pick and choose from.

    THAT's why folks look at the stuff, see the complexity of some of the "simplify your usage of MVVM" frameworks (I mean, have you looked at the amount of stuff to wade through to fully understand PRISM??!!!) and just walk away. I've been at enough potential clients (dev shops) to see exactly this thing having happened to know the reality of the situation. People are faced with all those silo's I talked about (which commentors conveniently don't bother reading before rushing in to criticise) and not even a hint as to how those silo's can be properly integrated with an MVVM framework.

    And I'm sorry, but moronically repeating the mantra "MVVM is simple and if you don't get it you're an idiot" helps nobody. At the risk of name calling, you're the idiot if you think it does :-P

    ReplyDelete
  20. Hi Jeremy,

    It's clear from your post that _you_ like Silverlight, but it's not _your_ support that I'm worried about. It's the support of the higher level decision makers at Microsoft.

    MS has finite resources. I'm concerned that switching a core developer to work on Windows-Phone-7-Silverlight, or on new HTML5 tooling support means they aren't available to add features to web-desktop-Silverlight or WPF.

    Your post was about Silverlight, but what about WPF? Do you agree with former SL/WPF evangelist Scott Barnes (riagenic.com) that MS is neglecting WPF? Isn't there a risk of the same thing happening to Silverlight-for-web-and-desktop, now that MS is chasing the next "bright shiny things" of SL-on-WP7 and HTML5?

    There is a cheery "What, me worry?" tone to your post that I think is too dismissive of legitimate concerns. Anyone using any MS technology who isn't at least a little worried may have been spending too much time buried in the technology. It's hard to maintain 100% confidence in the judgments made by a company that pulls off debacles like the "Kin", or when I regularly read things like today's InformationWeek article "Microsoft Looking Like An End-Stage Company".

    Alan Cobb

    ReplyDelete
  21. @Alan,

    Those are good points. I think people are legitimately concerned, but I also believe that what we're facing here is a little bit of the traditional perception vs. reality.

    The perception is that Microsft might be abandoning Silverlight and moving to HTML5. The reality is that it's just not going to happen overnight nor would it be practical. HTML5 absolutely won't disrupt the desktop space anytime soon.

    Just because they fail to support it 100% at a conference doesn't mean it's dead because there are a lot more technologies coming out of Redmond than just Silverlight and WPF.

    There are applications being built on the desktop and for the desktop. I focus on Silverlight because that's my area of expertise but see plenty of jobs related to WPF. Again, my space of focus is mostly enterprise and business, not entertainment or consumer-facing (I do work on that, but by far the line of business applications are the bulk of my experience and expertise). What I see in the business, commercial, enterprise space is a LOT of WPF development. Regardless of whether it's being announced on stage or if there are a dozen speculative blog posts about its demise, the reality is that the corporate marketplace still sees value and is demanding applications to be built with those technologies. And that means they're here for awhile and will be supported by those corporations long after the official support from Microsoft goes away.

    What is the disruption between Silverlight 4 to Silverlight 5 vs. Silverlight 4 to some other set of tools? I've been writing web software for well over a decade. I wrote VB6 business objects, used XSLT, wired in JavaScript and interfaced with AJAX and JQuery libraries. I've done PHP and MySQL and plugged into SQL Server 2005, 2008, and also written object-oriented and document-based systems.

    I don't say this to brag, but to emphasize that as a professional I am not tied to the success of Silverlight. I certainly will do my best to help it continue to be successful because it is a powerful tool, and when I find a better tool to target the needs then I will be the first to set it aside and move on.

    I'll worry about Silverlight when customers stop asking for it, not when the blogosphere speculates on its death. For every 100 comments on blogs that "Silverlight is dead and was a lame attempt to keep up with Flash" I see an equivalent amount viable and signficant line of business projects that are Silverlight-based being requested, released, announced, etc.

    I'm not trying to be obnoxious about it. I know a lot of Silverlight developers and there is a lot of Silverlight work so I just don't see an impending sign of doom. But regardless of what happens I know for a fact technology will shift - it always has, always will - so I will continue to remain lock-step with the trends and shifts.

    Am I dismissing concerns? No. But am I concerned ... again, why should I be. The pipeline is strong. Windows Phone 7 has a lot of potential. I can't predict how successful it will be but again, as a developer, I learned a lot of skills over the years and tossed a lot. I don't do any 6502 assembly anymore, RPG/ILE is no longer part of my daily routine, XSLT transformations are less popular but I still receive value from having learned regular expressions. None of thses technologies just disappeared, they all transitioned.

    So again, my point - worry? Why? If the projects start shifting, we'll shift, but I'm just not seeing it now, and I don't see where they could shift to. I don't see many requests for WinForms apps, they are mostly WPF, and I see lots of Silverlight but have yet to see a successful HTML5 line of business play (and again, not saying it doesn't exist - just haven't seen it). There will be plenty of time to see how the sands shift before we have to lose our footing.

    ReplyDelete
  22. @Jeremy

    Hear hear.

    @Ian

    Look at Phone, look at Lightspeed, they're Silverlight. Microsoft turned out SL4 in record time, they're investing heavily in it.

    I've just done 2 pieces of work - 1 jQuery/HTML4(let alone 5!) the other Silverlight on WP7, both do basically the same thing. The HTML version took 2 weeks. I turned WP7 app was turned out in under a man day.

    Microsoft had to make a big noise about HTML5, to be seen to be keeping abreast. If there's any confusion it's in the minds of People like Mary J Foley who don't get the difference between a div tag and a .docx.

    ReplyDelete
  23. > "... as a professional I am not tied to the success of
    > Silverlight ..."
    >
    > "So again, my point - worry? Why? If the projects start
    > shifting, we'll shift..."

    Jeremy, please do not lead off with that in the next client meeting where you are proposing a major Silverlight project :).

    The strategic choice of Silverlight versus Flex/Flash, HTML5 or Objective-C, etc. is a high-stakes bet for most clients and individual developers.

    A very bright guy like you may find it easy to quickly learn XAML, Blend, MVVM, Prism, RIA-Services, EF, etc., but most normal developers do not have the time to do their regular jobs, plus devote months or years to mastering every new technology. Bet on the wrong horse and you've just wasted a lot of time from your career.

    For another perspective on this, see Bart Czernicki's blog post "Top 5 Reasons Why Microsoft Completely Screwed up their web strategy with HTML 5". Bart is almost apoplectic in his reaction to how MS has handled the HTML5 vs. SL positioning at the 2010 PDC. He's invested a lot in Silverlight: He wrote a SL4 LOB book for Apress.

    Alan Cobb

    ReplyDelete
  24. Man, a big mistake was made here from MS, the big chiefs who made it should jut resign, they don't know what they're talking about. It's stupidity at it's peak.
    I mean, where are he MS tools for html5??? What is the MS strategy regarding silverlight-html5, the one their customers didn't know about?? The best devs embarked on wpf/silvelight, trading those for html5 is like trading katana samurais for peasants with wooden sticks.

    ReplyDelete
  25. Nice post Jeremy. It just feels like you wrote what I was thinking.

    I've done many years writing HTML apps with Javascript in PHP, ASP and ASP.NET and got tired of all the browser issues, the 'do CSS, no tables' discussions and the lack of all tools support. The last couple of years I shifted gears and worked on less visible stuff like ESB's and SOA.

    Once I saw Silverlight 2 and its potential, my enthousiasm for UX and LOB grew and I hopped on the Silverlight bandwagon. I disagree that it's more difficult to learn than any other language and think it's far easier to learn C# and XAML than it is HTML, JavaScript, CSS and all cross browser differences. Many people nowadays don't know much about HTML5, which means that would need to learn all of that as well, and probably do it wrong the first couple of times.

    I'm coaching an intern at my company who's little experience with .NET and no Silverlight experience at all. I was impressive to see what he could come up with in just 6 weeks. And for the MVVM discussion, MVVM is an architectural pattern for building applications and like all architectural patterns it takes some getting used to and there's no single way for doing it. There are far more patterns you can apply to building LOB applications, like MEF brings to the table for instance.

    ReplyDelete
  26. I think Bob Muglia made a BIG mistake with his statement to the press.
    He has just put the fear into every developer of LOB apps that were considering moving to Silverlight and probably killed the Phone 7 development in the process.
    Not only that, senior management at every company on the planet will never support a SL based strategy going forward.

    The problem for Microsoft is that they have no alternatives.
    They have no tools for building these HTML 5 killer applications.

    jQuery is a joke for building serious LOB apps which leaves Flash or GWT.
    Flash is going the same way as Silverlight, which leaves us with GWT, which now Java is in the hands of Oracle, doesn't exactly inspire confidence...

    Bob Muglia showed off the System Center Suite of products at MMS in Las Vegas in April.
    Are Microsoft re-writing these in HTML 5?

    ReplyDelete
  27. Muglia screwed up this one. MSFT has created a large ecosystem around Silverlight: Major media experiences like Olympics; Line of Business apps to run on your desktop or across the web. WCF RIA Services; 3rd party trainers; their own beta product, VS LightSwitch; Integration with Sharepoint-- this is a small list of the user base / appliction ecosystem built around Silverlight over the past three years.

    Now, with no supporting tools, with no clear direction of just how one should start using MSFT products with HTML5, one statement by one guy is throwing the user community into a tizzy.

    Muglia appears to be dismissing the mature ecosystem, or willing to let it fragment and disappear as CTOs and developers loose interest for the next shiny object, or worse for Microsoft, say screw it, start using tools and languages, like Ruby, GIT, JQuery to write their apps.

    Muglia, as a leading officer of the company-- you did a heck of a job-- of confusing the user community-- YOUR CUSTOMERS

    Perhaps Silverlight will go the way of the Kin, Microsoft Business Frameworks, WinFx, Oslo, and other projects found in the dust bin of MSFT changed strategies and failed projectsover the past decade, but I doubt it.

    Time for Muglia, Guthrie, and Jesse Liberty, Pete Brown, Tim Heuer, and others in DevDiv to give a follow up message.

    ReplyDelete
  28. If website requires Silverlight, I'll go elsewhere. Same as if a website required ActiveX or some toolbar or Facebook or Google Gears. Flash, I'll consider it, but ONLY because I have Flashblock and can choose on a site by site and app by app basis whether to let it start up.

    I've been through this whole thing too many times. It's not my job as a user to make your job easier.

    ReplyDelete
  29. Jeez. Get to the point. Provide a summary paragraph. I'm too young for this.

    ReplyDelete
  30. This is more than a perception problem.

    I've wanted Silverlight to be great since I first heard about. The prospect that we can port C# app code to work in the browser was exciting.

    But the problems are legion. They stem from an insane (from my perspective) focus on a small ~4MB installer. Sure it's quicker to install if it's smaller. But the gain is tiny - a few seconds on a modern connection. Meanwhile the sacrifice if *huge*: vast tracks of WPF/Silverlight incompatibility. As a result it wasn't possible to move apps to Silverlight cost effectively so uptake was restricted. And the pace of what was delivered was really slow. Through versions 1, 2 and 3 the only thing you could really do was create more media players (really, how many does the world need).

    It didn't have to be that way. However we now know why - to make sure a phone is supported.

    It's just not worth the effort investing in Silverlight.

    ReplyDelete
  31. I use ESRI Silverlight framework for creating maps. It is awesome and far superior to anything that was made by ESRI or anyone else. The learning curve is steep but ESRI has been simplifying things as new versions come out. It is now quite easy to get simple mapping apps out in a few hours.

    I have been creating maps with ESRI's HTML/javascript ArcIMS for 10 years and there is just no comparison to be made in the results.

    I am currently writing a mapping framework for HTML5 using the CANVAS and SVG elements (see: www.avronp.com) but there just is no way that HTML5 will be able to compete with Silverlight even given the standards it is supposed to reach in the future. So I couldn't agree more with the article.

    However, my fear is MS. In the last 20 years I have experienced their dumping of technologies (eg: DDE>OCX>DCOM>OLE>ActiveX...) since their sole concern is profit and market penetration. If there are too few SL sites they will dump us, with or without HTML5. And to add to the rumours, word has it that they are out to buy Adobe - so we might all have to go over to Flash.

    ReplyDelete
  32. the problem is not SL is not a better technology. the issue is the bone heads in MS leadership are clueless.

    ReplyDelete
  33. HTML5 is something that won't be completely ratified for some time -- sure. What makes you think Silverlight is so stable (development-wise?). I bet it does the version hop like .NET did (and still does) for some time. IF it doesn't die out first -- which, despite your belief in it, it just might.
    If you're pushing Silverlight as a mobile device programming platform, perhaps you need to re-read what you wrote yourself: for WINDOWS mobile only. With the Apple and Android competitors out there taking more than just the lion's share of the market, any dev worth their salt has to see Silverlight in the same vein as IE6 -- sure, you can do stuff a way that's comfortable for you, but your app will be stuck in an era, people will stop using it because the support on devices that they want to use is just plain lacking.
    Silverlight offers the user nothing that she can't get from a Flash app. As much as I'm no flash fanboy, if I were to push for support of anything, it would be the one that takes the majority share of production and devs -- here's a hint: it's not Silverlight.
    Also don't take me as a pure protagonist: I believe in the best tool for the job. I've just yet to see Silverlight fulfill that criteria, mainly because the user will be confined to a Microsoft-based OS and will probably get a sub-standard (if any) experience on a non-Microsoft browser. This is not good for the user. It's not good for the developer either -- if you have to force your users into a corner to use your programs, chances are they'll just back out.
    At least with HTML5, the rendering can be done by anyone who can read the specs. Not just Adobe or Microsoft. And there are plenty of people out there who can be bothered to read the specs and provide robust HTML5 containers.

    ReplyDelete
  34. I'm tired of Flash, Silverlight and the other crap that's out there...

    ReplyDelete
  35. Great post.

    "Then I wrote the first proof of concept project, and the rest, as they say, was history. I was able to create a compelling experience so fast that my boss didn't even believe me until I demonstrated what I had done. We found it was incredibly easy to train the team and in no time were producing functionality we couldn't even begin to consider using the old HTML technology ... with fewer defects and in about 25% of the time.

    You read that correctly. By my best estimate, transitioning parts of the web-based application to Silverlight enabled us to produce 4x what we did before and at higher quality."

    X2!!

    ReplyDelete
  36. @sirius - you can't please everyone. If the installer was any larger, you'd have everyone complaining about how large and impractical it is. I'm not sure the issue of lack of parity between WPF and Silverlight is entirely valid - they are converging as it is, but the differences are the differences between a native desktop application and a cross-browser one. You also are showing you're not really familiar with Silverlight if you really think the difference between version 2 and version 3 was playing more media - that shows a tremendous gap in your knowledge about this so I can only assume you're speaking from hype and hearsay now rather than personal experience.

    @davydm, I don't think that Silverlight is stable, I know it is - that's the main work our shop does, and we do a lot of it. The version hops are welcome as they've consistently added tons of features and the hop from 3 to 4 was painless with backwards compatibility.

    I'm not pushing Silverlight as a mobile development platform. It is THE platform for Windows Phone 7, and there is nothing wrong with that, no more than the fact that Objective-C is THE language for iPhone or Java is THE language for Android and RIM. The framework is hardly stuck in an era (if anything, it is blowing forward at a rapid rate, far faster than the HTML5 spec will be able to keep up).

    There are far more .NET and C# developers than Flex/Flash so it is an easy decision for IT shops to focus on Silverlight when there is so much knowledge transfer.

    The idea that Silverlight is confined to a Windows-based OS also shows you are not really familiar with what you are talking about: it runs just fine on the Mac OSX operating system. This is why so many companies want line of business applications because they can write them once and have an offline app available to both platforms.

    Great dialog from everyone, appreciate the response (except for of course those who choose to make senseless comments that provide no value whatsoever and hide behind anonymous posts).

    ReplyDelete
  37. Let me say just a few words...

    Silverlight = Microsoft
    HTML5 = World

    What technology you want to be part???

    The answer it's easy... HTML4 is 11 years old, because it's a public standard, silverlight it's a product of microsoft... Nobody knows what will happen to it tomorrow...

    I have a few examples of "amazing" products of Microsoft.
    -Visual Basic 6
    -DCOM
    -COM+
    -and more...

    Do you remember? Salvation's technologies...

    Silverlight and HTML are very different technologies, we can't compare them.

    About "Coding twice":
    Your Silverlight application for desktop at 1360x768 looks well on a phone at 960x640? (iPhone 4 has has the largest resolution today)
    Can you navigate comfortably that web in your phone?
    I bet you need to "optimize" your application for a cellphone. (And optimize means write twice)

    About "Business logic":
    If I not misunderstood, you have business logic in your frontend... Are you sure you want business logic in your presentation layer?
    I don't want business logic on client side!

    My conclusion:
    I bet Silverlight will die before html5 or at least microsoft will change the "ideology" (marketing) about it, while html5 will grow up and it will become the next standard to develop web sites.

    "HTML5 comes to stay with us today and with our childrens tomorrow ;)"

    I understand you, you love Silverlight. I love my clients...

    ReplyDelete
  38. Great post Jeremy. Really cool of you to share personal experiences about your transition from ASP.NET and Silverlight.

    ReplyDelete
  39. Nice work. My sentiments exactly. The notion of returning to building business apps in HTML/Java is akin to vacationing in Afghanistan.

    ReplyDelete
  40. boom. headshot.

    @Adrian:
    "Silverlight and HTML are very different technologies, we can't compare them."

    -- then why are you? If you wanted to make that point, you didn't need any of the rest of what you said because it requires that comparison.

    -- with respect to your 'amazing technologies' rip .. you left out .Net. Was that not amazing enough for you? And that's beside the point: those technologies were good for the time, and regardless of their purist-awesomeness-rating (which is ironic, that a purist would defend such impurity as 11yr old HTML standards), were widely adopted and relatively well-received.

    ReplyDelete
  41. "I've been through this whole thing too many times. It's not my job as a user to make your job easier"

    Well said.

    ReplyDelete
  42. LINQ2SQL then LINQ2EF
    WPF then SL
    SL then HTML5

    please dont kill SL, i have invested time and money on it!

    ReplyDelete
  43. Honestly, until they add either IOS or Android we should be approach SL cautiously. I'm not a big HTML5 fan, most of what I do in SL I can do in HTML pretty easily. With Mac talking about IOS on desktops and laptops I gotta wonder whether this is short term marketing of a long term problem with SL.

    I can say this definitively, my dream of what Silverlight could do and could be has died. I just have to accept what it is, a Microsoft product for a Microsoft platform.

    ReplyDelete
  44. You guys just dont get it. Silverlight is dead. Microsoft does things just to be part of something even if they dont have plans for it. Silverlight is one of it.
    From the way microsot has played in the past, believe me, Silverlight is long dead.

    ReplyDelete
  45. Prism, once you get it is simple. The getting it part causes confusion. Silverlight is simple. It will become complex later on when more uncommon tasks are needed. If you have a prestructured design pattern that lets you easily add/remove/modify parts then the manageability of a complex application and plugability of parts into it makes life easier for present and future demands of an application and its management.

    Prism is a flexible design pattern to let you do just that in Silverlight and WPF. And Prism 4 is even easier to pick up than previous versions.

    A lot of coders are used to picking things up on a fly. Its usually just a matter of syntax learning. Not much of a learning curve. Prism is not like that and may seem hard. Coders have to do something they aren't used to doing and really haven't done since their school days. Its called studying. If you take the time to study Prism first before jumping into it you will find that it is easy for you to code in Prism and you wouldn't want to use any other pattern. Its worth it. You can use Prism 20 years down the road, it is that flexible for future design.

    The pattern is truly designed with the future in mind and present demands as well. It is very beautiful work and should be the standard in application construction.

    Silverlight is love. It can not die it is the dream of developers realized and getting better. Targeting multiple platforms with one write up. Not having to go through a ton of loops and work abouts to get the application working on multiple platforms. Having the power to write up tasks you need performed even uncommon tasks and it all is done from one application and it'll work on multiple platforms. Silverlight is the best thing to come along that meet those needs for all kinds of applications and its getting even better. I am one that see it as the development platform of the future. Write once, target many.

    I think MEF as an added compliment to make Prism Silverlight applications pluggable is better to use than the Prism default DI method. MEF doesn't come with the UI component that Prism does. The two are compliments and someday they will most likely become one, it make since for that to happen and the name will be Prism.

    Silverlight using Prism is the best multi targeting development platform, it has to be highly supporthed. Too many of the best in te field, worldwide love it and prefer it. It should be the standard.

    And for dynamic web applications its better than php/html5. When your web application needs to be online and offline, talk to other servers, and have a bevy of other present demands for real-time communications and demands to take my web app with me to multiple devices and PCs with different OpSys, offer a smokin' UI along with the need to quickly adapt to changes in demand and in the industry all while still being easy to manage and pluggable there is no other platform that meets all those needs in a cleaner, easier, consistent manner. The java, php, etc worlds make having an application that needs to do all these things extremely ulcer producing, not Prism/Silverlight.

    For those whose applications are web based with offline client needs, multiple device needs and cross server and cross platform needs this is too powerful of a development platform to drop or even consider dropping.

    We really need Microsoft to spell out to those who aren't device only developers how important Silverlight is to the company and that Silverlight for all the ways its used today, not just WinPhone development, will continue to have strong innovation and support at Microsoft. That SL is very important for all forms of SL development, not just devices, and will be fully supported, that there are no plans to not do so.

    ReplyDelete
  46. Lets not forget about the "XML Will Rule The World" phenom that promised xml would be all things to all persons and make eveyrthing else (well almost everything else) obsolete when in reality it turned out to be just another tool of many. A useful tool but still just one of many.

    Silverlight will be around for a while and when HTML5 hits the mainstream mark it to will be just another tool of many.

    Great piece BTW

    ReplyDelete
  47. Good post Jeremy!

    HTML5 and Silverlight are not competing with each other, so HTML5 cannot replace Silverlight (or flash for that matter). Browsers will always need plug-ins to offer a super-rich experience. The plug-in is optimized for the browser/os and can deliver a 'desktop-like' UX, but it would be a mistake to have browsers and the HTML5 standard try to do all that.

    Also, the mobile and LOB markets are emerging and apps and embeds will reply more and more on Sliverlight, Flash / Air, etc.

    The worst aspect of web development is inconsistent browsers (render, DOM, etc.). I wonder how much time the world wastes debugging and ensuring a consistent UX.

    The 'write-once, run everywhere' in not realistic in most cases as you mention, but a properly designed architecture can leverage a common model. So maybe you design 2 UI views, so maybe it is a 'design-smart, write-the-minimum, run everywhere you designed it to run'

    6502 assembly, I can remember those days, 8bits 1MHZ, 48KB, 160K floppies - 20edfd

    ReplyDelete
  48. Microsoft did this to Windows Mobile too. With out any kind of notice, they just dropped it (as far as future advances).

    I think it is a bit funny that this is happening to Silverlight now. No one really cared (except for the mobile developers) when it happened to Windows Mobile.

    No no one really cares (except for the Silverlight developers) when they drop Silverlight.

    They have done this one other products as well (ie Linq-to-SQL).

    Eventually Microsoft will have to start providing end of life/evolution dates for their technologies or people will get more and more mad.

    ReplyDelete
  49. Jeremy,
    It's nearly 1.5 years since your blog post. Have you changed any of your conclusions about the future of Silverlight? It seems the HTML5 hype machine is beginning to go into overdrive.

    ReplyDelete
    Replies
    1. The answer is yes. Unfortunately, while I do see Silverlight on the decline, I still don't see HTML5 replacing the gap. I've heard the phrase "Write once, suck everywhere" meaning there just isn't enough support baked in yet, and you still have to target implementations. HTML5 is still a mess but it's getting there. Instead of writing everything in HTML5, it looks like people are writing their Windows Phone apps, their desktop apps (Silverlight, WPF, take your pick), their Android apps, their iPhone/iPad apps, and now their Windows 8 apps. :)

      Delete