Wednesday, February 16, 2011

Flash Controversy Continues - Is It a Good Choice for Development?

Garin Hess wrote a post 5 Reasons Flash is NOT dying...give me a break! and it seems like my recent post  Mobile Learning and the Continuing Death of Flash got him a little fired up. 

I am fed up with people saying Flash is dying. That it's old technology. That HTML5 is the ultimate replacement. That it shouldn't be allowed to go forward. Come on! Give me a break!

Garin has some good arguments on why he likes Flash as a delivery mechanism.  Probably worth visiting his blog to read them. 

Let me go back to the original issue that I raised a little less than a year ago in Beginning of Long Slow Death of Flash:

As a Part-Time CTO, I am continually making choices about what platforms to use, what do we build for, how do we integrate with social networks, etc. And just like a few years ago when it became clear that you shouldn’t build desktop applications anymore, I think we are hitting a tipping point where you have to question building anything that uses Flash as the delivery mechanism.

I'm defining my technical approach for my eLearning Startup or for my application that will be delivered to employees, consumers or students, etc.  This could be a new authoring tool, an aggregator, the course playback mechanism, a recruiting tool, etc.  My technical choice needs to seem like a good choice 5 years from now.  I need to think about what will produce the best user experience.  The costs.  Technical and business risk.

Garin raises a great point.  We don't know whether Apple iOS will eventually support Flash to stave off competition from competitors.  Originally, I thought that Apple would bow to pressure.   No one at this point really knows.  But let's assume for a second that you believe that Apple will cave and iOS will support Flash.  And let's also assume that we are not strictly talking HTML5, but rather HTML+JavaScript + some ideas of where it is today and where things are going.

What's to Like about Flash

1. Greater consistency across platforms. 

2. Good support for animations, 3D, and video.  Video especially is problematic without Flash to do cross platform.

3. Able to do things visually that are hard with CSS/HTML.  As an example, CSS 3 introduced linear and radial gradients. Good. Can these gradients be applied to the text rendering engine? No? Why not?

http://meyerweb.com/eric/thoughts/2009/02/24/css3-feedback-graphical-thoughts/

like rounded corners, no surprise [gradients] came up. (All we need is to define wet-floor-reflect and we’ll complete the Web 2.0 design tricks hat trick.)

Yes, CSS 3 can do awesome things, and I love it. But it was designed to just barely meet the design needs of today. Any time you want to experiment with a wildly new design direction, you find yourself fighting against the way HTML and CSS were intended to be used.

4. Flash (AIR) can create and use raw TCP or UDP sockets.

Of the above, 2, 3 & 4 of are likely to be a question of what the site/app needs to be able to do.  #1 is definitely an issue as you need to write once and test everywhere for HTML. 

Flash Concerns

There are some things I would be concerned about:

1. Security - some recent security issues with Flash that caused real damage are a continuing concern for me.

2. Closed - as Garin points out there are lots of people working with Flash - an ecosystem.  That said it's still closed.  And it's MUCH smaller than the world that works with HTML.

3. Commercial - it costs money for Flash development and anytime you are dealing with something that's commercial and closed, there are clear risks.

4. Installers - these are somewhat annoying and there are greater risks around them.

Will I Choose Flash?

So - what do I use as a developer? It's way too complex a question because there are a ton of factors that will need to be considered for any given system.  Here's some things I would definitely look at:

  • What's our mobile strategy?  Are we actually looking at Apps or via Mobile Browser?  Big time tradeoffs in each?
  • Do I need an interface that could be provided more quickly via Flash?  I've been involved in creating some pretty sophisticated interfaces via HTML+JavaScript.  But there are development cost tradeoffs to be made.  As an example Flash is used by Zynga to create their games.
  • What's the cost of Cross Browser HTML compatibility issues?
  • What's our strategy around multiple screen resolutions?
  • Will we need to run in low-end phones with basic web access capabilities?
  • Right now Flash is causing performance issues on mobile devices.  This will be improved, but there will be issues.  What will the impact be of those issues?
  • What audio and video do I have?  Complex animations?  Can these be Flash elements within an HTML wrapper?
  • Do I need audio or video capture?
  • 3D?
  • Do I need raw sockets?
  • Who is developing it?  What skills do they have? How easy/hard is it to source people with the skills?
  • What are the implications downstream for the organization?  Do we believe it will help or hurt us around time of acquisition?

Impact of iOS?

All of the above is greatly impacted by the choice that Apple makes around iOS support.  People want their content to work on iPhones and iPads right now.   To Gain's point, if Flash is on iOS and gets over the current performance issues, then it's going to win out far more often as the delivery mechanism of choice. 

Of course, my guess early on was that Apple would bow to pressure.  But then it became clear they wouldn't in the short term.  Now, no one knows.

Using Flash

Interestingly, I'm right now looking at technical choices for an eLearning Startup.  And guess what - Flash looks like it will make sense as a choice.  Of course, we are trying to hedge our bets and we are definitely making it an element on the page rather than betting the entire delivery on Flash.  The idea is that we could change the approach for that portion if another solution comes along.  iPhones and iPads will be supported as an app - ugh.  But we don't really have another choice for now.

All of that said, I still will tell you - even though you won't be happy to hear it - if this application didn't need these specific features that are supported by Flash - we would choose HTML+JavaScript because it would work on iPads in the browser.  That's why I still believe until we know that iOS will support Flash - it's death is continuing for now.  Choices are being made to avoid it everyday by CTOs.