Why Adobe Flex is evil

Adobe Flex, heralded by many as the coming of a newer age of web development, is evil.

Flex logo

I will admit right off the bat that the version I used was 1.5, and they are now on higher iterations of the product. I still maintain that, while in theory the concept of Flex is intriguing, it is way too seductive to web developers who simply don’t know what they are doing.

Flex promises to make it easy for web developers to build Flash applications for the web. The idea is that programmers do not have either the capacity to learn the animation-oriented Actionscript-based programming model  of Flash, and so Flex is a simple alternative. Build a Flash animation for a website using a different method of programming, using an XML-based programming language called MXML. Then, provide little documentation on how it actually works.

The result was a rash of programmers back when Flex first came out who scrambled to jump on board. Some websites integrated Flex nicely, although I imagine (and know from experience) that it adds a layer of complexity to the maintenance of sites that use it. It requires a Java-based web server like Apache to run as well. This complexity is added when you consider smaller companies who are reliant on IIS learning both a new programming language, but a new web server at the same time.

The call of Flex is hard to resist, though. XML-based content delivery into a Flash file that is compiled from a command line interface? More programmers would be comfortable with that then Flash.

If you ask me, Flash programming is a strange combination of programming and web design. I think that web developers can program Flash, and web designers can program Flash, and that sort of makes Flex completely unnecessary and redundant. The one major advantage is that you can easily add dynamic content from an XML file – at least, that’s how some people sell Flex over Flash. Those same people, of course, don’t realize that Flash can do the exact same thing easily.

In the end, Adobe was only competing with themselves when Flex was developed. There was no real competition to Flash like Microsoft Silverlight is proving to be. There are a few differences between Flex and Flash, but even wikipedia is really stretching to list them. “Drag and drop” and “charts and graphs” are not features unique to Flex in the slightest. In fact, to me that sounds like marketing spin to try and make it sound like Flex is the latest and greatest in Web 2.0 (which most people associated with the term “drag and drop”, for some reason).

Flex is a needlessly complicated, redundant piece of software. In the end anyone would be better off hiring a Flash developer over implementing a Flex-based site. Flex can be nice for the occasional small integrated application, but is the overhead worth it?

Questions? Comments? Feel free to contact me, James Martin, or comment!
Email me, or leave your comment.

17 thoughts on “Why Adobe Flex is evil

  1. James, You make an interesting moral judgment about a software development tool. I’m unsure of what you motivation for writing this blog is but I’ll respond… There is no one tool that makes sense for everything. Flex is great for scenarios that require things like unit testing, team coordination, component / OO programming, etc. Traditional software development projects like business applications benefit quite a bit from Flex over Flash. However there are other scenarios where Flash is the right tool. Figuring out which tool is right for the job has many different factors like team skill sets, what you are building, etc. I urge everyone to always explore their options before deciding on a tool.

    -James (Adobe)

  2. Thanks for the comment James.

    You bring up some great points, and I will admit that I am a bit biased against Flex due to the style in which it was implemented in my company. In fact, we’re fazing it out due to the difficulty in maintaining it and lack of sufficient documentation, especially for older versions of the product.

    The title of the blog post may have been a bit sensationalist, as are most blog posts these days, but I think my point still stands.

    Flex is largely a redundant product these days, as even some of the reasons you suggested for Flex over Flash (OO programming for one) are also available in Flash.

    In terms of web development for small companies, which was the focus on my post, I think you’d be hard pressed to come up with a situation where the ROI for using Flex outweights the upfront cost.

  3. I’ve just started a new job as a Flex developer (v2.0 and moving to 3.0 as soon as it comes out). We use IIS and .NET as the back end and honestly it is easy to integrate. The .NET code serves up web services and XML data and Flex makes use of it flawlessly.

    Previously I was a C++/MFC/Qt developer and the documentation, examples, and a book have made getting into Flex easy. My guess is their documentation improved some since 1.5 (I believe there was a big change in 2.0).

    Years ago I tried my hand at Flash development (mind you I’ve been an OO application developer and not a web developer for 12 years) and found the paradigm of Flash plain annoying.

    Flex feels like any GUI development I’ve ever done (including MFC, Qt, Swing, wxWidgets, and a few others). I became productive almost immediately. After running through a few tutorials I made the following Sudoku solver in Flex:
    http://www.arcanearcade.com/Flex/Sudoku/Sudoku.html

    Not great work, but not bad for an afternoon of messing around.

    Try a more recent version before passing judgment.

    I don’t know much about Silverlight, but it certainly doesn’t have a 90%+ market penetration and the following blog indicated it may not be targeted at developers:
    http://fupeg.blogspot.com/2007/09/no-silverlight-for-you.html

  4. It’s interesting to me that Flex seems much more useful in a .NET environment. Our environment is Flex 1.5, Apache, and that’s it. No back end. There IS no platform it’s running on, the entire site is Flex.

    Here’s the part that rubs me the wrong way, and this is not Flex’s fault exactly. It’s a technology that, when it was implemented, was new. No one here at our company knew it, and the guy who made our Flex sites had no idea what he was doing. I inherited one of his projects (a 100% Flex page, the only other code is the object embed tag).

    None of us know Flex, none of us know how to maintain an Apache server, we’re pretty strictly IIS except for the old legacy Flex code. There is no chance of us upgrading because it’s “risky”. Right now where things stand is that I have an existing website without code, because the Flex code I have does not compile.

    This means I can’t make any changes to a site that is already live without first going into a whole slew of source code written by someone who literally used every methodology Adobe/Macromedia suggested in tutorials, even if it was completely redundant. Then I have to figure out the errors, fix them, recompile, etc. which will take days, if not longer, because there are over 40 separate errors, many of which occure multiple times on different lines.

    It seems annoying to me that the only way to make an extremely minor change like fixing a typo is to completely strip down our project. That’s why Flex and I don’t get along, because in the hands of the wrong people, who have listened to various Flex evangelists, you get stupid situations like this one.

    Apparently Macromedia back in the day was claiming that Flex could, and should, be used to build whole websites. First of all, the SEO implications are astonishing. Second of all, the above situation could, and did, happen. Now we’re up a creek without a paddle, and I am counting the days until Flex is out of our company forever.

  5. Many companies have successful Flex implementation – flex.org/showcase/ has just a few of them that are well known. I think its completely unfair to say a technology is evil because a developer in your company didn’t implement it properly. It sounds like you’d have that same problem no matter what the guy implemented – Flex was just his chosen output. Its not Flex’s fault that he implemented software with little or no documentation.

    Flex 2 and Flex 3 remove the server requirement – you no longer need a server to compile Flex applications. Many (most) developers (like Robert) find that a lot easier than the previous Flex 1.5 software.

    To help you get your job done, head over to http://flex.org/community/ and look up some of the community links, like the FlexCoders email group. There are a ton of developers that may be willing to help you out.

    Mike

    Mike Potter
    Flex Developer Marketing
    Adobe Systems Inc.

  6. Thanks for the reply Mike.

    It definitely does seem like more recent versions of Flex have less problems than 1.5 and previous versions. One of the biggest problems we’ve encountered (and have seen all over the FlexCoders group, of which most of us have had experience with) is in caching and actually seeing our changes reflected in the site.

    There is no way that we will ever upgrade from Flex 1.5 to a higher version, that’s just the way it is. Sensationalist title aside, Flex successfully adds needless complexity and extra work for developers and takes away responsibility fro our designers. Is the goal to render design work obsolete?

  7. >>>The one major advantage is that you can easily add dynamic content from an XML file – at least, that’s how some people sell Flex over Flash. Those same people, of course, don’t realize that Flash can do the exact same thing easily.

    Very true. Just look at the FusionCharts. It plots dynamic data over Flash charts through XML. FusionGadgets displays live data just with Flash and XML. So that cannot be the USP for Flex!

  8. Although I can understand wagedomains frustgration with having an undocumented and uncontrolled project, we all should recognize that project as a failure in process and technology management not in the technology itself, my current flex based enterprise project runs a daily automated build using ANT, the project builds deploys and runs automatic unit tests with no developer intervention. Do you think we will end up in the situation of our friend wagedomain, I doubt it?

    My biggest problem with Flex is the licensing model, two percent of sales on an enterprise application is huge money and directly impacts the bottom line product performance. So we are rearchitecting to eliminate the need for server side flex support to eliminate this unnecessary expense from the product cost. Beware of the live data services in 2.x and up – they are very expensive.

  9. As a flash dev whom has tried many times to work with Flex 2.0, I entirely agree, James. In every effort I have made toward Flex, I eventually wonder why I am not just writing the whole thing as AS3 out of Flash. Why should I endure the hell that is customizing Flex components, pulling in Flash swc assets, wrestling with bizarre font issues.. it goes on and on… all so that I don’t have to sit down and write my own actionscript classes out of flash? Ridiculous. Flex is without a doubt the longest shortcut you’ll ever take.

  10. No offense, but Flex 1.5? You no longer know what you are talking about.

    Give Flex 2 or even 3 (realizing it’s still beta) a try and if you don’t realize why it’s 50 times better than using Flash…(not to mention alternatives like JSP/Ajax etc), you’d have to be a “seriously biased individual”! (To put it nicely)

    Or just @#$%in crazy dumb.

  11. Also, I’m no Flash expert, but does Flash scale as well? Not by number of users – I mean how maintainable would a very large, complex application be?

    Can you implement a Cairngorm (or other) architecture? Does it support data binding? CSS? Unit testing? Does Flash have native charting components? Does it have a complete set of all the UI components that Flex has? Data grids, and so on? Is there a Flash version of Flex Data Services? Is it easy to do a “data push” in Flash? (Like with Granite DS or Blaze DS?) Can you use a reporting tool like ClearBI in Flash? Does Flash have a profiler? Can you debug a Flash app the same way you can debug a Java app?

    The answer to some of these may be “yes” but I know plain Flash does not do all of this. And of course in Flash, aren’t you designing within a “movie timeline”? Maybe this seems normal if you’re used to it, but it’s pretty weird from an application design or RIA standpoint.

    I’m a fan of using the right tool for the job – usually if something wasn’t designed for what it’s being used for, it’s probably not the right tool. (Plain Flash for enterprise systems? Doesn’t sound wise to me…)

  12. Ha – surely you see the absurdity of what you’re saying: “I don’t know a *single thing* about Flash as a development tool, but you must be a@#$%in crazy dumb person prefer it to Flex!”.

    Tempting as it is, I’m not going to flame back – it’s plain from your comments and questions that you have never done any enterprise development whatsoever in Flash, and simply *know* Flex. Flash development doesn’t happen on the timeline, it has most if not all of the components available to Flex, and it scales as well as the developer has written it to. Like many developers (perhaps CF guys being the worst offenders in my experience), you don’t appear to know anything about Flash, but are nonetheless happy to describe it in the league of a toy for animations and banner ads. It’s depressing – any competent Flash developer will tell you the same thing.

  13. Okay, I’m an AS developer and I’ve been thinking about Flex but never used it. I can tell you that in Flash Applications are not all that difficult to make. The advantage is that you can make it look exactly as you lay it out without having to deal with skinning or CSS. To answer some questions in the last post.
    Flash is simply a platform that can use Actionscript as the language behind it. Does it support: Data-binding? Yes CSS? No, it doesn’t need to. Unit testing? Yes, just use classes. Data and UI components? Yes and they are really easy to use with Flash Form documents.
    “movie timeline”… you don’t really use this much when making applications, its mostly just for frame based animation (which you can also program or convert into AS3 code in CS3).

    I’m not sure what the big deal is with Flex either, but I’d still like to try it out. The whole XML thing is something Flash has always supported and pushed.

    Both platforms use Actionscript as a base. Flex seems to use MXML as the way to style components and screen elements. Flash uses an interface that allows you to draw and place everything exactly how you want it to look.

  14. James, you’ve got your head very far up your butt.

    Flash is a horrible environment for creating applications. Flex is going to be the technology to know over the next 10 years.

    Wash your hair James.

  15. I am not sure you understand the concept of Flex or appreciate and understand its differences from Flash. I do understand your comments that lead to the argument that it is not a replacement for html or appropriate for building websites….but take a look at some of the recent work which might change your opinions…see this website made in flex

    http://www.flexdownloads.com

    RT

  16. DUDE !

    WTF !

    How can a platform be evil? Its a programming language you dolt!

    You find personalities in programming, then you compliment it in the next sentence, and then you attack it again.. Your posts ramble on incessantly about moronic things.

    No offense, but you really belong in an institution.

Leave a reply to Ken Cancel reply