By now you’ve probably heard that we’ve shipped Silverlight 2.0. Many folks love it, some folks don’t care.
Though I avoided spend much time at all with Silverlight 1.0 and resisted 2.0 until it neared commercial quality delivery, my personal interest is just gaining momentum. So now that Silverlight 2.0 is an officially released product I thought I’d share some thoughts.
When it comes to software development, I tend to be PRAGMATIC above all else. I’m not one of those guys (and we have them here at Microsoft, even on my own team) who emerge themselves in the latest technology for little more reason then that fact that it’s the “new thing”.
Don’t get me wrong, we NEED those guys. They will flush out the problems and shape the technology that the rest of us will be using in 5 years; it’s just not where I choose to spend my limited time.
My preference is to focus on the technology that can have meaningful impact on the next 6 fiscal quarters at the customers that I work with and to help Microsoft Developer Product feature teams understand what customers need and want relative to what he have already delivered.
So, Silverlight 1.0 was of only passing interest to me. Silverlight 1.0 has a GREAT media story but it didn’t fire me up.
Silverlight 2.0 (and what’s coming in 3 and beyond) has my attention.
The most common questions I get about Silverlight are in the “Flash Killer” category.
Why would I switch, and isn’t this just Microsoft wanting to take some of Adobe’s market.
Sure, Silverlight, in some regards is vying for adoption in what might previously been Adobe Flash land. Just as Flex and Air are competing for the more conventional developer audience that has been largely a Microsoft customer base.
The things that Flash and Silverlight both do well are of little interest to me either. Flash has a nearly ubiquitous adoption. If simply streaming standard web video or adding <object> based user interface glitz to my application were my goal, I might never dive deep into Silverlight.
But, my pragmatic nature forces me to additional considerations.
If you’ve ever heard me give a conference keynote you are likely to have heard me quote Albert Einstein who said, among many other brilliant things, “The SIGNIFICANT problems of today cannot be solved with the KINDS of thinking that created those problems in the first place.”
This is the facet of new technology that excites me the most; the ability to examine problems both new and old, and think about solutions that were not possible with the technology available to us even a year or two ago.
Enter Silverlight 2.0. Below I’ll highlight some of my favorite attributes of Silverlight 2.0 and mention why I think they change things.
1.) CLR based runtime.
The browser embedded runtime will change what we can build in our browser based applications. Now, it’s not the first time we, as an industry, have tried this browser extension thing. ActiveX failed because it lacked a mature security model. Java Applets failed for a variety of smaller reasons. Different browser hosted JVMs yielded vary different renderings, while there were security flaws the restrictive sandbox prevented the use of client side resources, they were hard to write, internet connections at the time were too slow, and Sun was far more interested in the server side story for Java.
All the above issues aren’t here to inhibit Silverlight 2.0 Application deployment.
The Silverlight 2.0 runtime is tiny and the applications are even tinier, but the performance of code execution is FAST. This download and execution performance opens up new doors for us to implement complex client side logic, including rich business implementation running right there in our browser hosted application. What’s more, writing these applications will be easier due to the rich .NET Framework subset that is implemented with Silverlight 2.0.
What’s more, if you ware already a .NET developer, your learning curve is minimized because Silverlight Development is .NET Development. If you are building WPF applications, you’ll add Silverlight to your toolbox and feel like you never left home.
2.) First class language support.
JavaScript, EcmaScript, ActionScript, whatever your particular flavor, they’re all pretty much the same coding experience. It’s not that you can’t do meaningful work in JavaScript; there is a ton of great stuff out there in JavaScript and ActionScript. Though much of that code is clever, it’s “behavioral”. Its script code whose primary purpose is to manipulate the UI and ship the needed data back to the server for the real work or to take the product of the server’s processing and present it to the user sitting in front of the browser.
This model does nothing to distribute processing between the client and the server and, from a user experience perspective, we are restrained by the semantic requirements of the traditional Web based Client / Server implementation scenario.
The fact that we can write in JavaScript does mean we should. I wrote a lot of Assembler and COBOL code back in the day and I’ll be happy if I never return to those syntax flavors.
I rather like JavaScript for its intended purpose. It has a quick and dirty feel to it and lets you run loose and wild. This is great for wiring stuff up, but not such a good thing for implementing real application logic. The feel of JavaScript that I like for manipulating the DOM, etc. becomes a sort of “inelegance “ when needing to get down to real logic implementation and the long term impacts of JavaScript’s casual nature causes me great concern because business logic, even when functionally perfect, will absolutely need to be revisited from time to time and the business needs or culture change.
With Silverlight 2.0 we can implement our logic in C# or VB.NET if we choose to leverage full OO constructs, strong typing, and the like.
If you lean to the Dynamic Languages view of the world you can choose Python, Ruby, PHP (Phalanger) and whatever languages might be implemented.
3.) XAML
First, please understand (and embrace) the fact that XAML is NOT just a presentation syntax. XAML is an Extensible Application Markup Language. This means that is can be used to define any type of .NET object, behaviors and associations.
The use of XAML for Presentation definition in WPF and Silverlight is only one possible use and a broader use of XAML will create very interesting scenarios.
XAML is interesting to me for many reasons, but let me be say up front, I hope to never write a single line of XAML code “by hand”. That fact that you COULD write XAML by hand is not where the power is. In fact, if you had to write XAML by hand, it would never happen. (Just like SOAP, and many other useful XML dialects.)
First, XAML is important because it is a verifiable XML syntax which means tools (like designers and IDEs) can reliably read it and interpret it in identical ways. This is very important because it means that we may, after many attempts in the industry, actually have a development process where developers and designers can truly work on the same project with their respective tools of choice in a very seamless way (read NO technology conversions / translations ever time the work product passes across the designer / developer boundary.)
Next, XAML is XML. Lest we forget the “X” means EXTENSABLE. This means that the base syntax for XAML can (and will) be extended by developers and vendors for specific purposes and this can be done without breaking the base implementation.
Also, XAML enables Vector based rendering. Bitmaps are fine for photos, but as the variety of display devices continues to increase with a huge disparity in screen size and resolution, bitmap driven user interfaces are sure to vanish.
4.) Timeline based behaviors.
My video and animation contacts tell me that Timeline based design experience is a huge thing.
From a personal experience, as an artistically challenged geek, the Timeline based design process is simple enough that even I can do some reasonably good work in the tools. (It’s just like editing a video.)
5.) Isolated User Storage.
Remember the Einstein quote above? If you ask me, user configurable client storage is pure genius. Think about the things you can do with it. Need REALLY rich view state? Put it in client storage and drastically reduce your state driven HTTP traffic. For that matter, do it with ALL our state data. Client profile, etc.? Not only can you save all that traffic and server resource consumption, but you can still keep the master copy on the server so that you can reconstitute it on the client when a user connects from a new machine. How about client side object persistence? (Even for objects that get manipulated on the server.)
And think even beyond those possibilities. How might we use client side storage to enable “not-always- connected” application scenarios?
And how about integrating client side storage with Microsoft Live Mesh services or the Cloud Computing technologies that you will start hearting about at PDC J ? The possibilities are only restricted by our own creating abilities.
6.) Sockets Support.
Sometimes you need RAW SPEED. Silverlight 2.0 provides a well factored class collection to implement client side Sockets conversations in your applications. This means you can “speak sockets” which are supported on about every server platform since the birth of the World Wide Web, and bypass the overhead of HTTP if you need the extra performance. This way, if you need to build a chatty application you won’t have to worry about the platform painting you into a performance box that would require a massive rewrite.
7.) Enhanced Media Experience.
I mentioned earlier that the idea of streaming “standard” video wasn’t so interesting to me since there is a bunch of technology out there that already does a pretty good job of this.
Note the emphasis on “standards”. In the long term, Silverlight hold some very interesting promise for steaming media. Apart from the great Codec and High-Def work the Silverlight Team is doing, the “built in” performance throttling in Silverlight is bloody brilliant. In layman’s terms, the Silverlight infrastructure will dynamically adjust the stream based on network conditions (like latency and available bandwidth) in order to deliver optimum viewing quality with as little of the “pause and stutter” that we often experience in our Flash or Real based streaming video experiences.
And don’t forget to think about the business logic that we can add with our Client Side C# or VB.NET code. By combining metadata in the video stream and interpreting users behavior while viewing the videos, we open up LOTS of new and exciting opportunities. I’m playing with a “Smart” Video Player for all the technical How-Do-I videos that we publish on www.asp.net
8.) Expression.
Last, but not least, the Expression tools that support Silverlight (and WPF) are slick. Already in version 2, they are enjoying great popularity and rapid adoption from both new users as well as the traditional “design” community. Sure, there are folks that would like Adobe to add XAML support to Illustrator, etc., but at least there are very good, and complementary tools for folks doing Silverlight 2.0 development
So that’s a look at what I think is important and exciting about Silverlight 2.0 and it’s release this week.
I hope you’ll share your thoughts on the subject with me.





















I’ve been with SL since it was called WPF/E and have taken a chance of putting all my eggs in one basket and stayed with it since then. The 8 points that were brought up are all fundamental points and you can accumulate many, many more the further you look.However, if I had one point that I could make about what’s the most important argument about SL 2, is:"You can develop a full scale business application that runs on three platforms with zero installation and update nightmare". To me, that by itself worth the million. SL is the next generation of software development, you’ll see the results in about 2 to 3 years!..Ben
VERY WELL SAID!I am having to deal with flash stuff and I am trying to get out of that. it’s a mess to code in flash!one or two items are a problem for me today and I have been trying to tell folks about them:the bosses hire some graphics person to create stuff they use photoshop and flash.then I get the job of attaching the flash to our system.at this time I can not tell the boss to find a silverlight / expression person, so I could really use some good tools to pull graphics out of flash and photoshop to make a silverlight version of the app.none of the tools I have found yet really works for the flash to xaml export.I have seen several of them and not one really works. we need a tool that does this!photoshop to expression, we need to get the layers and fills and such out of the psd file and into expression design!not just a jpeg o the composit image!If I could pull the gfx out of flash I could make a silverlight app that would be nearly identical to the flash version from what I see so far.
Hi Joe,Nice write up – makes a lot of sense to me – thanks.In my experience developers are very keen to embrace Silverlight, especially those that have come from a desktop background – this was never true of Flash, which came more traditionally from the creative and interactive designers world.I would add the Html Bridge to this list – this is an important aspect to the "silverlight is *not* an island" angle which differentiates it from competitors together with the strong support for using services.Mike Taulty has a great presentation on this: http://tinyurl.com/5an385One area I would like to see more research on for Silverlight and all current RIA’s is how they can deliver productivity improvements for users.This is probably in Bill Buxton’s world, but I would like to be able to go to a client and show them proof that richness of silverlight ui is not about glitz but about productivity and here are the facts to prove it…CheersIan
That is a nice base list.However, I will add 3 biggies that will make Silverlight more successful in the RIA business.1) Multithreading. Silverlight has decent support for it already and Flash/Flex do not as of this moment have decent support for it.I have gained almost 120% improvements in computational processes.2) Microsoft backing…this one gives Silverlight about 100 sub-positives.Integration with SharePoint.Integration with Pocket PC.A whole array of applications that are screaming for a web RIA UI (PerformancePoint, Reporting Services, Biztalk etc).Compared to Adobe/Sun, Microsoft can push Silverlight out the same way they pushed .NET in 2002 (back then nothing was .net now every API Microsoft releases is based on the .NET Framework).2) Enterprise SOA.Once there is an add-on for WCF wsHttpBinding for Silverlight, that will make creating SOA Silverlight apps much easier.Who else has a WCF-like framework with an RIA that can consume large data and use the UI to expose it for analysis.
Thanks Joe, you motivated me to explore Silverlight. Now something out of context – the text of your blog does not wrap that makes it difficult to read, please do something about that.
Wow!
You do indeed make some good points there bro.Even if we, Microsoft fans, loyalists, don’t look at Silverlight as a Flash competition it is obvious the world does.I did create cartoons in Flash for years, until the lawsuits against Microsoft for embedded contact.For me Silverlight has been a long time coming and I’m very happy to be on the ground floor with it.In the typical U.S. Marine mantra I can sum this up with two words: Ooh Rah! Salute, Mark Wisecarver
Joe, I totally agree with you! I relatively new to web development, the reason being I just hate the client programming model. For a guy coming from C and C++, HTML and JavaScript just give me nightmares! Now that I can use C# on the browser, I just can’t wait to start!
Good overview, but I would caution you that its called "Silverlight 2" not 2.0.I only know because it was drummed into my head by the product team.
Bart, I totally agree re: Multi-Threading. When you combine multiple threads and client side storage, performance improving architectural options get VERY exciting.Shawn –
I’m sure that’s really important to someone somewhere in my org
Pradeep – Can you send me details, IE 7 is my default browser and it renders and wraps just fine for me.Joe
Very well said.In fact, I recently wrote an article My SL2 Application detailing my experience with SL2 that shared many similar points as yours.My "toy" SL2 application (a testing vehicle for the real application that I am writing) is a website doing online MD5/SHA for text and (very large) files.Though a small project, it touches on your points (1), (2), (5), plus the following which I think are also significant: multithreading support.The application is FAST to run (comparable speed to native C++ code), FAST to develop (given that it uses lots of fancy data structures and algorithms).My toy webapp is called HashSum, and it can handle a Gigabyte files in a few seconds, and no server roundtrip!I cannot imagine doing what I did using Javascript or Flash — it’ll be mighty slow and mighty difficult to develop.And like you said, given the failure of ActiveX and Java, Silverlight seems to be the only one in the game which can doing what I called PRIA — power RIA.Silverlight opens up a much bigger window to allow further migration of desktop applications to the web.I like your Einstein quote, as recently I have been wondering…given this enormous new power, which can be done that traditionally is infeasible?
Hi Joe,I agree with you on all of the points except that "the Expression tools that support Silverlight (and WPF) are slick".Expression may be a great tool for artistic (ponytail) types, but to me, it isn’t a great tool for developers. I feel let down that VS 2008 doesn’t have a decent graphical designer for Silverlight. Even the read-only display has problems. I feel the tools support fell behind in this release compared with what can be done in ASP.NET and WPF graphical designers.Ken
Hi Joe,I think Pradeep may be running IE8 B2 like me – I have the same wrapping problem, even if I run it in IE7 mode.
Joe,I have wrapping issues here at work using IE7 on XP.I have to use FF3 for it to wrap correctly.If I remember, I’ll trying it tonight on my Vista machine at home.Interesting stuff on SL2 – now I want to check it out!:-)Charlie
It’s not wrapping for me using IE7 on my XP machine here at work.I have to use FF3 for it to wrap correctly and not always even then.I’ll try it at home on my Vista machine if I remember.SL2 look very interesting!Charlie
It’s not wrapping for me using IE7 on my XP machine here at work.I have to use FF3 for it to wrap correctly and not always even then.I’ll try it at home on my Vista machine if I remember.SL2 look very interesting!Charlie
Hi Joe,I’ve been trying to decide recently whether to go with Flex or Silverlight 2.0 for a simple survey application I’m writing and your great description of the benefits of Silverlight have me leaning that way, but I’m new to WPF and XAML. I’m concerned about the heavy learning curve involved and — as the other comments show — the limitations of the current design tools.Can you point me to any resources that might be available to come up to speed quickly w/ Silverlight? Technology is definitely a key consideration, but so is developer productivity and I need all the help I can get.Thank you,-Russ
The only thing that I think is a problem is the Linux support. Of course, I know that Novell is developing a Linux version of Silverlight but is a big problem that it is not developed by Microsoft itself.