BitRot | Flash vs. HTML5

Flash vs. HTML5

on

Based upon the sheer quantity of media about this debate in recent times, this is going to be the next big software war, with companies and organizations lining up against each other. The two flagships that everyone ought to know is Adobe, backing Flash as its own proprietary platform, and Apple, backing the W3C’s new HTML standard. Before I weigh in on this, a history lesson is in order.

Flash was invented by a guy named Jonathan Gay, the same guy who wrote SuperPaint when he was in high school. I have to admit, I grew up using Silicon Beach Software and playing their games on the family Mac Plus. Anyways, SBS was bought up by Macromedia, which was bought up by Adobe. So Flash has always been a proprietary platform, where developers foot the cost to create content, so that the runtime files can be provided for free.

HTML has been, from the start, an open standard. Originally developed at CERN, stewardship migrated to the IETF, and from there to the W3C. Currently, the latest version of the standard (HTML5) is under development by the WHATWG, headed up by engineers from both Apple and Google.

While HTML5 does provide some of the functionality of Flash, it is currently much more limited in both capability and prevalence. The majority of users quite simply do not use a browser that supports HTML5, either in part or in whole (not really possible, since the standard isn’t final yet). The most noticeable addition to HTML5 is the <canvas> element, which allows developers to draw vector graphics dynamically through javascript. The driving force behind this push is the assumption that serious flash developers will be willing to switch to the HTML5 standard, since actionscript is based upon the same standard as javascript (ECMAScript).

Of course, Flash development hasn’t been stagnant, with the latest version (10) adding support for 3D rendering and effects. But these features come at a price. Flash is considered by many to be the bane of a speedy web browser. Additionally, the inability to navigate directly to a particular state of a Flash object through a URL pigeonholes websites built upon Flash to either be brochures, or be fully featured applications, which require far more time and effort to develop than a simpler site. In general, there has always been a feeling that using Flash is slow, buggy (with good reason), and overused.

A good example of how not to use flash can be seen on most news websites, where at least three or four advertisements will be displayed at any given time as embedded flash objects. If the browser is lucky, then those ads won’t perform expensive operations like image scaling and alpha blending. If the browser is unlucky, then you’ll need a small cluster to render the page without stressing the processor. Personally, I’m wary of installing any platform that allows other users to execute expensive code on my computer at will.

The fact that Flash bypasses built-in protections in modern web browsers such as cookie storage and persistence policies leads me to the conclusion that it will only be a matter of time before we start seeing malicious flash objects embedded in websites. While Adobe goes through the motions of emphasizing security, their approach is seriously lacking, only tackling the most public of flaws, rather than the most serious design flaws.

Apple’s decision to not include Flash in either the iPhone nor iPad platforms is just the beginning of the backlash against Flash. I would even posit that Flash has been driving the purchase of faster computers for some time, as more and more web pages turn to that platform for cheap content creation, with consumers becoming frustrated with their “slow” computers.

On a technical note: Flash really is a poorly implemented platform. It doesn’t use a higher-order data structure to handle display objects, which is one of the reasons why it slows down quickly when displaying a large number of objects. Moreover, the lack of built-in data structures has lead to programmers using suboptimal solutions for common problems, such as collision testing (a problem that can be solved in fractional time).

HTML5 has some thing going well for it right now too: because of the lack of dependence upon mouseover events, which are meaningless for a touchscreen,

All of these signs point towards several future developments:

  1. Apple will likely cave into pressure to allow flash to run on the iPhone/iPad platforms, but only after HTML5 starts to move forward as a standard

  2. Flash will either die after several years, after consumers realize that it is evil, and developers abandon it in favor of HTML5 and free development tools, or it will become far more efficient and the development tools will become free.

  3. Adobe will be forced to reevaluate its positions on security and privacy after the first Flash “virus” is found in the wild

  4. Despite there being demand for it, no common or uncommon data structures will be added to the ActionScript API.