Tutorials, extensions, and source files for ActionScript, Flash, and other Adobe products.


Post-Flash Player Release Depression

Posted October 30, 2008 by senocular

After every Flash Player release (namely new versions of the player, not so much dot-releases) I enter a depression. This depression is brought on by the fact that no matter how confident I am about a certain release, there are always problems with it. The worst cases are when existing content breaks as a result of a new player version. And as much as I'd like to say that isn't the case with Flash Player 10, I can't.
First of all there are the security issues. These actually aren't THAT bad, at least not in my perception, but still not good. These issues are imposed by threats to the security of the player and possible attacks against users that could result from certain behaviors or vulnerabilities that existed in a previous version. Simply put, though they might suck, these are fact-of-life concerns that have to be addressed for the greater good. You can blame the greed and selfishness of mankind for these changes, not Flash Player engineers. For more information on what has changed, see: Understanding the security changes in Flash Player 10.

There are a couple big ones that could require re-working existing media, namely the new user initiated actions (UIA) restriction. The UIA model is similar to that of popup blockers requiring a sort of "user permission" for invoking many actions, especially those that have a popup nature such as load/save dialogs, by requiring that a mouse button is clicked or keyboard key pressed for the action to occur. If you've become familiar with the recent clipboard attacks, this also addresses that.

Next you have the detection script issue. This is another one that I don't get too upset over since, again, its not really Flash Player's fault. But somehow, inevitably, with every release, someone's JavaScript (or similar) detection script will fail to recognize the new player version and prevent media from being played with the new player. With Flash Player 10 this has become a major issue because people haven't accounted for the 10. What's the big deal about the 10? For one, we now have a 2-digit number instead of a single digit number which could throw off some parsers. Additionally string compare of "10" > "9" will return false so many detection scripts will see 10 in the version string and still think it's less than 9 (the required version of the site). Make sure you have your detection scripts updated, or at least provide a way for the user to bypass the detection if they think they have the right version (and maybe a contact link for contacting the web engineers in case such a situation does occur).

Finally you have the depressing parts of a release - the things that really bring me down - the bugs. And these aren't necessarily limited to the new features (which might be expected to not be perfect at first, as with the case with any software); existing features, even those not being added on to or enhanced in the new release, can suddenly break. You see, Flash Player reuses a lot of its code paths for different features to help maintain a small file size for the plugin. Any modification to one of those code paths could potentially affect any number of features or break existing functionality. Because of the dependence of so much media out there in the world that depends on Flash Player and its backwards compatibility, it is crucial that these bugs are caught and fixed as soon as they are found, before a release gets out the door. This is especially important for a platform on which other software is being developed.


You've probably heard the numbers. Flash Player is out there. And there are a LOT of sites with Flash content. Adobe cannot test everything and needs your help and participation in public betas to help identify issues so they can be fixed before release. PLEASE, once a beta comes out, test test (developers!) test!

Let me throw some additional data your way. There are currently 10 major versions of Flash Player. Each of these versions have related media versions, or SWF versions that media can be published to that requires that version of a player or higher to function. For example, if you create a Flash Player 10 SWF using Flash CS4, you need at least Flash Player 10 or higher to play that file. You also have two versions of ActionScript, or more specifically, virtual machine versions that execute different versions of ActionScript (AVM1 and AVM2). Most legacy features are supported by both VMs, though new features are primarily targeting AVM2. Then you have the different kinds of players - about 4 (and we're not even counting AIR here). You have the plugin version for Netscape-compatible browsers (Firefox, Safari, etc.), Active X for Internet Explorer, the standalone player to be run from the desktop, and what is known as the external player which is embedded in applications like authoring tools and Acrobat Reader. On top of that each browser is different. They, and the player, also behave differently among the 5 available WMODE options available for the player when embedded in an HTML page. There are also a number of different security sandboxes for each. And then you have operating systems. Flash Player supports, primarily, Windows, Mac OS, Linux, and Sun. Each of those OSes also have variations of themselves (XP, Vista, different versions of OS X, and the 17323863 Linux distributions...). Now that Flash Player has been using hardware acceleration (as of 9,0,115,0), hardware is also now a factor. And you can imagine how many different kinds of video cards and other configurations there are out there. Assuming I'm not forgetting anything, which I very well may be, multiply all those numbers together and you'll get an idea of the number of testing environments there are for Flash Player and what each feature should be fully tested against. It's very complex, and I can telly you right now, Adobe is not hitting them all.

The point I'm trying to make is, if you want Flash Player to be successful and bug-free, it needs your help to do the necessary real-world testing, especially to make sure existing content doesn't break. If you're up with testing out the new stuff, that always helps as well, but priority one is making sure a new player is not breaking the interwebs.

I've already seen a number of disturbing issues after the release of Flash Player 10 that almost brings me to tears. In fact, I'll try to point out some of the issues in later posts in an effort to help others avoid them or apply the appropriate workarounds if available.