Thursday, February 28, 2008

Silverlight Slim and Fat Flex

A couple of days ago, I talked about Silverlight 2.0. One of the interesting things to me was that it was how Silverlight RIA-style apps could be a lot smaller than Flex apps. I posted a comment to Scott Guthrie and he was kind enough to post a reply to my question. His reply indicates that for Beta 1, a relatively complex application will be slightly smaller than the same thing in Flex. However, much more of the framework is going to be included with the initial Silverlight download starting in Beta 2, thus giving Siliverlight a huge advantage in terms of app size.

When Adobe announced that the Flex framework could be cached on the Flash player across domains, I wondered why the didn't just included it with the Flash player. I have even bugged Flex evangelist Ted Patrick with this question. His response to me was that they would open themselves up to "DLL hell." In other words, there could be problems with people building their app against Flex framework version X, but a user has an older version installed.

As if this doesn't already happen! Let's not forget that Adobe jumped ActionScript from version 2.0 to 3.0 and thus required Flash player 9 or higher for anything authored using 3.0. This was not just some update in framework, it was the entire programming language being overhauled. It is common to use JavaScript to detect Flash player version and require people to upgrade. It is so common and so part of Flash development, that Adobe distributes the ExpressInstall SWF for doing this as easily as possible. Heck, I usually require users to be on 9.0.28 or higher, since that is the version that fixed some bugs with ExternalInterface.

So back to the Flex framework/DLL hell issue. It would simply require people to check for a certain minimum version of the Flash player (since that would correspond to a version of the Flex framework) and prompt for an upgrade if needed. In other words, it would require something that most folks already do today.

To me the real reason is that it is more economical for Adobe to not include the Flex framework. Ted has a widget he wrote showing over 3.9 billion downloads of Flash player 9. Add an extra 200K to that and you get over 726 TB. That's a lot of bandwidth to pay for. That's a price Microsoft wants to pay, because it would indicate lots of folks with Silverlight installed. Perhaps once that happens, Adobe will reconsider.

6 comments:

Dan Schultz said...

Hey Michael,

I think that Adobe was right in their decision to not include the Flex framework with Flash. The reason for this is that not every Flex site out there will be using the latest version of the Flex SDK – I'm guessing that this is what Ted is referring to when he says "DLL hell."

Flash will actually cache different versions of the framework, depending on which version of Flex is being used on the website the user is viewing. So ... if one website uses Flex 3, and another website uses Flex 4, each will be cached separately and the SDK's will not conflict with each other.

Also, I don't think it's reasonable to include every version and minor version of the SDK in the Flash player download. Since the SDK including charting and remoting is over a meg.

Now my question is how Silverlight will address this issue ...

Dan

Michael Galpin said...

My argument against this is already contained in the post. How is this any different than when Adobe went from AS2/FP8 and AS3/FP9? SWFs written with AS2 still run on FP9. SWFs written with AS3 have to check the client's player version.

Now imagine if the Fx framework was included with the Flash Player and we go from Fx3 to Fx4. Hmm, how would this be any different than going from FP8 to FP9? Obviously the "new" FP would have to support Fx3 APIs. This is certainly no more difficult than supporting two versions of AS.

The "every version and minor version" is FUD. Minor version changes are to the FP, and are usually runtime execution, not APIs. Major versions do have API changes, but Adobe is already going to be feeling a lot of pressure to keep API incompatibilities to a minimum (in other words, no more AS2->AS3.)

Dan Schultz said...

You have to remember that every class in the Flex SDK is straight ActionScript – which is great from the developer's persepective, because we can open Flex's class files directly. Going from AS2 to AS3 is possible because each run in their own virtual machine. So when Flash detects AS2 code is executed, it starts up a new VM to run it.

At any rate, what's wrong with Adobe's method of framework caching? I think your original argument is mute. The framework has to be downloaded regardless if it's compiled into the Flash player or if it's loaded on demand. With Adobe's approach, the end user gains from the smaller app size, and a smaller Flash player download. Win/win ... no?

Michael Galpin said...

My point was that if you can manage multiple versions of bytecode (AS2 vs. AS3), you can certainly manage multiple versions of compiled classes.

I don't think it's win/win at all. It's a short term win for Adobe, but that's it.

First, it requires a developer to do a special compile of their SWF to separate out the Flex framework. That's not too big of a deal. The first time a user gets to the SWF, they have to do two downloads. That is definitely not a win for them. The service provider must also serve two SWFs, and pay for the bandwidth and/or for the two SWFs to be cached on the edge. That is definitely a lose for the service provider.

If the framework was included with the Flash Player, then the user pays the price on the initial download (if it is even downloaded, it is pre-installed on many computers.) The service provider never has to pay for the bandwidth of the framework, Adobe pays for it. That is exactly what Microsoft is doing.

Anonymous said...

[b]VIAGRA Holland VIAGRA BILLIG REZEPTFREI BESTELLEN[/b]
http://www.getsomeskillz.co.uk/forum/member.php?u=13
[b]FREE VIAGRA VIAGRA PREISVERGLECH BESTELLEN[/b]
VIAGRA BESTELLEN eur 0.85 Pro Pille >> Klicken Sie Hier << BESTELLEN BILLIG VIAGRA CIALIS VIAGRA bestellen REZEPTFREI VIAGRA KAUF
http://cafesuoimo.com/member.php?u=8
[b]VIAGRA alternativ VIAGRA BESTELLEN PREISVERGLECH[/b]
[url=http://www.barroco.comyr.com/member.php?u=3]BESTELLEN REZEPTFREI VIAGRA[/url] - VIAGRA potenzhilfe
[b]VIAGRA Nederland VIAGRA PREISVERGLECH BILLIG[/b]
[b]VIAGRA online kaufen VIAGRA REZEPTFREI PREISVERGLECH[/b]
[url=http://www.noise-unltd.com/member.php?u=2 ]BESTELLEN VIAGRA[/url] - VIAGRA Schweiz
[b]VIAGRA preis VIAGRA PREISVERGLECH BILLIG[/b]
[b]VIAGRA Oesterreich VIAGRA BESTELLEN PREISVERGLECH[/b]

Anonymous said...

http://www.djmal.net/thaspot/members/viagrakaufend
[b]VIAGRA® kaufen VIAGRA REZEPTFREI BILLIG[/b]
http://www.serataanime.it/forum2/member.php?u=336
[b]VIAGRA on line PREISVERGLECH VIAGRA BESTELLEN[/b]
VIAGRA BESTELLEN eur 0.85 Pro Pille >> Klicken Sie Hier << BESTELLEN BILLIG VIAGRA CIALIS VIAGRA ohne rezept VIAGRA REZEPTFREI BESTELLEN
http://www.barroco.comyr.com/member.php?u=3
[b]VIAGRA alternativ VIAGRA REZEPTFREI BESTELLEN[/b]
[url=http://www.einvestorhelp.com/member.php?u=37776]VIAGRA prices[/url] - VIAGRA Germany
[b]VIAGRA prices BILLIG VIAGRA REZEPTFREI BESTELLEN[/b]
[b]VIAGRA rezeptfrei VIAGRA PREISVERGLECH BILLIG[/b]
[url=http://www.zonatuning.com/members/viagrakaufend]VIAGRA Schweiz[/url] - VIAGRA Holland
[b]VIAGRA online kaufen VIAGRA REZEPTFREI[/b]
[b]VIAGRA prices VIAGRA[/b]
[b]VIAGRA® kaufen
VIAGRA Deutschland
VIAGRA online kaufen
VIAGRA on line
VIAGRA alternativ
VIAGRA rezeptfrei
VIAGRA Kaufen
VIAGRA Apotheke[/b]