| Comments

One of the goals of new versions of Silverlight is to be be backward compatible with previous versions.  We make this a priority goal so that people can keep their previous applications deployed while not worrying that people with newer Silverlight will have a broken experience.

Silverlight 3 has been out in beta form since March 2009 and hopefully if you are a Silverlight developer you’ve had a chance to work with the new features and tools.  If you have existing Silverlight 2 applications that are deployed, I wanted to draw your attention to some action items if you haven’t done them already.

Call to action: Test your Silverlight 2 applications for compatibility!

What does this mean?  Well, we want your existing applications to be successful and want to ensure their compatible.  Here’s you’re call to action:

  • Keep your Silverlight 2 applications deployed.
  • Set up some test “user” machines to browse to those applications.  Install either the Windows or Mac runtime of SL3 beta respectively (ideally both if you have access to both operating systems)
  • On the test machines start browsing and working with your Silverlight 2 applications…test your normal scenarios
  • If you find issues, report them immediately to the forums with repro steps and as much detail as you can.  Might I suggest making the topic SL2Compat: <your issue> so as an example: SL2Compat: my app stopped calling web services.

As I mentioned, our goal is backward compatibility, so hopefully your applications will be unaffected.  As you might expect there will be breaking changes among Silverlight 3 beta to release as well as some fixes in Silverlight 3 that we’ve found needed to be fixed.  How will these fixes potentially affect your applications?  Hopefully very little due to quirks mode.

A word on quirks mode

The Silverlight team wanted to fix some things in Silverlight 2 in the new version of the runtime, Silverlight 3.  However by fixing some of these things it was possible to change behavior of existing Silverlight 2 applications.  In order to get around this, we made these potentially problematic changes “quirk mode changes.”  A quirk mode change is one that the Silverlight 3 runtime will not enforce if the runtime detects that the application being run was designed for Silverlight 2.

The runtime detects which target version by the RuntimeVersion attribute in the application’s AppManifest.xml file.  If you’ve never modified it, that’s fine.  The Silverlight build tools automatically append the correct runtime version into this file at compile time.  So if you are working with Silverlight 2 release tools, the attribute is 2.0.31005.0.  If you work with Silverlight 3 tools, it will be the Silverlight 3 version number.  The bottom line here is that your Silverlight 2 compiled apps will still run under Silverlight 3 without modification – quirks mode happens automatically.

What happens at Silverlight 3 release?

Nothing.  If your Silverlight 2 applications work under the SL3 runtime, which they should, then you are fine.  You may want to take advantage of the many new features of Silverlight 3.  At the time when you do this, you will be working in Silverlight 3 and anything that may have been fixed from Silverlight 2 will now be affected (see quirks mode diagram above). 

When you do update your Silverlight application to use version 3 and redeploy the XAP, make sure that you also update your deployment mechanism (i.e., the <object> tag or the Javascript method to create the Silverlight object).  You’ll want to ensure you update the new minRuntimeVersion attribute to the Silverlight 3 ones to ensure the end-user has the correct version.

If you have a Silverlight 2 application, we encourage you to ensure you’ve done your compat testing.  If you find issues, report them in the forums, not here.

Hope this helps!  Onward to Silverlight 3!

Please enjoy some of these other recent posts...