Update 20th Nov: Made a wee mistake in article below, Steven Sack not Aral Balkan created the gaia flash framework, apologies to Steven and Aral for the mistake, now corrected below.

This highlights the dangers of shiney objects to geeks
I’ve been a web coder for about 4-ish years now, during most of my time I’ve exclusively programmed in action-script; you know that scripting language flash uses.
During this time I’ve seen the transition in the flash player from the old order of macromedia into the new order of adobe, and to be honest the whole thing has been a bit of a disappointment, I’ll explain why i think this in helpful paragraph sized chunks below…
Some starting assumptions I’ll make before going into more detail:
First off why do folks use flash rather than javascript, html and other similar things, basically it comes down to two different reasons; complex applications such as games/video players or picture editors, to provide a website better than what html/css/javascript can natively/easily provide.
Secondly what do folks expect from a website, well they expect it just to work, not shout or do anything usual and basically do it’s job what ever that is; to inform, entertain or educate, or lastly alternatively to shop… whatever. Generally the best websites only do one of these tasks, Gmail doesn’t try to entertain you, it just informs you of your daily email, it doesn’t try to entertain you with cheap and nasty games and stuff etc.
Now onto why adobe and flash in general is a bit of a disappointment:
On flash website build quality versus html website build quality
The website is a freeform platform based on open standards and is generally cross-platform and has a low level of entry for new developers. The base of the web is html a simple mark-up language which is both easy to learn and easy to create interfaces which work, in-fact unless one starts to add javascript into equation, it’s very hard to actually create buggy html*1.
On the other hand: Flash is a software tool, flash swfs are pieces of software, pieces of software tend to be buggy when not properly software engineered, unlike mark-up languages which could be written by almost anyone and as long as they validate against the w3c standards should work.
When ever someone makes a Flash website I just wish they would tell the true and say they are “building a brand new piece of software which will reproduce the functionality of a website”, that is the task they are embarking on.
My point, a lot of web developers use html/css/javascript and flash, not many inexperienced html/css developers would start custom hijacking links using javascript or try to build an entire website on the one page using javascript, it would be understood that this required a lot of skill and was probably a poor idea if entered unprepared.
On the other hand nearly every all flash website I’ve seen does all of the above *2 regardless of the skill of the practitioner. There is nothing wrong with simple websites. The good old fashioned moral of keep-it-simple-stupid seems lost in the world of flash, and this unfortunately affects the website build quality, reliability.
Put simply the Flash website built to an equivalent html standard costs more effort and requires a higher level of ability in the practitioner, and that this fact isn’t always understood as regularly by the Flash side, note the same argument applies to Ajax websites verses standard css/html websites.
On flash versus javascript/html/css maintenance … and unexpected bug fixing
Javascript as a standard hasn’t changed much since it was created, and the only thing I can think html has really gained is the canvas element in recent memory (eg say 3 years), CSS is running amok which new features but none of these really affect functionality just display *3. Generally websites left to there own devices for a few years may look a bit dated but generally since work well just look a bit naff.
Flash on the other hand this year has had a major version upgrade which’ output is incompatible with previous players; at least 3 security policy updates which has retrospectively changed features in older output sometimes breaking them *4.
In general things haven’t been very stable and having spoken to a adobe representative directly on the issue at this years “Flash at the Beeb” it seems that’s just the way things will happen, no warnings, changes will be made will little regard to existing content, watch out, test regularly.
Now don’t think my Flash upgrade policy is hitting flash, I feel the same happens with all VMS systems, software build for Java 1.4 may not work with newer versions, also when upgrading a class package to a new version things do break from time to time, and when a new version of a os*5 comes out you test your software to check it still works… and this is my point.
Flash with the new Adobe take over; Flash now requires a maintenance cycle, excellent news for freelancers, a “pain in the ass” for companies relying on Flash for business critical systems.
HTML and it’s kind however really don’t change too often and as they are browser specific, only require re-checking on new browsers; regression style re-checking of previous tests are required.
My point comes back to inexperienced practisers on Flash creating websites and applications and simply expecting them to work ad-infinite, that’s simply not the case anymore, flash 1-8 yes, flash 9+ no. Regression testing is required across your browser support range on new flash updates, on-top of the regular functionality checking on the release of a new browser.
On flash versus javascript/html/css accessibility
In html accessibility is kinda built in, and if you follow simple rules such as always using alt images, not using tables, and using CSS for all styling, your website should pretty much work in most screen-readers, be indexed by goggle easily, and work in any browser in the world, any web phone in the world, and all in the world is good.
In Flash accessibility is kinda also built in as standard, just not as well, in fact flex (the software engineers flash IDE) doesn’t actually have any built in, in general the level of support is a bit naff.
- As of flash 9 keyboard and mouse events must be added separately *6, which means some flash content can’t even tab and fire buttons from a keyboard.
- Flash built-in tabbing is based order of placement rather than position on the screen, so really these should be set manually by the coder to make them sensible.
- Flash’s images have no alt tag equivalent and there isn’t any built in tool-tip support so these normally have to be written from scratch.
I could go on for a while (eg Flash on a mac and Adobe air have no accessibility support as of writing)… but basically if your disabled or a screen reader flash ain’t your friend, it’s your personal hell.
Getting back to my point I’ve hammered in above, most flash developers don’t know what a screen-reader is never-mind actually bothering to implement the required steps to enable the functionality. With this in mind advanced concepts such as progressive enhancement fall to the way side rather quickly.
Conclusions
So basically my point is Flash is hard, it’s software engineering, you are creating a software product or a website,
- If your creating a website build a website, in html/css/javascript like a sane person.
- If your building a component for a website or a software product such as a video player, then it is sensible to build that product in Flash. But treat that product with respect and build it to the same standards that you would for a software product, think usability, think what is my functionality, what is my design, think testing, think maintenance cycles.
Simply put Flash has grown up, it’s time those building Flash apps did too.
the Zap
To producers that means no more application design specifications on napkins please…
*1 I’m not counting CSS browser design artefacts as bugs, only actual “this website doesn’t work anymore”, in sent me to “wrong page”, “why doesn’t my back button work” problems as bugs
*2 With a notable except being those using Steven Sacks Flash Gaia Class framework which reduces the complexity of creating a all flash website enormously, while adding support for back browser buttons and such.
*3 I’m talking about core functionality rather than design functionality which is the opposite, the ability of CSS practitioner needs to be high to achieve what flash does effortlessly for static websites.
*4 - 3 minor recent security fixes within the last year or two-ish
- Now websites require policy files to allow other domains to access their content.
- Getting Bitmapdata from streaming video has been disabled in certain circumstances.
- Uploading files can now can only be initiated within a mouse click event.
Also minor things like context menu items created with certain strings such as “settings” in them fail silently now
*5 think vista
*6 ok there is ButtonMode but still… if you don’t accept this point replace it with the lack of keyboard support when in full screen (which may be getting fixed soon but it’s a rather gaping accessibility hole to have for so long)