Flash is a great format, because it allows one to use vector graphics, precompiled high-performance scripts, audio/video playback, with only one source for any browser. Its specifications are also open, meaning that you don't NEED an Adobe plugin nor an Adobe design suite to create and use it - there actually are non-Adobe plugins and design software out there.
Its decade-long success is, however, based on one simple fact: the baseline browser for many websites was Internet Explorer 6, which had:
- lousy HTML support,
- atrocious CSS support,
- brain-dead Javascript support,
- convoluted audio/video support.
However, since Vista and Win7 came out, and mobiles started getting smarter, this baseline went 'boom': the share of people that just couldn't run IE 6 (I mean, on XP, even if you install Firefox, you still have IE 6 hidden away somewhere on your hard drive) went from a few percents to 45% of your potential customers - raising the baseline from "IE 6 only" to "IE 8 + W3C" - and suddenly, alternatives for several things that were until then "Flash only" on the baseline got murkier:
- vector graphics could be done through SVG and VML (see: Google Maps)
- Javascript went from bloody slow to rather fast
- at that time, several browsers had started tinkering with audio and video in HTML.
That left hardware acceleration, but even then Flash was a bit of a sad mix: depending on your display driver and/or OS of choice, Flash would disable said acceleration and revert to a VERY SLOW software rendering. And now, next-gen browsers are doing hardware acceleration, JIT Javascript compiling, animated SVG support...
So, where does it leave Flash?
- uneven support on platforms
- requires frequent out-of-band updates for performance and security reasons
- no special features, apart from the capability to playback h.264 and AAC content on browsers that don't subscribe to the MPEG-LA racket (Opera, Firefox).