The Flash Rendering Engine

One of the most annoying things of late has been the slow "glacial" pace of the W3C, which is the standards body for HTML/CSS.

It's been bandied about by most professional web devs in the blogosphere that while Flash has gone through 9 versions of it's software in the past 10 years, HTML 4 has not changed, and CSS 3 has not even been finished, let alone implemented in any consistent or in depth way by any of the browser vendors (and who can blame them? It's hard enough implementing a strictly defined standard, let alone one that keeps changing every other year).

Flash, however, keeps growing, changing, adapting AND is more consitently adopted across all platforms and browsers than either Javascript or CSS. If you design something in Flash, you can pretty much guarantee that 99% of people will see what you want them to see, and interact with your application in a consistent way.

Now, I have quite a few issues with Flash. For one, it's IDE and workflow are really terrible. Sure, some people love it, but even hardcore Flash nuts will tell you it's IDE is horrible. It's not search engine indexable, it has some usability problems, and feels clunky much of the time.

However, during all of this discussion on the web about the standards body's slow, tired and frustrating pace, it struck me that there may be a happy medium where commercial innovation and open standards could not only live together and play nice, but complement each other in a powerful way.

What if Flash became the modern rendering engine of the different browsers? Flash can already access not only the DOM of your page, but also the Javascript you've inserted as well as the CSS you are styling with.
What if Flash could read your HTML and compile the resulting information into a swf at runtime?

Here is what I am imagining:

You're designing your HTML page. You have your DOCTYPE, your opening HTML tag, your head, your body, and your content.
Let's say you pass in a trigger via a comment at the very top of the page such as

<!--[FLASH]-->

so now, the currently installed Flash plugin looks for that comment at the very top of the HTML page, and replaces the contents of the body tag (this is all done on the DOM level) with a compiled version of the page that now runs in the Flash environment.
So now, let's say you're using CSS to style your page, you now know that this page looks the same in every browser, and behaves the same way.

Flash could also decide to read the head of the document, and allow people to link to actionscript files, like so:

<link href="/as/actionscript_file.as" rel="flash" type="text/actionscript" />

Which would allow you to use ActionScript to modify and control your page, adding another powerful behavior layer to your page, that has a wide range of serverside components as well as front end abilities.

There would be many benefits to this, for not only us lowly web developers, but also for Adobe AND the standards bodies.

The benefit for web devs would be a consistent and reliable platform that we can have as a base, and being supported by the innovation and development speed of a commercial organization. The benefit for the standards bodies is that it can take its time in adopting fully tested ideas, without angering the people it's claiming to help.

The benefit for Adobe, however, is the most important one to talk about. If they don't see a real commercial advantage, they will have no desire to pursue this. Their stakeholders as well as their head honchos must see a practical way in which this can help them.
And the benefit for Adobe is that they are more fully entrenching Flash to be the dominant platform, while being able to play off of existing standards and development techniques.

We would have the ability to develop a site in a way that is comfortable for us, but allowing us to tap into the power of Flash. Developers would begin to see Flash not as a new platform to learn, but as a complement to their work. This will mean that many developers who normally wouldn't see Flash as an option will begin to explore it's possibilities.
This will give Adobe a chance to shine on the server side as well. Increased usage and adoption means that they can customize enterprise Flash components, sell server side Flash interpreters, and many new avenues of revenue that spring up when a customer base is there.

But what does this mean for everyone? It means that you could design a really slick RIA that fails amazingly gracefully. If flash isn't supported, or they're using an old version, your site will still render pretty darn close.
This also means that when the different search engines crawl your site, they are still able to read the text, but it also allows the search engines to read the contextual HTML elements and give weight to each.
It means screen readers can read a page with no problem.
It means Adobe could pioneer new development techniques, and it means that they can help develop fixes for issues like CSS not having a true column solution, or allowing multiple backgrounds per image. And it would be able to progress the web incredibly fast.
It means that normal folks can tap into the power of Flash without having to understand timelines, layers, and the other complex intricacies of the current Flash paradigm.

Now, I am sure this is no small feat. But it benefits us all, and I for one am wondering when Adobe will step up and decide to do it.

Blogs
Hey just wanted to say I love reading your blog because you write how you speak!

I would comment on the first blog but you'd probably miss it since we don't get email notifications yet ;P