2010.11.02

Why the HTML5/JS community should respect the Flash community

Nowadays the debate about HTML5 vs. Flash became really popular and a lot of misinformation is going on… My intention with this post is NOT to say that one technology is better than another, specially since I don’t believe that one is better than another but that they have different purposes, my idea is to show that there is a bunch of things that those communities can learn from each other… Please read the whole post before commenting. My intention is not to start a flame-war. – I’m an HTML/JS/CSS developer that happens to know Flash/AS3 too, not the opposite…

The technologies “aren’t” that different*

I think one of the main reasons why the HTML community is biased towards Flash – besides the annoying banners and “skip intro” websites – is that flash is a “closed box”, they don’t know how it works, don’t know what is inside, the source code doesn’t show up when you view the page source, a lot of people use the technology without a good reason, don’t know the pros and cons, don’t know available features, isn’t “standard”, etc… (people tend to fear/dislike what they don’t understand). Mac users also complain about the performance of full-screen video (which was improved a lot with Flash Player 10.1). I’m going to try to explain very briefly the Flash platform and to show some similarities but without getting into details about each feature (for brevity).

ActionScript (programing language used to develop Flash/Flex applications) shares a lot of things with JavaScript, both are based on the “same standard” (ECMAScript), the syntax doesn’t differ too much and a lot of things actually works exactly the same way on both platforms, many methods in common and many things from Flash API were based on the DOM (including the event bubbling system and the idea of “nodes”/child elements).

Adobe Flex applications (component driven application SDK based on the Flash platform) uses a markup language based on XML called MXML to describe components and to make it easier for developers to create simple elements without the need to script everything using Actionscript and split the application logic into different “layers” (really similar to the way HTML+JS works) – If you are a JavaScript developer think of Flex as something similar to Ext JS, qooxdoo, DHTMLX, etc. Another thing in common is that Flash supports CSS for some of the text field styling and Flex uses it to customize components.

Flash isn’t as close as it seems, the language is open-source and based on a “standard” (ECMAScript 4 was abandoned before conclusion), the SDK is open-source, the SWF file format is published and can be implemented by anyone, the virtual machine is open source and was donated to Mozilla, etc..

The Flash community has an open-source/sharing spirit

It is really impressive the amount of free libraries and frameworks available, some of them developed by renowned companies and shared between direct competitors. I don’t know the reason for that but it’s true, people are always receptive and wiling to share knowledge and work. If you need something specific there is a big chance that someone already implemented it before and published it as an open-source project or posted the source code on his blog. The same happen with bugs and “magic formulas”…

Flash developers are used to changes

The past 10-14 years the platform changed a lot, from the basic timeline animations to the introduction of the first “action commands”, than introduction of AS1 in 2000 (which is really similar to JavaScript – prototypal inheritance, etc), introduction of video support (2002), a new version of the language that supports class-based inheritance (AS2) on 2003, on 2007 the release of AS3 – a complete rewrite of the language following the ECMAScript 4 working-draft spec – etc…

Most of the Flash developers that I know came from a design/motion background and learned to program for fun, just because they wanted to make cool stuff. Most of the CSS/HTML/JS developers that I know also started the same way, playing around trying to make something cool.

Many Flash developers also know a different programming language and play around with different stuffs, just to cite a few of them, the guy who sits by my side was mainly a flash developer not too long ago and now does way more Objective-C (for iPhone/iPad apps), one guy is doing a lot of C++ stuff (for installations and also for iPad apps), the other one is playing around with Java for Android Apps as a personal project, the other is coding a game for the Xbox in C# and a socket server in Java during his free-time, the other is learning CSS/JS, another guy learning how to program Flash websites/apps for mobile devices, a guy writing a extension for TextMate in Ruby, another one coding some back-end in C#, Java or PHP… – all of them inside the same company, working side-by-side and sharing experiences/knowledge…

Flash devs knows how to code highly visual/interactive stuff

HTML is awesome for displaying a large amount of text and static content, but wasn’t built with the purpose to create highly interactive/visual experiences. I know nowadays a lot of things can be achieved on the newest browsers using the latest technologies like OpenGL, canvas, SVG, CSS animations (and I’ve been doing some of that) but the HTML community isn’t used to code the same kind of “applications” that some of the Flash developers are used to (the opposite is equally true), any good Flash developer coded from scratch at least once most of these things: scrollbar, video player with custom controls, streaming/buffering, drag and drop, 3D interface/elements, interactive video, particle system, physics, pixel/image manipulation, dynamic vector drawing, etc… and are used to this kind of work. – The kind of knowledge used to code a clean/semantical markup is completely different than the one required to code a complex interface/interaction and to create appealing animations and transitions. It took a long time for the community to understand the platform and to start using it well…

AS3 is a more mature language

I know that many people will hate me because of this statement but please let me finish. ActionScript developers always respected Java, C++, C# developers because those guys are usually way more experienced at solving complex programing problems and knows about a bunch of technical details that people coming from a design/motion background never knew that existed. Things like continuous integration, unit testing, design patterns, code organization/structure, documentation, build tasks, algorithms, encapsulation, etc.

Some of the most used concepts in Flash came from developers that had a Java background. Nowadays I can see the same thing happening to JS when “Flash developers” like Mr.doob, Peter Nitsch, Mario Klingemann and many others start to experiment with the new technologies and transpose some of the concepts to JS - those guys also didn’t started with flash development, they came from a different background, which reinforces that the Flash community is used to changes and will learn different technologies.

It is not about if you like or not strong-typed languages, compilers, etc. It’s more about how long people been doing those things and how much academic/conceptual/technical knowledge they have, a guy who came from a computer science background is very different from a guy who started programing JavaScript following some jQuery tutorials 1 year ago - I’m not saying that the guy who started with jQuery can’t be better than the CS guy, just that there is a huge gap between them on some aspects.The Flash community been solving issues on the past 10 years that the JavaScript community is only starting to experience right now.

“The smart one will learn from the mistakes of others” – Hungarian proverb

The Flash community respect the HTML community

I’ve seen many Flash developers interested on learning HTML/CSS/JS (and many of them already do know), not because they are afraid of loosing their jobs (since they probably won’t anytime soon), but because they like to learn new things! Many of them are experimenting with server-side JS, playing around with canvas, WebGL and the new CSS3 modules…

Respect others

The HTML community has a lot to learn from the Flash community and the opposite is equally true, everyone comes from a different background, have different experiences and are used to solve different kinds of problems, please respect other developers and don’t start “meaningless wars”, there is no such thing as a “better technology”, each technology has it’s own purpose and recommended use.

“Men are respectable only as they respect” – Ralph Waldo Emerson

A friend of mine and ex-coworker also presented some similar points not too long ago: An open letter to the HTML5 community.

Cheers.

* I wanted to say that the technologies aren’t that different because they share many concepts, features and characteristics, not that one can replace another.

Edit 2010/11/22: see also, A good Flash developer can’t replace a good HTML/JS developer


Comments

A very informative article demonstrating good knowledge on both sides, and an independent, balanced, objective opinion. Good stuff ;)

I never thought about some points as the fact that most of Flash Developers that I know also play with another programming language.

Great post, Miller.

Flash is the exciting red painted turbo charged porsche 911 and HTML/JS is the fuel efficient light green sedan. Both are different cars with different qualities, but in essence, they both get you where you need to go. Now, it's just up to designers to figure out which car they want their user to use to zip around their content.

This controversy was fomented by Apple and Steve Jobs. The reason is no more and no less than this: Flash is a direct competition to the Mac App store, and allowing Flash on their mobile devices would largely bypass that revenue stream. As you stated in your article, HTML5 is excellent at accomplishing certain things, and not the things that Flash is excellent at. The FUD was intentional on Apple's part, because at the end of the day there is no good technical reason for iP*ds not to have a Flash player.

Sad the majority of the flash/html developer do not think logically like yourself.

Finally a more objective view on the Flash vs HTML5 discussion. I'm getting a bit tired of the back and forth bashing of the two technologies. A discussion started by Steve Jobs (as Rendalle states correctly).

Very nice post!

Awesome article! I totally agree with you on this one. HTML and Flash are meant to be used for completely different things. It's nice to see someone thinking unbiasedly about this topic.

I think it is stupid to say that HTML5 will kill Flash, can HTML5 do 3D, or numerous other amazing things? HTML is not built for hardcore interactivity. At the same time it is equally stupid (if not more) to say Flash will kill HTML5. They're built for two different things.

Thanks again.

This really is a stellar article. I really appreciate the tone and thorough background given. As a Flash developer I really wonder what goes through people's heads when they blurt stuff like "flash should die", or "Steve Jobs is protecting us from bad code" with no context. There is so much that people from both sides of the fence can learn from each other. The overlap is tremendous.

Also I am totally in love with the way you visually de-emphasize (things in parenthesis). very cool. makes it easy to quickly skip over stuff that I may not need, yet its still there if I want all the details / context. very cool.

Sadly, I see quite a bit of disrespect for HTML5 from the Flash community. A fair amount of defensiveness from both camps.

Well said! I don't know any paid professionals who are attached to either Flash, HTML, or any other toolset further than what it allows them to create, and how quickly. HTML vs Flash is only good if you're detailing the issues/benefits you've discovered when trying to accomplish a worthy goal using either toolset. I use HTML + CSS + JS + PHP a lot, and I use Flash + PHP a lot. Rarely for the same goal, except once when out of curiosity I explored recreating an MP3 Player I'd built with Flash using HTML/CSS/JS, which I talked about here: http://goo.gl/GzGG1

Awww... heart warming stuff. Reminds me of that classic coca-cola advert where everybody holds hands and jointly profess their desire to teach the world to sing :)

Excellent write up! Very well thought out and totally on point. Thanks for sharing!

Esteban Obando

Excellent article, I'm a flash dev and I agree with you on everything, im also learning new stuff, being retroactive, and respectful of other platforms, also when you work with people as a team, and everyone do his own part, the results are incredible. Good Job. Cheers!

Thanks for this. I shared my thoughts over on the Kontain article: http://www.kontain.com/fi/entries/99941/an-open-letter-to-the-html5-community/#id11

... but in general I want to reiterate the growing acknowledgement that JS developers see a great capacity for the interactive AS developers to lead the next generation of apps.

Brad Neuberg just put this thought into a tweet:

The future JavaScript coding stars will be former Flash folks who bring their skills over to the new HTML5, CSS3, SVG, etc. world

on twitter

This is the best article on Flash/HTML5 so far. You had to wait this long... hey.

very good stuff.

Excelent article, nice work Miller

[...] Why the HTML5/JS Community Should Respect the Flash Community [...]

[...] mean that one can completely replace another.Further reading:http://www.bigspaceship.com/blog...http://blog.millermedeiros.com/2...http://www.kontain.com/fi/entrie...PS: it doesn't mean that you can't have nice [...]

[...] 2: après le commentaire de Kalou, j’ajoute ces deux liens, HTML 5 and Flash AS3, et Flash and html5 video tag, en anglais les deux. VN:F [1.9.7_1111]Rating: 4.3/5 (3 votes [...]

Leave a Comment

Please post only comments that will add value to the content of this page. Please read the about page to understand the objective of this blog and the way I think about it. Thanks.

Comments are parsed as Markdown and you can use basic HTML tags (a, blockquote, cite, code, del, em, strong) but some code may be striped if not escaped (specially PHP and HTML tags that aren't on the list). Line and paragraph breaks automatic. Code blocks should be indented with 4 spaces.