Microsoft released Silverlight 3. So it’s time for Silverlight on my Flash blog ? Heresy ? No, not really.
I’m not going to do an intro to Silverlight here, I guess you all know what it is, or what it is proposed to be. As a developer, I’m naturally interested in platforms available to me or in a similar area to what I work in. Therefore, Silverlight has my attention. Not because I believe it’s a Flash killer, not because I think a bag of Microsofts cash will come my way, not because I want to destroy Silverlight, but because it’s a technology which plays in the same realm as my professional environment. Surely being Flash Platform developer, I’m biased. The platform that has allowed me to earn my professional living and have so much fun is clearly my favorite any day. But let’s have a look anyway.
Silverlight vs Flash
I’ve always found the developer oriented marketing message for Silverlight somewhat confusion. One moment it has nothing to do with the realm of Flash, the other it’s the designated Flash killer, and I find myself hosting heated discussions from both camps. It’s been confusing. Personally, I’ve had a look at SL1, 1.1 and left it there. During those tests I found it was still very young technology and a far cry from the capabilities from my personal favorite platform, Adobe Flash.
I remember the first release site for Silverlight, and it left me confused if I was watching a commercial for a snowboard brand or a new web technology. Things seem clearer now, Silverlight clearly has an ambition towards what Flash is, but currently still isn’t. Neither towards end users or developers. What has happened with the release of SL3 ?
Now in it’s 3rd iteration, the Silverlight team seems to be playing catch up and there’s an akward similarity between Silverlight 3 and Flash 8/9/10. Let’s look at a selection (these are the biggest though) of the features added, and how they translate to the world of Flash.
I’d like to get one thing out of the way as an older feature; Silverlight 1.1 – .NET support / Translates losely into ActionScript AS2 to AS3. A far better runtime for code in both cases.
- Silverlight Perspective3D – Flash 10 Perspective 3D
Well, with both players now doing 2.5D “postcards in space” natively, it’s up to third party developers to build the 3D frameworks. Good thing I like that kind of stuff a lot. Before, it didn’t seem possible to build anything like Papervision3D on a usable level for Silverlight, but I think that with 3.0 we might finally see some competition coming from the Silverlight camp, now that they can actually control bitmap content ?
- Silverlight PixelShader API’s – Flash 10 PixelBender & Flash 8/9 Bitmap Effects
I’m not entirely sure if Silverlight PixelShader API’s are GPU accelerated or not. Flash 10 Pixelbender surely isn’t. So far I haven’t seen a running version of Silverlight PixelShader API yet, but hoping someone will fill me in. The ability to write ‘real’ HLSL for it seems enticing. Currently I don’t think there’s enough demo’s online on the Silverlight side, but it would be interested to see where that goes.
- Silverlight Cached Compositing – Flash 8/9 gpu assist (fullscreen, mac) and Flash 10 GPU / Direct WMODE.
Somewhat similar to each other, Silverlight Cached compositing seems to be a combo of using the GPU for rendering as well as good old, cacheAsBitmap. I’d be interested to hear from both camps how far integration goes. From a developer perspective to both platform, both seem to just be a “switch” to be turned on, no control.
- Silverlight Bitmap API & BitmapCaching- Flash 8 Bitmaps and .cacheAsBitmap
Silverlight gets my favorite Flash 8 feature. Bitmaps. WriteAble bitmap is similar to BitmapData and allows for richer effects and graphics to be created by the developer. BitmapCaching is surprisingly similar in even name to .cacheAsBitmap, which allows the developer to reduce the overhead of rasterizing components of which the visual state has not changed.
- Silverlight LocalConnection API – Flash 6 LocalConnection API
What’s there too say ? Player instance talking to Player instance. I actually assumed this was already inside Silverlight, but hey, now they do. Seems to be related with Silverlight endeavours on the Desktop (think AIR, but a little less well featured).
- Silverlight Application Model Enhancements – Flash 9/10 FileReference API
Again, this seems to be related to MS preparing Silverlight to jump to the desktop, although this feature is available in both Flash and it’s desktop brother AIR.
- Silverlight Assembly Caching – Flex Framework / Flash 9 RSL Caching.
Storing chunks of frameworks on the client so they don’t have to be loaded in everytime for every site / platform. Not sure how cross platforms silverlight solution is. Neither do I know how to erase that cache with SL3.
- Silverlight Network Monitoring API – AIR ServiceMonitor, SocketMonitor and URLMonitor
Again, a feature for SL jumping to Desktop, this allows you to see if you’re connected to the cloud or not. AIR is a little more extensive with it, Flash has no implicit features.
- Silverlight Application Frameworks – Seems to be a code base like the Flex SDK
Application Frameworks loosely relates to what we call the Flex framework, and the enhancements on that for SL3 seems be very minor. Flex2 – Flex 3 – Flex 4 (gumbo) steps seem much bigger.
- Silverlight UIFrameworks Enhancements – Flex SDK / Flash Components
Well, not much to say here either, UIFrameworks seems to be playing catch up it with Flash / Flex UI Components (the latter to be most precise).
- Silverlight Text Improvements – Flash 8/9/10 text improvements
Although the new Text Rendering engine for Flash 10 is a huge step, the Silvlerlight of things looks more like the new control over text rendering like the one we got in Flash 8-9. Flash text layouting seems to be far ahead on this one.
- Silverlight Animation Easing Effects – Flash – Robert Penner, anyone ? Combined with some mx.easing.
Again, this was a feature I thought to be native Silverlight already, but it is just introduced now. As with the early days with Flash easing, I hope people see how to leverage this for a better UI, and not an experience of windows and things shooting by, rendering the UI useless.
A strange coincidence….
A lot of similarity between new SL3 features and Flash 8-9-10 features, right ?
Now, none of this is a coincidence. All these features are surprisingly similar to some of the new features we’ve seen appearing in Flash over the last 4 years. In a way, you can say SL is still playing catch-up. In the new feature set I see no real innovative RIA / Plugin features that really distinct Silverlight. That being said, SL plugin is still not as feature rich as Flash 10 is currently. Seeing what Microsoft has done in 3 versions, one could asses that they are moving very fast on the plugin feature front. But there are some things consider here. First of all, Silverlight obviously is learning it’s lessons and features from Flash. I’m yet to be amazed by a novel Silverlight feature. Another thing to consider is that Silverlight 1, 1.1 and 2 compared to Flash had virtually no installed base, and backwards compatibility of all features and API’s doesn’t seem to be retained. Compare that with a Flash Player with more then 10 years of history and still be entirely backwards compatible.
Stability wise, my experience with the SL plugin have been less then good. Browser crashes, followed by content not running (I’m still looking to see working demos of most of the new features online, which run on my mac too, anyone ?). The experience of years of Flash Player seems to be owning Silverlight here. With content behaving differently between my both Macbook Pro’s, ubiquity doesn’t seem to be the strong point of Silverlight; I’d say this would be me only, but my twitter feed tells me differently today.
One thing which is worth mentioning in Silverlight’s favor is the accelerated video rendering. Flash 9 / Moviestar (9.0.115) introduced fullscreen acceleration to allow for smoother feedback, but the acceleration mentioned for Silverlight seems to be decoding based. VC-1 is supported by graphic card manufacturers, so this would mean the actual decoding is done on the GPU, allowing the plugin to offload that work from the CPU. In that same area, DRM for VC-1 seems to be pretty sturdy too.
On the tools front, I can’t say that much, since the Microsoft tools for building Silverlight content still don’t run native on Mac OS. From back in the day, I can still say the Visual Studio IDE is one of the best Microsoft products, but beyond that, I have no experience with their new tools. I hear integration with Photoshop is pretty good. In a way tools and development language will also greatly influence the people using them, in turn influencing the output created for the end users. Flash is still a very nice melee of designers, actionscript developers coming from a design backend, and hardcode java developers turned Flexer (just to name a few sub categories). At any conference we always get a nice melee of peope all with their own angle and usage of the platform. This really reflects in all the different content being produced for the platform, where I’m still waiting to see that diversity in the Silverlight universe.
Some personal ideas
Now, although SL is making some progress on their own feature front, they are still behind. But in the end it’s about the end user experience, and this is where Microsoft clearly failed in this context. Their see the light website is less then optimal, if I put it mildly. Seemingly infite loading time, followed by a horrendous design and user experience, leaving me wondering where all those megabytes of preloaded content went.I wonder if this is a trend amongst all SL content, as I’ve yet to not see one of those dead ugly SL preloader circles. This is the site which is supposed to showcase Silverlight, but it is it own worst advertising. Maybe they can get a Flasher to redo the seethelight.com website.
[UPDATE 11th July 2009]
Apparently, I’m not the only one who didn’t find seethelight.com up to par, after seeing the light, microsoft removed it, linking directly to the html version (in the Silverlight version, this was linked as “reduced experience”). Now, we get the “reduced experience” by default. Let’s hope they come with something to replace it, and be a real showcase for Silverlight.
Silverlight is good for Flashers too.
All in all, Silverlight is good for everyone. It means competition in the field of rich internet plugins. Yes, there are more. But these are the 2 big companies playing and competing in that field. (I really don’t think Sun is a real contender in this area yet). And general logic would say that with competition, both products will be more rapidly developed and improved. Which, for us developers and end users is only a good thing. With SL3 being just out, we’ll just have to see how many developers adopt it and how many content providers are willing to take the jump on a non-ubiqitous plugin and how steep the adoption slope will be. In terms of catching up,in my opinion it’s still Microsoft’s move (even with SL3), but the incremental step they did for this version looks promising for the future. At which point we can all look forward to Flash 11, Flash on devices and mobile to compete with that.