Join 3,562 readers in helping fund MetaFilter (Hide)


How to choose client side technologies for a new web project.
July 16, 2008 1:13 PM   Subscribe

Why shouldn't we use Flash? Why should we use AJAX (DHTML/Javascript)? Should we support IE6? I'm wrestling with these questions for a new web product, and I'd like insight from others.

This is for a consumer oriented web app (as opposed to B2B). A richly interactive UI is considered essential. It may well be that Flash is the only way to achieve what is being imagined, but I personally think AJAX could provide a very satisfactory experience. We also have the question of whether to support IE6.

I think the top arguments for Flash are:
  • Most capable.

  • Single platform to target (acknowledging performance differences between OSs)

  • Likely highest productivity (richer development tools, better testing frameworks, not having to worry as much about multiple browser versions)

  • Better integration with client OS for things like drag and drop, file uploads, etc

  • Am I wrong about any of these?

    The thing is, I think these things have been true for quite a while, and yet Google chose AJAX for Gmail and Google Maps, Yahoo for their remade mail client & Flickr, which started out being mostly Flash has now converted most of it to AJAX.

    The main downside I see for Flash could be equally true for AJAX:
  • bookmarkability/sharability is hindered since displayed URL likely doesn't recreate the current view.


  • The other issues are harder for me to quantify:
    • Flash isn't "cool"
    • Flash isn't open
    What else should I be thinking about? How have you made your decisions? Real numbers would be appreciated (are adobe's estimates of Flash penetration anything close to accurate?)

    There is also the issue of IE6 support. Numbers aren't declining quickly enough, and it seems likely that the holdouts are computers in businesses. Our app isn't going to be "work related" for most people, but the reality is, people use such apps from work all the time. We don't want people to be unable to use our app from work. On the other hand, using Flash would help work around a lot of IE6 issues.
    posted by Good Brain to Computers & Internet (29 answers total) 7 users marked this as a favorite
     
    Flash may or may not work on things like, say, mobile phones, or alternative OSes.

    While I grant that Linux users are probably not significant in the grand scheme of things, mobile browsing is rapidly growing. A user with a mobile browser is much more likely to have a browser supporting AJAX than Flash, although some smartphones do come with Flash Lite and a crappy browser.

    While I'm no AJAX (or Flash) guru, I'd think it would be easier to recreate a specific view based on cookies or whatever in an AJAX app than it would be in Flash.

    My personal opinion would be to create an AJAX app that would degrade gracefully on older browsers and browsers without good AJAX support. By graceful, I really just means "functions understandably."
    posted by wierdo at 1:22 PM on July 16, 2008


    Other factors that may militate against Flash:
    - Bandwidth: Will the flash files be bigger than a DHTML alternative? If so, how much will this affect your monthly bills?
    - Mobile accesses: Do you consider mobile browsers to be a target platform?
    posted by adamrice at 1:22 PM on July 16, 2008


    IE6 numbers from one of our busier sites has it at almost 40% of use. Its still alive and well. Not to mention firefox 2.x
    posted by damn dirty ape at 1:28 PM on July 16, 2008


    7% for firefox.
    posted by damn dirty ape at 1:29 PM on July 16, 2008


    Have you evaluated what type of bandwidth load or traffic you expect? AJAX tends to be much, much lighter than downloading flash objects.
    posted by odinsdream at 1:33 PM on July 16, 2008


    The other issues are harder for me to quantify:

    * Flash isn't "cool"

    * Flash isn't open


    Neither of these is true if you use Flex to make your swf files. By "open" I assume you mean you have to use Adobe's IDE to develop. With Flex you can develop in Notepad and use a command line compiler if you're so inclined. Actionscript is not an "open" language I guess but then neither is java or HTML.

    "Cool" is a lot more subjective. But the late 90s thing of the stupid flash intro with the techno music is over. Flex is very cool right now- not many people know about it, but people doing cutting-edge web stuff do.

    The best part of Flex, besides being completely cross browser, is that you can do object oriented development on the frontend.

    Everyone has Flash player, unless you're targeting some weird locked-down corporate environment. Think of it this way- do you know anyone who's never once watched a Yotube video?


    (The thing about the mobile platforms may be a valid point, if we're talking about iPhone anyway.)
    posted by drjimmy11 at 2:03 PM on July 16, 2008 [1 favorite]


    This might not be flexible or powerful enough for your needs, but you might want to check out what you can do with laszlo. It promises to be a single cross-browser development target for both Flash and Ajax applications. I've never used it, so I can't speak for it.

    My personal preference is to keep as much processing as you can on the server side and deliver the thinnest possible client application. I really like the Craigslist.org approach; if all you're delivering is HTML, you don't need to care what kind of browser people are using... the browser could be a desktop, it could be a cell phone, or a script on a different server or anything. Obviously, this might not be appropriate for the kind of application you have in mind.
    posted by Loudmax at 2:07 PM on July 16, 2008


    other downsides of Flash is that search engine indexing has been a problem (although that is starting to be addressed now). Also with Flash there is a great temptation to use non-platform UI conventions which can be hard to use.

    I think you should use Silverlight...I kid I kid.

    My preference is AJAX/DHTML site that degrades into something that is usable for non-cutting edge browsers. That will save your bacon for older users as well as people using less sophisticated mobile browsers.
    posted by mmascolino at 2:11 PM on July 16, 2008


    Ajax cross browser issues for drag and drop, file uploads, aren't really an issue. Just use already existing javascript packages, it's sort of crazy in this day and age to start from scratch when there are so many viable options. GWT is another option (java -> diff versions of javascript courtesy google).

    I am not as against flash as I used to be, but given the load times for anything even REMOTELY sophisticated and the nonstandard UI issues, it is not my favorite choice for applications. Art websites, sure, but web apps? No thanks.

    You can link to pages using like "deep links" and mod rewrite, etc., in either flash or ajax.

    You're welcome, that'll be $500, mefimail me at your leisure.
    posted by shownomercy at 2:21 PM on July 16, 2008


    Flash just *hangs* my browsers on about 50% of the time on websites I visit that use it.

    Some flash-oriented websites are fine - Youtube is never a problem, for example.

    However, if I go to a website like www.telegraph.co.uk with an already running newsreel, plus ever changing flash ads, then my machine will (about half the time) just hang the browser (Firefox or IE7) for about two minutes solid. During this time, I can't even kill the browser or back away from the page... I can't scroll to look at other stuff while I wait. Nada.

    This is true for both my machines: XP and Vista.

    I have grown to hate Flash with a vengeance. But I can't quite dispense with it.
    posted by blue_wardrobe at 2:30 PM on July 16, 2008


    Flash runs like crap on OSX. Flash does not degrade. It's entirely possible that the powers that be only care about majority browsers (i.e. Windows), but that's a different battle.

    There are some things that it can do well, but that's no reason to subsume the entire site under the technology. Go with standards-based development.

    Also, I'm not quite sure that the following makes sense:

    "Better integration with client OS for things like drag and drop, file uploads, etc"

    Lastly, you can code for bookmarkability by using properly formatted GET URLs.
    posted by rhizome at 2:37 PM on July 16, 2008


    Thanks for the thoughts so far. I've been a flash skeptic, but I haven't had reason to give it serious thought for a while, and I don't want it to become the defacto choice.

    Regarding mobile browsers, given the form factor, CPU power and bandwidth constraints, I view them as a whole 'nother issue.

    I'll need to look into the issues of download size and initialization time with Flash/Flex apps. I already have some problems with how long it takes to do the first load on a lot of AJAX sites, I didn't figure flash would be significantly worse.
    posted by Good Brain at 2:43 PM on July 16, 2008


    You'd be amazed what someone with a lot of experience with CSS and JQuery can do. I'm working in a similar project now and my design partner (I'm the JScript web services half) can do things with CSS + JQuery that I would have previously sworn was impossible outside of a plugin. As everyone above says, this means any browser with Javascript can use our site fine.

    That being said, it's a bit harder to do things this way than it is with Flash and there are less people that can do it. If your main objectivess are speed of development, go for Flash. If you want to catch more browsers, go AJAX/CSS.
    posted by Nelsormensch at 2:45 PM on July 16, 2008


    I don't know what your target population is, but Flash is a sure-fire way to make sure that anyone who is blind, has bad eyesight, or accesses your site in any non-standard way will not get to do anything. Navigation in general is something you'll miss out on with Flash. You can't bookmark individual pages if everything is wrapped in a big ball of Flash. Can't browse forwards and backwards either, unless you do some extra trickery there won't be any save as...ing, copying links, choosing to open links in new window/tab/background tab/etc.

    It wouldn't surprise me if you can make good websites with flash, but I bet it takes more effort than most people are willing to put into it. Maybe I'm just bitter.

    Good luck with whatever you pick.
    posted by bjrn at 3:09 PM on July 16, 2008


    Regarding mobile browsers, given the form factor, CPU power and bandwidth constraints, I view them as a whole 'nother issue.

    I'm not so sure about that. Nearly every AJAXy site I've visited on an iPhone has performed quite acceptably, and iPhone-esque gadgets are going to be skyrocketing in popularity over the next few years. The iPhone itself may never support flash; the others will have varying levels of performance depending on CPU and OS issues.

    Flash, on both my Mac and work machine (Windows) is a horribly ugly resource hog. I've never seen an AJAX site cripple my performance to anywhere near the level Flash can. It's at the point where I actively avoid flash, block it everywhere possible, etc. Adobe claims that Flash 10 will be better, but I'm going to remain a skeptic till I see it. As for load times, while they can be annoying with really huge ajax, compared to flash... well, it's the difference between picking up your four-year-old niece and having her 170 lb father jump into your arms.

    Also, Flash totally breaks forward/back/bookmarkability, whereas AJAX doesn't have to (look at gmail, where it works as expected) and GET can be used to compensate quite a bit.

    There are other issues that may or may not be fixable by a good developer in Flash - like the fact that OS keyboard shortcuts never seem to work, that the UI is never the same twice, that it never seems to scale well to my browser size - but I'm past the point of caring. I work with Flash often enough to remind me why I don't like it, and for all the problems of AJAX, if it's an option at all I'd strongly recommend it over Adobe's user-abuse system.
    posted by Tomorrowful at 3:14 PM on July 16, 2008


    Thanks for the pointer to how Gmail handles bookmarkability. I was looking at Google Maps as an example of how AJAX fails at bookmarkability (unless you use a work around like a special "link to this" button or link).
    posted by Good Brain at 3:33 PM on July 16, 2008


    Flash has accessibility problems moreso than HTML when used incorrectly, search engines have a much harder time dealing with it, and you have to rely on a paid consumer product for your site support.

    Of course, DHTML has two of these problems as well. It's really going to boil down to how good a staff you have for development of the relative platforms, and what your specific needs are.

    As for IE6, it's still installed and used on a LOT of computers out there. Where I work, we still develop for IE6 for that reason, warts and all.
    posted by davejay at 3:47 PM on July 16, 2008


    Flash is slow. Flex is molasses. I played around with it for a while and gave up, it runs like a dog, even on my relatively new C2D. I have yet to see a commercity entity use Flex.
    posted by wongcorgi at 4:06 PM on July 16, 2008


    Our Mac using devs keeping bagging on how AJAX performs and seem convinced that Flash/Flex is going to be better (they cite the Google Maps Flash version vs the AJAX version as one example).
    posted by Good Brain at 5:10 PM on July 16, 2008


    i can't help you out with the technical considerations, but as a user, i'd just like to say: i hate flash. almost as much as i hate adobe. and that's a lot.
    posted by msconduct at 5:41 PM on July 16, 2008


    Unless I am required to and have no other options, I do not interact with sites that use flash. As soon as I see flash, I hit the back button and never return. I know a lot of people who feel this way.
    posted by decathecting at 5:48 PM on July 16, 2008


    drjimmy11 >Actionscript is not an "open" language I guess but then neither is java or HTML.

    Silliest thing I've read all week.

    Going back to the original post, I think the question comes down to this:

    "A richly interactive UI is considered essential."

    What does that mean? Maybe if you explain it, it will come down to "something which can only be done in Flash".

    That's my basic rule. If you have a requirement which can only be achieved with Flash, because it requires, say, zooming in and out of a map with arbitrary levels of zoom, as opposed to Google Maps' discrete levels, that's what you have to do. In all other circumstances, you avoid Flash.
    posted by AmbroseChapel at 6:00 PM on July 16, 2008


    I don't know how common this is, but personally I block Flash with Flashblock, and I have to have a really, really good reason to click on something and load it.

    If I were to go to your site and a big Flash block popped up, I'd probably just navigate away unless I had a very specific reason for going there. And then, I'd secretly curse you anyway.

    I'd say about 80-90% of the time I go to a site with Flash, I either don't load it, or just immediately navigate away. It's obnoxious, it's slow, it tends to hang my browser, and most of the time it's just gratuitous and the sign of a site that values form over function. Perhaps that wouldn't be true of your site, but if it's all done in Flash, I may never bother to find out.

    So far, I have yet to feel like I'm missing out on anything by doing this.
    posted by Kadin2048 at 6:03 PM on July 16, 2008


    You haven't given us any hints about what sort of interactivity you require (which is fine, you obviously don't want to be sharing trade secrets on the interwebs) so we can't really give solid advice, only data points for you to consider.

    In that spirit, here are some data points:

    Flash costs more money to develop in. You need specific tools from specific vendors, and you need to hire specific talent to develop in it.

    However any decent IDE (Eclipse has an excellent JavaScript plugin) handles JavaScript and HTML just fine. Many of these are free and will integrate with your back end environment. e.g. you can use Visual Studio to code your UI (JavaScript and all) and turn around and crank out some business objects. Likewise with Eclipse (for Java/J2EE based sites, or PHP with the PDT plugin.

    That level of integration saves you time and money. All of your team members can standardize on one platform instead of having your IDE and a copy of Flash Studio.

    Likewise Flash devs tend to come from a graphic design background (which is just fine) but often don't have the programming chops. Not that you won't find some person who is a good designer and a good developer...it's just that those folks are rare and expensive. You don't want to have to hire a "flash guy" who only does "flash" and sits around most of the time.

    There are a number of JavaScript frameworks today which handle slick UI stuff out of the box and handle all of the cross browser (even IE6) out of the box. Yahoo's tools have been mentioned above. Look into Dojo and Prototype + Scriptaculous as well.

    If you do go with Flash, make sure that you get the authoring files (the *.fla file) into version control and off your developers computer. If you work with a contractor or a freelancer, stipulate that in your contract.

    Once the flash movie has been compiled, if you don't have the original flash project file, it is very very very very difficult to make changes without going to the flash guy for help.

    it is a very common business practice of snakes and other lower life forms to hold these things hostage for large sums of money.

    Javascript and HTML is ultimately just plain old text which any good developer can figure out.
    posted by device55 at 7:19 PM on July 16, 2008


    On my rather old laptop with a fat bandwidth pipe, most Flash ironically loads quickly and runs quite acceptably while many "rich" AJAX frameworks hang during initial load for sometimes quite long and unacceptable periods of time. GMail is a classic offender here.
    posted by meehawl at 9:23 PM on July 16, 2008


    My company does a tremendous amount of web software development for other companies -- we use both flex and ajax quite a bit. Flex-based development has three primary advantages as I see it. It can support binary transmission of data back and forth between the client and server, which can result in significant improvements *if* your app ships lots of data between the two. It has better support for offloading certain processor intensive tasks to the client machine. Things that might be expensive to do on a server for thousands of simultaneous users can be cheap to do on the client PC for one user at at time. And the development tools for flex development are better, meaning a developer just starting out with either technology will produce a given front end faster in flex than ajax. Don't use just flash, by the way. A flex code base is cheaper to maintain and extend over time.

    Ajax is great for browser compatibility, search engine readability (and will stay ahead for at least 6-12 more months), and integration with the native browser environment (bookmark, history, tabbed browsing, and back button support, for example).

    If the UI you're planning is primarily about "saving clicks" - i.e. allowing users to enter data, manipulate objects and navigate faster, look to Ajax. If your UI is about offloading processor intensive operations to the client PC, moving huge amounts of data, multimedia support -- or if you have a developer inexperienced in either platform, you should probably consider flex.
    posted by centerweight at 9:46 PM on July 16, 2008 [2 favorites]


    Just wanted to chime in with a little more info on the flash side of things: All of the criticisms leveled against Flash in this thread have merit for the vast majority of Flash on the web today. (especially the large file size download, no deep-linking / back button integration and poor performance)

    However, these are issues that were created by poor quality flash development (which is the norm, due to the above mentioned trend of designers trying to be devs) and is not an issue with the underlying player.

    It is quite possible to create Flash projects which are much lighter than comparable AJAX and that offer a much richer feature set. I have created a fully functional streaming video player with UI controls and playlist capability which weighed in at 12K. The company logo GIF in the HTML page hosting the player was bigger than the player itself.

    But again, this is the (very rare) exception not the rule.

    Especially since Flash 9 (which introduced an entirely new programming language and new virtual machine) it is technically possible to create extremely lightweight and performant Flash projects. 90% of people who put "Flash" on their resume wouldn't be able to sure. But the language itself (Actionscript 3) is essentially ECMA 4 and is much easier to code for than Javascript from the point of the view of a real OOP developer (someone coming from C++, C# or Java background as opposed to a 'scripter ). Just one example: Actionscript 3 is a typed language (huzah!) and supports a decent (if not as robust as C# or Java) set of OOP constructs like classes, interfaces, inheritance etc... In comparison trying to organize a non-trivial application using prototypes in javascript is like shaving with a rusty hook.

    Just as a side note: If you are doing any further reading on the subject remember that Flex 1 & 1.5 are a completely different product than Flex 2 or 3 (and 1 and 1.5 sucked. badly. Like ColdFusion bad. I don't know why they didn't just drop that dog of a product name when they created the actually pretty-damn-cool Flex 2). Also remember that any performance metrics you see from Flash 8 or prior really have no bearing on Flash 9 or later as 9 is based on a different programming language and runs in a virtual machine (in practice it's about 5-10x faster depending on what you are doing).
    posted by Riemann at 11:42 PM on July 16, 2008


    BTW: If you are ever working with a someone claiming to be a flash "dev" and they have an .FLA file which is not trivial (eg: all of their functionality is not in classes in external .as files) then run away. Run far away. They are ripping you off.
    posted by Riemann at 11:44 PM on July 16, 2008


    I'd caution against using MeFi to ask advice on Flash vs. anything.

    Any thread (whether it's MeFi or Ask) that invokes the 'F' word tends to attract a particular species of web denizen that will find one way or another of echoing Jakob Neilsen's famous assessment from 2000.

    I would argue that you're not getting a representative sample of opinion here; MeFites (and particularly those drawn like moths to this kind of question) are generally not typical web users; we're the kind of people who wouldn't use IE if it dispensed gold bricks, and would probably be happier if Flickr were text-only.
    posted by le morte de bea arthur at 2:29 AM on July 17, 2008


    « Older What is the new equivalent of ...   |  I want to buy a domain, I have... Newer »
    This thread is closed to new comments.