You might think that I feel conflicted here, because I earn my living by working with Adobe products. The fact is though, that I hate flash as much as the next guy. Well, unless the next guy is Steven Frank, in which case I hate it slightly less. But I wanted to offer my perspective on why Flash is so ubiquitous.
In my view, Flash beat out its main competitor, Java, by racing to the bottom. What I mean is, while Java was busy trying to teach content creators the beauty of strongly typed object-oriented programming, Flash was busy letting them put shapes on a timeline and tween them around.
The calling card of Flash is that it fails silently. Unless you have a debug version of flash player installed, you will never see a Flash error box pop up in your browser. In its early years, it was pretty stable, too. Java on the other hand likes to tell you about its problems. Now, a programmer might tell you, of course I want to know when I've made a mistake, that forces me to fix it. But we're talking about racing to the bottom right now: Flash never concerned itself with pleasing programmers, in the early days. It wasn't for us.
When you're a performer, a singer say, and you're on stage in front of a real audience, the worst thing you can do is show weakness. If you sing the wrong note, if you start singing the wrong song, you just roll with it, and you never admit it to your audience. Performers and artists know this. Now, shouldn't the public face of your website be the same way? The genius of failing silently is that no-one will ever now how incompetent you are, they will just think they don't know how to use your website, or that there's not much interesting going on. They will never figure out that you tried to access a null pointer. As a brand manager, which would you pick?
So, in the same way that HTML flourished by allowing anyone to make a website, Flash flourished by dramatically lowering the barrier to creating dynamic content. In the process it became an engine for commerce. That is a legacy that I support, either because I am a big soft-headed populist, or because I am a big hard-headed pragmatist.
What really steams my beans lately, is that Adboe seems to have changed course with Flash, and is steering hard, away from designer-land and towards programmer-land--which is fine--but now they're stuck in the middle in a bad way.
Their designer-oriented tool (Flash CS4) is not fully inter-operable with their programmer-oriented tool (Flex). Designers feel betrayed by the shift away from their specialty, and programmers are not yet satisfied, because of the bad performance and outmoded language. The flash player crashes. A lot, for no good reason. So they've lost the never-let-them-see-you-bleed mystique.
I know why Flash became popular, and I can see the logic behind where it's gone since, and yet I hate it, and Adobe, for
A, not having the vision to lead the industry they've built
B, not having the technical acumen or leadership to do a good job with any of the tools they make
C, shoving it down our throats and making us pay for it, anyway
As a game designer for browser games, I almost literally don't have a choice, I am forced to use flash. And I resent the hell out of it.
Let me be clear: All of the tools Adobe ships for working with its flagship web technology are crap. Utter crap. The virtual machine itself fails at what should be its main goal: invisibility. The Flash empire is Goliath waiting to meet David, but David never shows up.
In this day and age we have an expectation of positive progress, and when we're opressed by bad technology it seems every bit as urgent as if a foreign army were living off our land. When it doesn't get better over the course of 5 years, it feels like the gods have abandonded us. Where's your messiah now, Moses*? Oh Adobe, who will play the Google to your Microsoft?
*Uh, you don't have to actually listen to it, I just wanted to find it for my own edification.