The Withering Away of Flash.

Programmers are, by nature, practical. (Exhibit A, Jonathan Snook.) We will find the shortest, most efficient route to complete whatever task is set before us. Need this website complete by Friday? You got it. We’ll take a shortcut here, cut a corner there. We’ll import a library, ignore accessibility, and pretend like the idea of print stylesheets and Internet Explorer 6 never entered our minds. You’re happy; we’re happy.

Except when we aren’t.

Programmers, you see, are also intensely ideological. If more than one option is available, we pick a side and defend it against all comers. You use PHP not Ruby? YOU’RE DOING IT WRONG.

You think it doesn’t matter if you camel case or underscore? FAIL.

You’re on a PC? In 2010? EPIC FAIL.

This apparent contradiction is actually easily reconciled. At least according to this incredibly scientific poll on Hacker News, the vast majority (60 percent) of programmers score as either INTJ or INTP on the Myers-Briggs test. A study of the U.S. population suggests the total INTJ and INTP population is only 5.4 percent. Our working hypothesis, therefore, is that programming attracts (or requires) people predisposed to thinking, judging personality types.

When we isolate the Thinking/Feeling and Judging/Perceiving factors from all responses, however, a slightly different picture is revealed. “Thinking” soars to 82 percent of those tested, while “judging” falls back to the pack at 48 percent. (The same study shows T of 40 percent and J of 54 percent.) Pushing our amateur psychology to its limits, we deduce that practical nature of programmers corresponds to the high likelihood of self-identifying as a thinker, and while our detached nature makes us less likely to judge, we shouldn’t be surprised to find that ideologues tend to shout louder.

In the spirit of realpolitik, let’s set the record straight.

The Flash Mob.

There are, no doubt, some Flash developers willing to abandon all reason in its defense. For them, it is the only rational choice. Flash’s poor performance on a Mac is Steve Jobs’ fault. The snubbing of Flash on the iPhone and iPad is misguided and will backfire tremendously. Etc., etc., etc. I believe that number is small.

For everyone else, practicality outweighs ideological purity. When you want to make futuristic, sound-effect laden websites there just isn’t any other choice. While that example is deliberately ridiculous, it illustrates the greater point: some developers have a core dependency that only Flash can meet. Perhaps it’s the sound and video. Maybe they like the option to write once and deploy across multiple browsers and platforms. Or maybe they’re building a game that requires 3D and real-time interaction. In every case, the least common denominator is pragmatism. Flash is either the only game in town or it’s so far ahead of HTML that it may as well be. That’s not to say that designers and developers who choose Flash don’t like it. In my experience they do. And why shouldn’t they? The toolkit is pleasant, the code is easy to work with, and, most importantly, the results can be stunning.

The HTML Gang.

Compared to Flash, HTML is messy and ugly, but it too has a quite practical application: it works everywhere. It might not work the same everywhere, but you can be reasonably assured that if your page is written in HTML, it will display on desktops, laptops, phones, video game consoles, and anything else that accesses the web. HTML is the lingua franca of the Internet.

For many in the HTML camp, its practical nature has transcended mere practicality to become a deeply philosophical choice. It is by default accessible, semantic, and extensible. Visitors to the site can print the content, copy it, re-size it, steal it, and manipulate it with external stylesheets and scripts. Libraries like eCSStender, jQuery, IE7.js and their brethren have enabled cross-browser use of advanced properties, abstracted away the ugliness of the DOM, and brought an old, recalcitrant browser into line. Open source advocates love HTML because no company controls the core technology and none can demand license fees for it. Students and aspiring web developers world-wide prefer it for its price, which, in contrast to purchasing (or pirating) a copy of Adobe’s expensive software, looks awfully good.

Before we bury Flash, however, we should back up for a minute and compare the essential nature of each technology.

The 10,000 Foot View.

At their cores, Flash and HTML really aren’t that different. Let’s break it down:

That’s it. For Flash, that means ActionScript and a lot of thoughtful features added by Adobe like the ability to embed images, videos, sounds, and real-time events. For HTML, that means the HTML itself plus CSS and Javascript. Guess what? Steps one and two? They don’t matter. Once you’ve reached a certain level of quality, it’s just not that important. Sure, it would be nice if HTML had this or that tag, and it would be nice if Javascript worked a bit differently sometimes. That HTML doesn’t have every tag we wish it had and that Javascript doesn’t work exactly like we wish it would only means that we have to work harder to make it right. Unfortunate? Sure. Game-ender? Hardly.

The API is what it’s all about. For years, HTML had no way to play video natively, no way to play audio natively, no way to draw lines whether as pixels or vectors, no way to parallelize script execution, no way to access the hardware’s video acceleration, no way to receive events from the server without constantly polling, no way to use fonts the user didn’t have installed on his system, and on and on. But now it does. Now those advantages Flash had are going away.

The New Rules.

Somehow the rules changed, the status quo was upset, and the momentum shifted. Maybe it was Mozilla’s unflagging support of the open web. Maybe it was Microsoft’s aggressive implementation of HTML5 and CSS3. Maybe it was Google’s vision for a free and open Internet.

The coup de grâce, history will note, was Apple’s release of the iPhone sans Flash. The mobile Internet became a force to reckon with overnight, single-handedly trashing Flash’s former claim of ubiquity. The iPhone has gashed a gigantic hole in the number of people browsing the Internet who don’t have Flash. The iPad is poised to increase that number.

All this, of course, would mean nothing, worse than nothing, if we didn’t have any way to reproduce what Flash had formerly offered. But we do. HTML5-based audio and video players are appearing in the wild. Games like Tetris are being written entirely with the new canvas tag. Comet and PubSubHubBub are re-defining what real-time looks like in HTML. A bevy of other next generation technologies like the drag-and-drop API, web workers, and offline storage are right now providing the infrastructure for powerful applications that are beginning to encroach even unto the gates of desktop applications. Advanced CSS properties like corner radius, background gradients, multiple background images, additional selectors, font embedding, text shadows, and RGBA notation have allowed enterprising designers to create rich, graphical experiences without the traditional weight of image files and extraneous markup. These are not hypothetical situations. At least one browser supports every feature listed, and more are being added. This is not news if you have been paying attention.

What is news is that the Rubicon has been reached and the die, as it were, has been cast by Apple. The sum of these technologies and their future promise is enough to provide a real alternative to Flash for the first time ever. It was suggested earlier that web developers chose Flash because it was in some cases the only game in town. Whether the entire site was built in Flash, a few helpful fonts were embedded, or a video was displayed, Flash was there to play its role. That role is in the process of being subsumed by the browser’s implementation of HTML5 and CSS3.

Jeffrey Zeldman suggests the era of plug-ins is over. I’m not convinced that’s the case, but I am sure the era of Flash is approaching twilight. It is only a matter of time before games like Canabalt are written by default in HTML, CSS, and Javascript, video sites use the video tag, and music sites just play music—no plug-in required. It has already begun. Perhaps Adobe can re-position its offering somehow to find a spot in this new playing field. More likely, Flash will continue its withering away into obsolescence. Few will mourn its passing.

Here Be Comments