Evangelising Silverlight

This article presents you with the facts, links and opinions required to arm you with information about Silverlight and what makes it so good.

You are a developer / architect / manager / designer / consultant and you have this great idea and you think Silverlight would rock out the implementation.

So you embark on an crusade of internal evangelism and enlightenment. The problem you face is that every time you mention this new dark magic the senior management / IT guys / Flash fanbois / druids cry *WITCH* – and bury your suggestions under a pile of sly negative remarks. They come out with all sorts of comments, questions, accusations, slander, colorful language… you name it. What you need is some AMMO. Ammo to take in to that next meeting and shoot them down. Get in their head. Preempt questions and remarks. Un-negative their negativity. Make them think you are reading their minds. Make them rue the day they ever cussed Silverlight!

This article will provide that ammo. Oh and I’ll stop with that bizarre prose from the first paragraph 🙂

First off the chopping block – Flash

Okay, so Flash is fairly entrenched. As the protagonist it will be your job to tackle the Flash monster first up.

Lets start of with some of the defensive comments you may hear from a “Flash backer”.

Flash has ten years on Silverlight

It sure does… but Silverlight is based on the venerable .NET Framework – itself coming up on ten years old – so the platform maturity of Silverlight is right up there.
Ten years sure has more copies of Flash installed in browsers around the Internet no denying this fact – but below I explain why this is not a problem for Silverlight (in the section “Flash is Known!”).

Our designers really really like Photoshop and Illustrator

So install the Illustrator XAML export plugin. Nobody ever said you had to stop using it. Although, you are only creating flat designs in Illustrator.. maybe you might like to make something that can be used in the real app? Maybe developers shouldn’t be doing animation. Take back the control designers, feel the power… Get in to Blend and actively contribute to the design of the app. Don’t just throw your design over the wall for an integrator to cut up, CSS it, HTML it, JS it for you! Check out the Designer/Developer Workflow stuff below.

Designers don’t like change

Nope, probably not… but the designers I’ve seen persuaded to give it a shot come out the other side absolutely loving Silverlight… and the Expression tools. Also remember that designers probably don’t know/care about all that .NET knowledge you have lurking in your development department either. I’ll come back to designers later.

Flash has more features

Yuppers – it has pixel level shaders, web cam you name it! Hey Silverlight is barely two years old, and its got XAML (awesome binding), .NET, awesome networking stack, LINQ, extension methods, anonymous methods, HTML DOM Bridge plus so much more… I’m saying Silverlight may be lacking some of the “pretty” features of Flash, but it’s core is just so damn good and it’s language features simply blow what Action Script can offer out of the water. .NET Framework baby! Give me C#!

Silverlight also has support for adaptive streaming (see SmoothHD.com for a dose of awesome) and the venerable VC-1 high definition video codec. Microsoft also *builds* codecs, unlike Adobe which hacks and licenses them.

Add all this up and smash in a dose of “Silverlight is only a toddler” -> and you can see where this is headed pretty quickly… Somebody got all growd up!

Flash is Known!

Yes it is – by developers, CIO’s, IT managers, CEO’s (maybe), designers – people in the industry. I performed a highly scientific survey of my middle aged aunties asking them all about Flash and how it came to live on their HDD. “Umm… what?” was the response. Turns out they just were after a particular piece of functionality (probably YouTube) to work, so clicked yes until the bloody questions went away and the video started playing.

My point, people will click anything to see the content they want – and Flash isn’t installed by default in *any major browser*. They’ll install Silverlight to see your site… at 4 megabytes and 20 seconds to install – its totally painless. This was proved by the NBC Olympic coverage. Add to this the pop up they see to install Silverlight is branded heavily with “Microsoft” – now that’s a brand my aunties recognised! Microsoft could pop up a message saying “Click here to blow away all your family photos” and they would click yes. Probably not from Adobe – which only one had heard of mind you.

Silverlight is installed by Windows update – so a lot of people already have it… and you can bet it will be in the next version of Windows.

So – developers, CIO’s, IT managers, CEO’s – I challenge you to survey your aunties and grandmas and other random non technical persons! These people will not install Silverlight problem is *in YOUR head* – not the public’s head.

What about SOE – Standard Operating Environment

Okay, this could be tricky… but it’s amazing how quickly an SOE can be changed when a head kicking, big shot, pragmatic manager thunders down the line asking why he can’t run the new demo app that his .NET team has made for a client! “Give me one good reason why you wont use your automated WSUS server to send out Silverlight?!”. Talk about a scared little obsessive control freak administrator… “Just get it done, Roy”. [It’s going to be in Windows 7 anyway.] EDIT (July 09) Silverlight will not be in Windows 7 by default – my bad 🙂

.NET apps in the browser with a nice and safe sandbox? Yes please.

Illustrator kicks Expression Design/Blend’s ass

Okay, sure… Illustrator has loads of features over Expression. But the stuff you output from Illustrator is miles away from being usable in a real app! Design and Blend are created with one thing in mind… making *real applications* not *pretty designs that require a week of a developer’s time to mangle in to something workable*. What, you think that you can output a PNG, slap it on to a page and it just work – dude, you know that’s not true. Designer 2.0 please (see below).

They say design has 20% of the features you use in Illustrator 80% of the time.

Robots vector created with Expression Design - www.agkdesign.net

Robots vector created with Expression Design - http://www.agkdesign.net

JavaScript and AJAX

Let me start by saying I totally love JavaScript… and jQuery and all that. I train people on JavaScript etc and it forms a decent part of my job as a consultant at Readify.

JavaScript has reach

Can’t deny that… probably to it’s detriment a little, because of *how* it gets it’s reach. A definite up for JS is that it is almost universally available. The problem is that JavaScript is different between browsers. Sure there are libraries to fix this, like the awesome jQuery – but as a platform it’s “different”… no denying that.

JavaScript is known

Is it? Ask your developer if JS is OO, what prototypal inheritance means and describe what is so good about a closure… maybe ask them what is currying? Even better, ask your “designer that does some JS” these questions. My point here is that in my experience JavaScript may not be as well known as you think.

I’ll tell you something – JavaScript sucks for designers

JavaScript is let down because it is not inherently toolable… You can’t set the timeline bar to 10 sec, drag an image to the other side of the screen and click “play”. You have to write code, CSS and the rest to do this… Sure, I know of (some) designers that can do this – but designers are rarely good developers, and JS is a powerful functional language… see the previous point. I’ll do the code thank you very much!

So what’s Silverlight got then?

Silverlight has so many hidden features and benefits, some technical and some not. If you look at Silverlight like a “it can animate and play videos, it’s just like Flash” then you are sooooooo missing the point. I put it to you that you are completely under-informed sir!

Silverlight has you-beaut designer/developer workflow

You-beaut? It’s Aussie for total awesome.

You have heard of XAML… its this HTML like markup thing right? Something about making tooling easier? Human readable? Yep, yep and yep… but did you know the real reason why XAML is just ridiculously awesome? Designer/Developer Workflow… bam. The Adobe camp dropped the ball on this by releasing designer/developer friendly tools that do not promote workflow… and their attempt to rectify the problem – “Catalyst” is still a year away at the time of writing.

So what’s so good about designer/developer workflow? Well, for bean counters it’s large cost savings. The basic premise of DDW is wireframe and prototype re-use by designers and developers. They sit down and build a wireframe in Blend, which can then be used by both parties to make the final product. Oh, make sure you throw in a sweet naming convention whilst you are in there.

For example, you are building a clock. Designer makes a really simple wireframe of a clock – the round bits, the hands, some fields for date and day etc. A naming convention is created at this same stage e.g. Call this text box txtDate, txtDay, txtXxxx, call this animation sbxxxx etc.

The wireframe is then taken by both the designer and the developer to have their way with. The developer adds in the code to create the behavior of the clock. Populate the day data, fire off animations etc… hopefully they would be using a sweet pattern like Model-View-ViewModel to make this all work nicely in Blend… more on this little gem later.

During this stage, the designer takes the wireframe and pretties it up, turning it in to a masterpiece.

When both parties have completed their work (or at iterations during development) they merge the result. The merge is easy, because the developer hasn’t had to touch much XAML at all! Just dump in the designer’s XAML and because data binding was used, it all just hooks up…

I’m not going to try to smash a full lesson on DDW in here, but I will sure as heck provide some links.

  • First read this whitepaper on XAML and DDW by Karsten Januszewski and Jaime Rodriguez. The New Iteration. This is a fantastic paper on all things XAML and workflows… full of cost saving tips.
  • This video from PDC demonstrates how to use Blend and Designer Developer workflow to great effect.
  • This three part post shows how to build a real application using Designer Developer workflow. Part 2 and Part 3. Get up on it.
  • This video from MIX08 in Vegas demonstrates the clock scenario I described above… simply a must watch.

I’d strongly recommend viewing these videos and reading these posts to gain a real understanding of how this process/pattern can really help you cut down development time and smash quality through the roof.

The big bertha point – .NET Framework

Wait a minute. You mean that any ASP.NET/Win Forms/WCF/WPF/blah developer can do Silverlight? Whaaaaaaat? You mean I can just advertise for a C# developer when I need more talent?

Silverlight 2 is built around the Core .NET Framework, a scaled down version of the full .NET Framework. What do I mean by scaled down? Well, it’s missing things that don’t make sense in Silverlight, like ADO.NET, ASP.NET and Windows Forms etc.

What it’s not missing is WCF, ASMX, JS integration, XAML (with binding and all that cool stuff). It’s plenty of awesome .NET features.

Oh, and what about LINQ, extension methods, anonymous methods – all that cool C# and VB.NET stuff! It’s all there. .NET 3.5 is at home in Silverlight 2 – and you are welcome for dinner any time you want.

Visual Studio… just going to let that sink in for a minute. Visual Studio man. That’s how you make Silverlight. Even on the Express edition of Visual Studio. Just wack in the free Silverlight tools and away you go. Seriously, developers love Visual Studio and they will be right at home here. Seamlessly switch between client and server development in the one solution, using the same languages and techniques at both sites… the integration is awesome.

Adding a web service? No problems, Visual Studio automatically discovers and creates the service proxies for you, just like in other .NET projects… Just add the thing and start using it.

TFS, MSBUILD, Unit testing etc… all present and accounted for.

Seriously, when creating Silverlight applications you get to use the best of breed tools… there is absolutely no arguing with that.

What about Expression – how much is it?

If you have a MSDN Subscription (even the base one) then you get Expression Blend… And if you don’t have it then you can purchase it for a few hundred bucks. Or go win a copy at a user group meeting or at ReMIX. A little licensing never hurt anybody, and it’s an awesome product. It’s built with WPF too…

Edit It’s been pointed out to me that Expression Blend only comes with Premium MSDN packs. Expression Studio comes with VSTS + Premium.

Integration with Server Side

Like I stated above, Silverlight works seamlessly with WCF and ASMX. Just click the buttons to consume people.

ADO.NET Data Services are rockin’ out in Silverlight. Check em out…. Oh and check out how you can use LINQ from Silverlight to dynamically retrieve data from the server – here… Sooo awesome.

Something else worth checking out is the new LOB framework for Silverlight is really cool too – business rules created in your OR/M system (LINQ2SQL and Entity Framework) seamlessly are passed to the client, and much much more – Check out the videos here.

Silverlight Performance

Silverlight is faster than Flash at processing animations and compiled execution of commands. See the Bubblemark animation test for a working example of comparative animation speeds.

Dependency Injection

Want design time data or testable code? Then check out Dependency Injection in Silverlight. There are a few libraries to do this, the best of which is Ninject. Check out this post for a great example on how to do this.

Model-View-ViewModel

There is a Silverlight project… then there is a Silverlight project made with M-V-VM… This pattern allows you to maximise the abilities of databinding to create loosly coupled/high cohesion code and design (XAML). Using Dependency Injection with M-V-VM (and the Command Pattern) you can make massive applications with such low complexity it will make you cry. See this post for a great example on how to use M-V-VM and the Command Pattern in Silverlight. Oh, and these patterns can also be used in WPF!

Will it Blend? Designer 2.0!

Blend… the XAML creation powerhouse.

Did you know that Blend actually runs your Silverlight application? This means that designers can adjust the layout/design at RUNTIME. Yep, if you make a clock, it will tick. Text boxes will have live data.

This allows for “nudge nudge nudge” design rather than “build, run, view, close, nudge, repeat” type design. This is a fantastic feature that you should have a really good think about.

You’ll need some design time data, so check out the part on Dependency Injection above!

Take this feature and meld it with Designer Developer workflow and designers can now work on the real apps… the stuff they make is actually used! Designer 2.0 here we come.

Community

The Silverlight community is booming. Silverlight.NET has a fantastic forum that is alive and kicking. You are never alone, post a question here and it is almost guaranteed to be answered, and quickly!

Perform a quick search on the Internet for Silverlight blogs -> you will be astounded.

There are many Silverlight user groups around the globe. We have the Silverlight Designer and Developer Network in Melbourne Australia which I help run. Check out the site for more information.

Common Questions and Concerns

So you’ve got passed the initial sell, and now they are pounding you with questions… well preempt them!

What about Security

You’ve spent all this time on web security and now you are going to go stuff it all up? No way. Silverlight uses the standard browser stack to communicate. So a network call in Silverlight will automatically include cookies and all those goodies to continue authorisation and authentication on the server. You can check the identity of a user in your service just as if you called it from a normal page.

You can log in with ASP.NET Forms Authentication then secure a folder in the web.config that has a web service in it and Silverlight will be able to access the service.

Additionally you can use the ASP.NET AJAX Authentication Service to log in / check user name etc from Silverlight at runtime.

The long and the short of it, treat Silverlight just like any other web page.

See this post for an example of how to integrate Silverlight with ASP.NET Forms Authentication, Custom Membership, WCF and even Windows Live ID (Screencast of same post here).

Do we have to start over?

Absolutely not. Silverlight integrates with JavaScript and the HTML DOM effortlessly. You can reuse your old content in the Silverlight application without making any back end changes (except for inserting the Silverlight application of course). Silverlight can search the HTML page for content, grab out this content and load it in to the Silverlight application, then overlay itself on the content to update the appearance and functionality. This means you can use your existing content management systems/techniques.

Your back end systems do not need to know *anything* about Silverlight.

How does Silverlight integrate with existing pages/functionality?

Silverlight uses a technology called the HTML DOM Bridge. This enables all Silverlight code to be called from JavaScript and all HTML/JS/DOM code to be called from Silverlight. For example, Silverlight could scan the entire page and look for an element with a particular ID, then change the content in that element with some data Silverlight retrieved from a WCF service.

See this post for an effective use of Silverlight and the HTML DOM Bridge to control Silverlight navigation with the browser back and forward buttons.

Do entire pages have to be converted to Silverlight?

Absolutely not. You can slowly update segments of a page to Silverlight… or you can upgrade the entire page at once. It’s completely up to you and your plan. Silverlight can run as an island or take over the entire page.

How could I minimise re-work and leverage existing code?

Firstly, Silverlight uses the Core .NET CLR (Common Language Runtime) and the C# and VB.NET languages. This means that any code you have written for use on the back end could now potentially be used on the client (for example advanced validation code). Silverlight XAML and C# could also be ported almost verbatim over to/from a WPF project for a desktop sister application.

Most common .NET patterns apply to Silverlight, so your developers can bring a host of their existing experience (and code snippets) across to the client.

Resistance to Silverlight

So you see some resistance to Silverlight. You get asked why all the resistance?

Design shop resistance

Design shops may resist Silverlight because they have a heap of cash invested in Adobe. They have all their Photoshop/Illustrator licenses and they have all these ActionScript developers that they have invested cash in… What happens when Silverlight takes off – it’s not like the ActionScript guys can do *anything but FLASH*!! They are married to that one platform.

Design shops usually have so much work piled up they don’t need to take on building Silverlight apps, they can just sit on their piles of work quite happily. And you can keep sending requests for tiny adjustments to the ActionScript code you own but can’t change. They can keep quoting you half a day for 1 hour worth of work.

Or… you can take back the code! Take it all back, take control! Why should you have a design shop in charge of your code?? Why can’t you do the code and they do what they do best – the pretty designs (hopefully in a working XAML format produced from Blend).

Keep in mind that design shops couldn’t give two hoots about your .NET skills, they don’t care that you have this development capacity that you can’t use on the client side.

Internal design department resistance

At some stage you have to make the decision that utilising .NET for client development is worth putting a couple of designers outside their comfort zone whilst they learn a new product / paradigm (DDW). You can guarantee they will come around to the benefits (as you already have). Remind them they don’t have to give up their Adobe favorites. Have a look at WikiPedia on Expression Design – here you’ll see that Design is based on Creature House Expression – a product which got rave reviews back in the day.

IT Guy

Awww, they are just scared of any changes to the SOE… think of progress. I’m sure the arguments in this article are enough to pull some strings to get this happening. Nuff said.

Enjoy!

So, get over to the Silverlight Getting Started page and download all the stuff you need to get up and running. Don’t forget to check out the documentation, labs, whitepapers and examples on the Lean Silverlight page too!

Hopefully you now have all the ammo you need to cut through the red tape and get your Silverlight project off the ground.

Jordan.

46 thoughts on “Evangelising Silverlight

  1. Great blog post Jordan – and a good summary/food for thought for people considering Silverlight vs other RIA technologies for a project.

    Are you seeing an increased uptake for Silverlight in Australia? I get the feeling that XAML based UI (both WPF and SL) is really starting to pick up momentum back home in Norway.

    Hope all is good with you guys – I saw that some of the bushfires where really close to Bendigo..

  2. Hey mate!

    Thanks for the feedback, feel free to add anything you think I’ve missed.

    The SDDN is running a free training day soon and we are stunned with the number of responses… an indication that Silverlight is about to explode in Australia.

    The fires were very close to home but we made it though with no lasting effects, wish I could say that for other people in Victoria and Bendigo.

    Cheers!

  3. Jordon, a thought provoking article.

    I agree that Silverlight with code-behind certainly does “blow Flash out of the water”, and then into orbit to join all of the other satellite fragments. However, for the newbie, there is a significant learning curve. Or, a learning cliff face! The developer, designer, et al, has to conquer to a degree, the behemoth that is the dot net framework; a framework that goes way beyond the need, for example, to animate a red square on a blue background.

    By comparison, Javascript/Actionscript, are not real programmers languages; but their inherent feature weakness makes them much easier to learn. Especially for those who are more arty and creative. The same arty and creative types who leaving college armed with diplomas in Flash design, so they can earn a living making ‘eye catching’ banner ads.

    There is resistance to change, especially with businesses who have invested heavily in established skill sets, such as Flash, and ‘dynamic-HTML’. And in a web design world where knowing cascading style sheets has catapulted some people to the status of overpaid ‘css gurus’, the notion there is more to the user interface than canvas tags and getElementById, could well be a heresy.

    In these times where there are more dark clouds than silver linings, Silverlight’s feature richness will be its strategic strength, but also, for now, a weakness. Controversially, I would argue that many people do not seem to be able to say what Silverlight is, because Silverlight doesn’t really know what it is either?

    Maybe SL3 will change all of this 🙂

    Stay cool,

    Andy B (London)

  4. Hey Andy!

    Thanks for your compelling comments – it’s great to start some debate around this stuff.

    First, ActionScript and JavaScript are real programmers languages in my view. I can’t speak so much for ActionScript, but JavaScript has all the language features of a fully functional language. My point in the post was that most people actually don’t know JavaScript at all… just some little bits and pieces of JS here and there to do little things. Making a full RIA in JS is way out of their depth. And RIA is what we are talking about here.

    Have a look at Douglas Crockford in his Yahoo Theatre videos here http://developer.yahoo.com/yui/theater/. You’ll find them in the middle column (especially “The JavaScript Programming Language” series). You really get a feel for how big JS is.

    Secondly, using Silverlight to make animations, layout, controls etc using XAML requires absolutely no knowledge of C# or VB.NET (or any .NET)… you just use Blend and it’s excellent GUI to do it for you.

    To summarise some points from the post and Silverlight’s position in general – we are now moving in to the era of RIA. These client applications with complexity to rival that of the desktop (but functionality and UX of the web) require an entirely new paradigm where designers design and developers develop…

    Silverlight is squarely pointed at the RIA space. We aren’t talking little banner ads and other small niceties, we are talking full blown applications. The scale that this assumes means that it would be crazy to expect anyone to just walk in and start churning out awesome RIAs… using JavaScript or Silverlight or Flash.

    The reason that people don’t know where Silverlight sits maybe that they can’t distinguish the simple old web paradigm from the new advanced RIA paradigm… thus cannot see Silverlight’s potential.

    To those that see it as “the web is the web is the web” I can understand how Silverlight may be lost on them (as you seem to agree with your comment …”the notion there is more to the user interface than canvas tags and getElementById, could well be a heresy….”!!!).

    Cheers and keep the debate raging.

    Jordan.

  5. Silver Light is mainly PC/Windows,

    Did you forget about us Mac guys? The tools for designers (who are typically mac users) are very weak for Silverlight. That is why adobe is so strong in the creative agency arena. Is there a version of Microsoft Expression Designer for the Mac? I wasn’t able to find one, but you will find versions of Adobe products on almost every platform.

    I think that Microsoft needs to get more tools for the Mac guys before they will be able to break into the design shops with a little more effect. I still don’t feel that Silverlight is that compelling. I don’t see it on a lot of websites unless it is Microsoft. Even Netflix uses Flash on the main page of their website. They use silverlight to support video streaming.

    I still don’t have silverlight installed on my mac. I don’t go to sites that require it. The Flash Platform still has a strangle hold on browsers. Now that doesn’t mean that things wont change in the future – that is assured. Silverlight is one to watch.

  6. I’m a flash guy that just got started with Silverlight. I gotta say I like the framework and C# quite a lot. However, something has GOT to be done about the font situation in Silverlight. I loved your point about clients not caring what the technology was…super valid point. In creative design, the client wants that font to be super beautiful, crisp font that the designer laid out in photoshop, not crap-ass “Cleartype” arial. And I don’t feel like making custom pngs for every damn dropshadow or effect I need…I keep seeing “WPF-based” … please, it’s not even close! I would love to have some of those WPF features. Again, love the framework, and can’t wait to see it when it matures.

  7. Jordon,

    Firstly, I denounced JS due to its ‘Option Whatever’ attitude to data types: You know 1+1=11 or 1+1*1=2. Programming is a disciplined art!

    You said, “We are talking fully blown applications…” Indeed, Silverlight IS a paradigm shift away from the pick and mix mark-up that is today’s web. And I agree with your point that Silverlight is growing up. And as a ‘teenager’, it has the potential for being a one-stop shop for building entire systems. However, like most nerbs, it’s often treated with more suspicion than trust.

    I think to get the most from Silverlight, applications need to be green field developments. Rather than being just being used to ‘front-end’ some rusting-edge business system: Picture a Silverlight development revealing the limitations in both the target system and, the support staff. Yes we’ve got LinearGradientBrushes, but their COBOL still won’t produce readable XML.

    On the competition side, maybe Silverlight is too often compared and confused with, Flash? Especially as Silverlight is deemed a ‘browser plugin’. This was true for version 1, but versions 2 and 3, need a new moniker. Certainly Flash advocates are claiming that Silverlight is “fizzling out”. But I suggest such claims are based upon Adobe realising what Flash cannot do.

    As a developer I see Silverlight’s potential, which is why I am investing my time effort and money in knowing it; especially with the growth in mobile technology. Oh, and I also do Javascript prototypes with Json too.

    Have a nice day 🙂

    Andy B

  8. This article would be great if it were only a tiny bit balanced. To say “Silverlight has XAML” seems to ignore the fact that there’s this thing called MXML (Flex) and you’re either unaware or purposely left that out. In fact, Flex appears nowhere in your article.

    I liked reading it and it was informative. I just couldn’t help feeling like the slant was more of a wall.

  9. @Andy B -> Some good points… The Flash/Silverlight confusion is something this article tries to clarify.
    To side track on to JS for a minute… JavaScript is a late bound functional language. It does most definitely have types (you can use type commands to find out if something is an int etc)… but it makes very little sense in a language like this to have strong typing. Its simply too dynamic.

    @Phillip -> Thanks for your comment.

    As a C# developer Silverlight was the first opportunity to reuse my skills in .NET on the client side (I was quite excited with the SL 1.1 Alpha announcement) -> hence the slant towards Silverlight here.

    I’m a serverside and JS programmer and like so many other pro developers there was no way I was ever going to learn ActionScript (even if it is based on ECMA script). Aside from JS (and WPF XBAP) client side development in Flash was out of the question.

    I’m going in to bat for the Silverlight team here hopefully witout too much Flash bashing, more pointing out where Silverlight improves.

    On leaving out MXML/Flex from the discussion above -> The reason is that Macromedia and Adobe entirely missed DDW with Flex and MXML… there is very little designer developer workflow available here. My understanding (not having worked directly with Flex) is that with Flex has a number of limiting factors when working between designers and developers (correct me here, I’d be happy for a lesson). Flash Catalyst will change all this in a years time.

    Also on MXML as a technology versus XAML. MXML is compiled to the binary Flash format during the build faze (or using Flex Server). XAML on the other hand is an XML based serialisation format that is parsed on the client (perhaps atomically from another, dynamic source if need be). XAML can be extended at runtime with markup extensions (although not in Silverlight yet).

    It’s pretty sweet that you can bring in any XAML you like at any time you like from any source you like.

    With XAML, assets can be stored atomically on the web server. Using relative URI’s if the asset is not found in the XAP package, it will automatically search the server for it relative to the XAP files original location. In this way it can behave a bit like a regular HTML page. I’m not sure if MXML has this feature.

    In summary, because XAML can be edited entirely separately from the code and because Silverlight is atomic by nature all the designers assets and work can be kept seperate from the developer’s stuff. This is great for parallel workflows (real cool with external agencies) and source control.

  10. no such thing as a “flex server” anymore. MXML is compiled into a binary .swf that runs in the Flash player. I’m not clear how much Silverlight does at runtime. It always parses plain text?

    One of the biggest hurdles I see (as a developer) to jump into “XAML” versus all the other flavors is that Silverlight is a subset (right?). You say you can use your .NET skills, but not 100%. So, to me, I can’t imagine the big hurdle is really the learning of the core, but of all the idiosyncrasies–and this goes for Flash or Silverlight. Personally, It’s not like I’m spending all day making my loops and if-statements work. It’s architecture and then it’s fine tuning.

    One huge thing in your post that is odd to me is that you seem to acknowledge but also discount the fact there are some cool things only available in Flash. Often I’ll have a project that is only possible because of some killer feature–say webcam access. I don’t use Flash because I love the way ActionScript implements if-statements. I use it because I can solve a customer need. I definitely have a preference because of my experience, but I’ve had to change the core language over the years–so that’s only part of the issue.

    Finally, the “DDW” (which I had to look up though you spell it out later). Again, it’s not THAT big of an issue. If I look at my work as a developer, I’d say a good 1-5% is spent dinking around with graphics. A lot of stuff is left in native formats (say .png) and other assets are assembled as .swf or .fla files after very little coordination with the graphics person. The biggest issue is getting the same fonts installed on everyone’s machine. Personally, I don’t expect Flash Catalyst to be the savior as there’s not THAT big of a problem to begin with. Maybe that’s because on my projects there are at least a few people involved where if you’re more of a one-man shop it might be more useful–I don’t know… I’ve only seen their vaporware demos of Catalyst so who knows.

    Anyway, I’m all for doing a project in Silverlight. I just don’t have any clients with a project in hand. The ONLY things I’ve heard are for video only. By the way, I don’t believe MSFT is the kind of codecs. However, the stuff I’ve heard about how codecs can plug into Silverlight looks very interesting.

  11. Hey Phillip,

    Thanks again for commenting, I love a bit of debate 🙂

    You make some great points.

    The idiosyncrasies you refer to are there for sure, but I believe that MSFT is on the right track to iron out more and more of them as the library progresses (Silverlight 3 is meant to be closer to WPF again). Bearing in mind of course that Silverlight 2 is really “WPF on the web” version 1 (with Silverlight version 1 not having tackled XAML etc).

    You noted that I acknowledge and discount features in Flash and I’d like to take this opportunity to reassert that the article is not about Flash bashing or about down playing any of Flash’s features/niceties etc. The article’s intent is to show what is great about Silverlight – unfortunately Flash is the first stop when people being evaluating Silverlight by drawing parallels between the two and such. Here I am trying to project Silverlight in it’s own “light” (sorry for the pun :)) My first stop was to contrast Silverlight against Flash.

    On DDW, I think that its importance has been underestimated or misunderstood by the industry and Adobe. This has been demonstrated by Adobe making such a big fuss at Max this year over Catalyst (you could read this as a response to Blend). My RSS feeds were going wild with chatter about Flash Catalyst and my Google Alerts showed a great increase on articles about DDW and so on.

    Over the years you build various skills and methods to create your own workflows – your inherent knowledge of the platform and tools reduces the impact that the lack of DDW in the tools causes. I think at a base “green” level though this gap would be far more glaring. An extreme case of this is with HTML workflows. Designer hands over to developer/integrator and they chop, CSS, JS etc. Nobody really complains that this workflow is inefficient – it’s just how it is. Now I know that comparing HTML design to Flash design is apples and oranges and all that, my point is you are doing it as you have always done it – and until something better comes along you are quite happy where you are.

    Blend on the other hand starts off with DDW built to the core. It’s baked in to the tools. From the very outset Silverlight projects will have the benefit of very clear workflows, patterns and practices. There is no need to hand over designs for “cut up”… the original format is the application format. This brings me back to designers designing applications (without After Effects to show how the animation will work).

    Cheers,

    Jordan.

    P.S. Silverlight parses all XAML on the client side as text.

  12. Hey, I’d love to mess about with Silverlight, but I can’t. Not because I’ve invested with Adobe, but because I use a Mac. I have no interest in developing on Windows, which means no Silverlight for me.

  13. In regards to plugin adoption:
    I believe Silverlight’s only chance of success of preinstallation. IMO, public opinion of Microsoft security isn’t high, nor is public opinion of internet security high. Average users are quickly learning that installing video-codec, and free games on the internet is not safe, and I anticipate this trend to grow. Flash already has high adoption rates, and is the popular platform for video on the web, thanks to youtube, hulu, amazon, and even many of Microsoft’s past web-marketing sites, such as the interactive Vista site.

    In regards to the .NET Csharp framework:
    Adobe has a project called ‘Alchemy’ which allows users to compile C/C++ with the Flash Player. I’m not familiar about what would prevent Alchemy from being able to compile C sharp libraries, but is it possible we may see this in the near future?

  14. ActionScript 3.0 is totally a real language. So is JavaScript. I am a Java dev that switched to the front end and and I fully implement all the OO patterns you can imagine in Flex (and have in JavaScript too).

    This whole DDW stuff is all pie in the sky. I want my designers making it look awesome in Photoshop/Illustrator/Fireworks. I don’t care about them creating hacked up prototypes. I just capture the look and feel and hex color codes from the PSD. If you have ever seen a desiger work in Photoshop or Illustrator and all the kestrokes they know, you will appreciate how huge the barrier is to switch tools.

    And BTW Fireworks has a lot of DDW features. But personally I prefer just getting a pretty mockup and doing the implementation myself.

    Silverlight is good I am sure, and using the .NET stack is good. But I just think MS is going up the wrong tree if they think they are going to capture the designers. Every good developer and designer I know would never use a PC, ever. It’s all Mac.

  15. Thanks Jordan!

    Awesome points and shows how much the RIA alternatives totally blow compared to SilverLight. I feel sorry for the poor sods struggling with Flash and JavaScript now that SilverLight is here!

  16. @ Andrew -> Thanks for your comment 🙂
    Your views in DDW interest me… My points on the view “no DDW, always done it that way” in my previous comment is being validated more and more. I think that in a years time your style will be starting to date 🙂

    BTW, short cuts in Expression are modelled on the “industry standard” read: based on Adobe short cuts.

    @Josh -> I’m interested to see MSFT’s view on your position.

    @Lee -> You missed a main point in my post: People generally have no idea what Flash is. They haven’t heard of Adobe. They still install Flash. They’ll install Silverlight as well. Generally the public view (non technical) of Microsoft is pretty good… they don’t know about IE 5 🙂 Soon a proportion of Internet users would have been born after Microsoft’s security / patch issues…

    I’m interested to see how garbage collection etc. works with Alchemy. Also as far as learning curve goes I doubt many will pick up the C++ features. However this would probably rock pretty hard for a 3D engine or something.

    @Rusty -> Hope you are enjoying it 🙂

  17. I agree with the comments of Phillip Kerman. I didn’t hear any mention of Flex and as a new Flex developer, I’m simply blown away by how powerful Flex is.

    Also, you mentioned something about Silverlight maybe not being as pretty as Flash – but isn’t that a huge factor?

  18. Hey Marshall,

    Once again just reiterating that this post is not about a feature by feature comparison.

    The article starts by contrasting Silverlight against Flash but then draws away from this comparison to concentrate on the benefits and features inherent in Silverlight.

    I start with Flash merely as Flash is always the first word off people’s lips when talking about Silverlight.

  19. Just a little note to those who are on Mac and would like to try some Silverlight development.

    You may not be aware that certain Expression versions/subscriptions come with Parallels which allows you to run Expression on newer Macs.

    Also check out the Silverlight for Eclipse IDE here: http://www.eclipse4sl.org/.

    As you can see there are options available for those with Macs (Intel Macs).

  20. At the end of the day, it doesn’t really matter what we say. The thing that will drive adoption is those killer sites that use Silverlight (or Flash or Flex or whatever) that will make a platform popular. There is a reason folks like Microsoft throw resources at getting major events up and running on Silverlight and Microsoft in a way controls the channel to market with Windows Update. That said installing Flash isn’t a huge burden either – but Silverlight is actually easier to get on a machine assuming that you have recently used Windows Update.

  21. Jordon,

    here in the UK this Monday morning, I carried out a bit a of research into Silverlight’s profile in Web Design Magazines – at our venerable WH Smith. And in nine current issues of web design magazines, I can say without any doubt, not a single one mentioned Silverlight! Nothing. Nada. Even ‘.Net Magazine’ was a Framework free zone.

    But they all waxed lyrical about Flash AIR – especially as Flash it has an RSS plugin. The Adobe ‘Max’ Conference (sounds like Mix?) featured in many, where Flash was ‘evangelised’ by opinion leaders. http://max.adobe.com

    So I am left to wonder, why DOES Silverlight have ‘Opacity = 0.0’ in the web media?

    Andy B – London

  22. @Jordan re: Silverlight support in Eclipse, the system requirements read “Windows XP SP2 (or above) or Windows Vista SP1. Other OS are planned for future versions”

    I’ve been running Expression in Parallels (and/or VMWare), but it’s painful — not the least of which is because I have to leave a finely tuned set of development tools over on the Mac OS X side.

    It’s all a shame, really. I have some lovely potential uses for Silverlight but the barriers to entry for developing in it are still too high.

  23. I am developing business applications in Silverlight/WPF (in Sydney, Australia) and have real experience comparing Silverlight and Flash/Flex.

    I think Silverlight at the moment is not attractive to most designers, even for those who normally working on Windows PCs, although it is very welcome by the .NET developers who have been spoiled by the productivity brought by Visual Studio.

    Most important applications being developed in Silverlight, I guess, such as those that I am writing, are web-based mission critical applications normally running on intranet. By far I havent’seen any big competitor against Siverlight in this area. Flex is even less popular than Silverlight for doing such applications. I have no challenge convincing my clients to accept silverlight because the projects are too hard to develop in Flex regarding required features, eg. multithreading.

    For the developer/designer workflow issue, I have a very good example that at least for twice I tried to persuade some designers whom I work with to rewrite some of their old Flash work in Flex and change programming language from AS2 into AS3 to solve the mess in the currently running codes. They did a research on it and finally told me that they don’t want to change because they don’t want to lose those good graphic and animation features in Flash IDE and there is no way for them to use MXML to finish the job quickly.

  24. Hey Lixin,

    You raise some very interesting points. It’s a bit scary thinking about designers dictating RIA platform choice… something I think any architect/lead/PM the world over would want to avoid. It’s great that you are using Silverlight in the area that I see as its natural habitat -> desktop on the web… *real* RIA’s.

    Also of interest is that these people won’t even update from AS2 to AS3 and MXML 🙂

  25. Just curious about the MSDN thing, I’m pretty certain that you *don’t* get Expression Blend with the base MSDN subscription – or at least I certainly don’t…

    I believe it’s premium and up only! (Mores the pity)

  26. Hey Chris,

    I’m pretty sure my work has the base MSDN subs… and it has Blend (but not Design). I myself have a premium subs and it has Blend + the rest of Expression suite…

    I’ll double check with the MS folks what is where and report back 🙂

    Cheers,

    Jordan.

  27. P.S. Chris, in your subs view, go to Designer Tools, Expression 2, Blend should be the top one (and downloadable).

  28. @Lixin I’m curious your basis for the statement that a project would be “too hard in Flex”. Is that just your team or do you have more general data. Personally, I’ve worked on tons of projects that if I had informed my client that it was “too hard” doing whatever programming I was doing they wouldn’t care. Like I’ve mentioned, often it’s one or two killer features that drives a project.

    As to the “designers” who won’t update from AS2 to AS3. Are they designers or programmers? This totally doesn’t add up… either they’re designers and they shouldn’t be doing code… or they’re developers and they’re living in a fantasy world if they have a reason to not update.

    Finally, as much as I have been bringing Flex into this discussion–it’s really not my thing. But, I think some people here misunderstand what it is… here goes:

    Flash authoring is the animation (and weak programming) tool that outputs .swf. SWFs run in the Flash player.

    Flex builder is a for-money version of an IDE that can compile .swfs. But, you can also compile .swfs using the free command line compiler.

    Flex (the framework) is a framework of libraries that make common tasks very easy. It’s a big framework–but that’s all it is. And, unlike .net framework or AIR runtime, ALL the code for flex framework gets injected into the .swf that gets produced… and, again, plays in the Flash player.

    MXML is about as boring a thing as CSS… (and WPF)–but MXML can only be used to layout and define the elements from the flex framework… and it can only help you output a .swf. It’s a nice way to work–familiar to many. But it’s not really “coding” unless you call HTML coding. It’s layout and element definitions… and a bit wiring together. But, what you’ll code in is ActionScript.

    ActionScript is just the programming language used in Flash and Flex (once you get past the MXML container).

    I’m sure I glossed over a few things and probably insulted many people’s intelligence, but while I find this thread interesting I think it’s falling apart a bit where people are putting down tools about which they are unfamiliar.

  29. @Phillip

    The applications I am writing require multithreading for heavy calculation on realtime data. Of course they are typically soft-realtime data for trading systems instead of hard-realtime ones for control systems.

    As far as I know, there is no decent way to do multithreading in AS3 yet (maybe I am wrong on this. You can correct me by giving some information on how to do multithreding in AS3 with synchorounsly/asynchonously exchanging data between threads).

    We also estimated the timeframe for developing such applications which were supposed to be released as quickly as possible. We finally chose Silverlight with Visual Studio to do the jobs.

    From my point of view, it is a natural choice. Don’t tell me Flex Builder could beat Visual Studio on productivity as I can really write codes from the very back-end straight to the front-end without leaving Visual Studio.

    As for those design guys I mentioned before in my previous comment are designers and they are so called UI developers as well. They have good profession in graphic and animation design plus some skills in writing codes, mainly ActionScript and AJAX, which are good for public sites’ front-ends. They normally design Flash by using Flash IDE. They also use other parts of Creative Suite. They are not unique in Australia. As I know, quite a few companies here have similar roles which are named as “UI Developers”.

    They all know exactly what MXML and Flex Builder are. They also know exactly that there are free Flex compiler and Eclipse plug-in. What I talked about is a typical designer/developer workflow issue and those guys are both designers and developers. The problem they found that Flash IDE doesn’t work with MXML, therefore there is not much advantage for using MXML to build UI. If they chose Flex Builder to build Flex applications, they might need more time exchanging graphics and animations between Flex Builder and Flash IDE that they think is just no good for finishing their jobs quickly to make the clients happier.

    BTW, they basically don’t reject AS3 and think it is better than AS2. The decision that they’ve made to stay on AS2 on the work they are doing was for good balancing between cost and outcome. It was a business decision, I think.

  30. @Lixin, you can do multithreaded calculations through pixel bender. (And it’s not just for pixels either.) That may or may not work for you. I am unaware of why multithreading alone is required. I THINK you’re just saying it’s inherently faster.

    A speed contest between Flex Builder and Visual Studio–who knows. I’ve heard VS is pretty sweet but in my experience 90% of programming is planning and architecture–raw coding time is minimal.

    I’m still not clear who these designer/developers are. If they’re stuck in AS2 you can’t use them with Silverlight either.

  31. Something I haven’t mentioned: you can use Flex Builder (as well as other free of for-money IDEs) to edit ActionScript. So, you can do very advanced very clean “real programming” jobs with just ActionScript (no Flex framework necessary).

  32. @Chris -> Sorry you are correct. Correction to Expression Packs: Only the premium packs have Expression Blend. VSTS + Premium has Expression Studio.

  33. Hi Philip,

    I don’t know how to describe those design people more accurately for you but I want to point out that they are mainly working in I.T. and media industry. That’s why they also do UI programming. For me it is easy to understand that they extend their skills to include coding for standing a better position in the competition.

    Also versions of ActionScript have never been a big problem to them, just like what I said before, the problem is on the developer/designer workflow that they think it is so inefficient that they’d rather choose to stick on Flash IDE with AS2 for the projects they are doing.

    For those projects I am doing, it is a different story. Those are mission critical applications and they require very good realtime performance and my clients also take quick delivery very seriously. We initially develop them in WinForm and then WPF. I also developed some pure Web front-ends in AJAX for my clients becuase WinForm and WPF are too heavy. The purpose for introducing Silverlight into developemnt is that not only Silverlight has almost the same performance and coding productivity as WPF and is much richer than AJAX, but it also helps a great deal on release deployment. Namely almost the same “reach” as AJAX.

    My conclusion is, Silverlight really fills a gap in the ecosystem of Microsoft products.

    I did try to learn and use Flex Builder and AS2/MXML myself before we had Silverlight as a viable solution. Of course I didn’t dig into Flex in depth before I gave up the learning. The biggest difference between Visual Studio and Flex Builder is that Flex Builder is only front-end development IDE. You can try Visual Studio (90 day trial or free Visual Studio Express) and you will understand the difference.

    I didn’t try to use other free stuff because my clients are happy to pay for tooling as they think the sooner we deliver the software, the more money they can make more quickly.

  34. I don’t see anything in the designer/developer workflow or Flash IDE that would make someone want to stick to AS2. Similarly, everyone I know who’s made the switch KNOWS it’s way better.

    Not hard to out-do AJAX is it?

    I hear you about how VS is a better IDE though I haven’t dug into it. I don’t believe anyone has a code hint template for it for AS yet.

  35. Thanks for the post Jordan. It’s a shame I didn’t come across this several weeks ago when it was written. I just lost a technology fight between Flash and Silverlight. One of my main arguments for Silverlight was that I was already more than half way there, being familiar with .NET.

    One of the problems I’m having with Flash / Flex is that to run Flash Paper two separate Flash environments are needed – one for ActionScript 2 and one for ActionScript 3! Nuts.

  36. Not a terribly good article, I am mainly a flex dev but I\’m looking at anything RIA so I\’m up for learning Silverlight (hence the visit to this site). So sure you need people that will get on the Silverlight bandwagon to advertise it and that’s good. The more choices the better, but come on there are so many general claims in your post that it’s just not accurate.
    I think any Silverlight enthusiast should just stick to what they know (unless they happen to know flash inside out) and proclaim the wonders of Silverlight and not try to put down something they either don’t know 100% or just wish to put down.
    Both technologies have there +ve values, so can we not just talk about the positives, make for a much more informative read.

    Things like your quote that Silverlight will be installed as standard on windows 7! Not likely, considering IE will not be bundled with windows 7 (this has been confirmed for the European version – not 100% sure about others) due to monopoly issues, Silverlight most certainly isn’t going to be installed. I’ve seen various performance charts and depending on what slant they wish to show will have the various technology at the top of the chart.

    You say XAML has ‘awesome binding’ (dubious from what I’ve read on other Silverlight sites – but I don’t know enough about SL so I’m not sure), but if you knew anything about MXML and actionscript 3 it has binding that works (maybe it’s awesome, maybe its great? But I know it just works when I need it to). Adobe ‘hacks’ codecs, well if that’s a professional statement as an evangelist then I certainly would not invite you to talk about Silverlight, keep it factual.

    Having a quick scan through some of the posts, flash player will play AS1, AS2 and AS3 code in the same browser and I can code in all versions using flexbuilder or CS3/CS4 so no need for separate environments! Actually if your project uses both AS2 & AS3 then it will be run in 2 separate threads. Which brings me onto multithreading. You can use pixelbender to use as many cores as your processor has in order to manipulate numbers/graphics.

    You should also check out flash catalyst if you wish to compare Silverlight’s developer/designer workflow with Adobe’s range for an accurate comparison.

  37. Hiya, I was reading an additional thing about this on one particular web site. Helpful. Your perspective on it can be diametrically contradicted from what I read earlier. I’m nevertheless pondering with the opposite items of view, but I’m leaning to a genuinely incredibly good extent toward yours. And irrespective, that is what’s so perfect about modern evening democracy and also the marketplace of ideas on the internet.

Comments are closed.