Microsoft MVP Logo

I had this post brewing many months ago, back when Silverlight's future was bright and adoption was great. Then there was this little statement by a Microsoft executive, a very unclear clarification by the exec and an even less clear direction from those involved in the development of Silverlight & the tools. Everyone was confused and started calling for "the end is near" with Silverlight only to have Microsoft say throughout the summer of 2011 "just wait until the BUILD conference, it will all make sense." Then only to have virtually the phrase "Silverlight" to get almost zero play and talk about WinRT and Metro apps. Personally I was very frustrated as I wanted instant news, but I decided to hold back my thoughts until I felt like I had a better grasp on what was going on. I'm still a bit confused on some stuff

Microsoft usually does a fantastic job on marketing their products. But with this issue, talk about one of the absolutely worst handled things ever. You've got developers, Microsoft's biggest proponent, being left out in the cold with customers asking "should we do this project on Silverlight?" I wish someone would have stood up and rebutted all the rumors. We were left to outsiders, like this phenomenal post, to get an idea of the big picture. Some things are still a bit unclear to me.

Silverlight Isn't Dead

So many people seem to think the cool thing is to say Silverlight is dead. I've got a good friend who knows I'm a fan of Silverlight and loves coming to me and saying "Silverlight is dead mother f---er!" I don't get the best vibe from people within Microsoft who seem to think Silverlight is a new 4-letter word which is quite disappointing. At any rate, we are where we are today. For me, and from the more Silverlight-in-the-know people that are out there, it seems the consensus is that it isn't dead. There are some great posts on the subject by some leading Silverlight folks out there... I suggest you read them:

Personally don't think Silverlight is dead and will be around for quite some time. When is a technology dead? It's when people stop using it, when you lose critical mass and when you don't have support for it. Microsoft recently shipped the Silverlight 5 RC. It has incredibly strong development tools in Visual Studi0 2010 & Expression Blend. There are some fantastic design patters patterns that have emerged. It's the best way to stream HD video in high quality with the best user experience (ala Smooth Streaming) to clients and has been used for some major events like the United States Presidential Inauguration in 2009, NCAA March Madness & the Olympics to name just three.

You are free to disagree but I don't think I'm sticking my head in the sand with this point and acting like an old guy saying "Why do we need something new, I all this old stuff we have works great!" I'm still happy with Silverlight and plan to keep building with it. What I thinks is somewhat interesting and misguided are all the people who are saying Silverlight is dead compared to HTML5.

Now let me transition over and talk a little about why I still like Silverlight over HTML5 & my take on where they fit in the picture for us.

Why I love Silverlight over HTML5

OK, time to flip 'em and toss my cards down on the table: I love Silverlight & I can't stand JavaScript. I don't have much against HTML5 but what I'm not a fan of us the development and architecture experience. I'll come back to that... why do I love Silverlight. Well, I've talked about it before, but specifically I love the data binding capabilities, I love the MVVM design pattern, I'm quite happy with the development tools (Expression Blend & Visual Studio), I love the prototyping capabilities that SketchFlow brings to the table and so much more. Personally I feel like I can whip out a working business application in a fraction of the time if I built it using a classic browser based app (ASP.NET/HTML/JavaScript). After a month or so with Silverlight I found myself working hard to fight the "I've got this hammer, now everything looks like a nail" feeling. I could go on, but you get the picture.

So what' s my issue with HTML5? Admittedly time will likely cure this but for me, the development experience is atrocious. All your coding is done in an interpreted language, JavaScript. JavaScript development is just plain painful. Feel free to disagree, but for every one of you, I'll like up 1,000 more who hate it. There's too much magic in it, the debugging story is pathetic in all the tools that are out there. The development tools we do have are no where near to what we get with real typed and managed languages I'd so much rather be back in my former life as a Java developer than work with JavaScript. Will the tools get better? Sure... and who will have the best ones? Microsoft of course, they always give us the best development tools. But I've seen vNext of Visual Studio, currently codenamed "Dev11" and, and I'm still not impressed with the scripting development. What about real design patters? How about testing or even automated testing? It sucks... totally sucks.

Like I said, time will likely cure most of my pains (crappy dev tools, no design patters, good testing architectures).

But wait, one last thing. People like to tote the line "write once, run everywhere" when building HTML5 apps. Please... if you are naive or young enough to believe that, I've got this swamp down the street from me I'd absolutely love to sell you. Fact is there are at least three major browser vendors and while there is a spec for HTML5, no one wants to build the same mousetrap... they all want a better mousetrap. I've lived this "write once, run everywhere" life before. In the late 90's I worked for a startup who had a proprietary website administration tool called AdmiNET. It was written in Java and at the time Sun Microsystems was running a promo that if your app ran on 8 different platforms, they'd advertise your app in the Wall Street Journal. There were so many "if this platform then..., elseif that platform then..." to drive you nuts. Sorry guys, that's not following the mantra of "write once, run everywhere" and if you think that HTML5 is going to be that savior, you're living in a fairy tale land.

A while ago I posted a little quip to Twitter that was picked up in a publication and posted as my official take. Man that was unfortunate... but there was some truth to it. I said something like "Do you know why they call it HTML5? It's because it, the dev tools and the user base, is always about 5 years away." Personally I still feel that way... maybe not 5 years away, but we certainly aren't there today!

Where does HTML5 Fit in the Picture?

Ah, the big debate where everyone wants to chime in. Microsoft is dead on: want to create the best cross-platform experience on the web? HTML5 is the way to go as virtually every browser. Silverlight is most certainly not the answer. Where I don't see HTML5 is creating robust and complex business applications and such. Can you do it? Sure... I'm sure you can. But writing complex client-side business logic in JavaScript (recall people, it's called "script" for a reason), I just don't see that being a good idea. It makes much more sense to build HTML5 anonymous public facing sites than it does to build Silverlight rich sites because lets face it: why would you cut off a sizeable chunk of your potential audience just to pick one technology over the other.

What I don't get... maybe someone smarter can answer this for me...

After watching the BUILD keynote, a handful of sessions and reading numerous blog posts, I still have a handful of questions. Maybe one of my readers has the answer and if so, please feel free to post a comment below. Before I jump in too deep, I have full confidence in Steven Sinofsky and I'm simply saying "I don't get it" or "I don't understand"... I'm not saying "this doesn't make any sense and Microsoft is a bunch of bafoons." There is a reason for everything and this guy didn't just fall off a truck... thus I personally need to figure out how to answer my own personal questions about WinRT, Metro style apps and the future of where Windows 8 is taking us.

First, when you look at this picture, the picture plastered across BUILD, it makes you think:

So there are now two styles of apps . I get that from the user experience, but from a technical experience, why? It's a bit scary to think that .NET is buried into a lower right corner box with Silverlight. I guess my main question here is with respect to .NET, What's Wrong/Missing that required WinRT? Why create a whole new platform when you can extend or tweak .NET? I look at it from a SharePoint perspective... there are things we can and cannot do in the client object model (CSOM). To address this Microsoft created a proxy that blocks us from using things in the full server-side object model. Further, we want to leverage the CSOM not just from .NET, but also from Silverlight & pure HTML/JavaScript solutions so Microsoft built implementations for that. Isn't that what WinRT is doing to some extent? And am I reading this correctly that the .NET Framework is also on it's way out? I didn't read it that way at first, but the terrible diagram above as well as comments from the likes of Joe Wilcox make me think otherwise...

Another question frustration I have is that you now build two types of apps with two different codebases: Metro style or Desktop apps. Seriously... why two completely different platforms? I really have to explain to someone that "look, even though you've build apps on the desktop and on the Windows Phone that can share a common codebase, and while the phone development is done using Silverlight, even though you have this new Metro app that looks all tile-y like the phone, you can't use the same code because there's this whole new thing called WinRT." Don't even get me started with two different versions of IE10 (Metro style & desktop style) one of which can do plugins and one of which can't (seriously?... Steven Sinofsky is channeling his inner Steve Jobs me thinks).

Conclusion

Don't get me wrong, I'm not slamming Windows 7 8. In fact, I think Microsoft is nailing it. I can't wait to have a device that I can use at my desk as a laptop, but then pick up the slate and go downstairs out of the office and when I'm on the couch use the same machine like I use my iPad on my couch. I can't wait to consolidate two devices I have now!

I've quite a few more questions about this new future we're moving towards, but I will hold off on those until I better understand a few of those core questions. One thing is for sure, this is going to be interesting!

Comments powered by Disqus