This post is long overdue, and I want to personally apologize to Adobe for taking so long to post it. Adobe (Macromedia?) thrives on customer feedback, early, and makes a serious effort to prioritize on it whilst comparing to their own market research data they do by proactively reaching out. I haven’t done this in a long while, focusing on business vs. the actual tools & runtimes.
Flash Builder 4 is a great leap forward from Flex Builder 3. It’s not any large features, but rather a bunch of little, consistent things that lead to a pleasant experience.
Years of neglecting other areas, as well as blatant missing features that open source alternatives & competing IDE’s have makes me question if there is any serious money behind Flash Builder. I know the effort and will are there; even after distancing myself from the Adobe product teams the last 3 years, when I do return via email/Twitter, they still have great attitudes, and want to continually improve their tools/runtimes.
Bottom line, I and many others are more productive using open source alternatives to Flash Builder, and usually only keep Flash Builder around for 3 key features (Library project linking, Design View, and superior MXML handling, specially with states). There are a lot of common workflows that seem to be ignored, and even after 4 years of the community bringing them up, they still aren’t remedied.
I outline the problems below with potential solutions. Some solutions are actually easy; you just copy open source implementations.
Call To Action
I cannot promote Flash Builder 4 to my clients, nor will I spend another dime on Flash Builder 4/5 licenses until Adobe takes Flash Builder seriously by making 5 on par with open source alternatives. While I respect that some of the blame lies on the Eclipse foundation, Adobe clearly thinks there is value there if they base a Designer specific tool’s future, Catalyst, on top of Eclipse’s architecture.
I, and millions of others sent a message to Adobe with CS4. We were sick and tired of incomplete features, bugs, and crashes. Adobe then laid of 10% of their staff due to poor CS3 sales… even though 1 month prior their CEO was on stage at the Adobe MAX conference saying sales were doing well. They did this again the following year. You can blame it on the recession. You can blame it on a public company doing what most do in down times; laying off staff to boost their stock value when dividends are nowhere to be seen because there is no forthcoming company revenue.
…or you can take responsibility for your bad software, and fix it. I was a devoted customer until CS3; we fought with our wallets, and our wallets won. Which sucks. My career and life are based on Adobe’s product line. When you, Adobe, suck, life sucks. Not just for me, for the world. You’re doing important work.
The following are problems with potential solutions.
Flash Develop, FDT, IntelliJ, and Visual Studio all give code hints for your classes, methods, and variables WHILE YOU TYPE. No period needs to be post-reached, not keyboard command; it just shows you a drop down WHILE YOU TYPE.
Worse, if you misspell something and back up, most of the time the drop down will go away, forcing you to spend more time to get the code hint to come back up… or just say eff it and code like your in AS1 (or Python).
This should be top priority; I understand if you’re waiting on Eclipse to add this.
2. Automatic Class Importing
Flash Develop and FDT both auto-import for you while you type and hit enter. IntelliJ gives you the option to hit Alt+Enter to import a class of your choice, or perhaps define it which is even cooler. Know what Flash Builder does? Doesn’t compile, and blames it on you. Gee, thanks $500 IDE. I paid you $500 bucks to bitch at me and not auto-import my class you know full well where it is.
My code is littered with var a:SomeClass. If you go on a blank line, and type var a, it’s the quickest way to get the class drop down. From there, you can hit enter which’ll auto import the class. You then delete the line.
Half of the problem is that the drop down is just flaky; miss it, and it won’t import your class. Just start typing in a non-start line place, and Flash Builder won’t even give you a code hint. Import yourself.
Please do a better job of auto-importing. Level 1 is to get what Flash Develop/FDT do, Level 2 is to match IntelliJ’s intelligent options.
3. Slow Code Hinting Response & Mispellings
Part of the problem is the code hinting is just slow. IntelliJ, which is slower than Eclipse, still seems to consistently work. While Flash Builder 4 has significant improvements for misspellings over Flex Builder 3, ESPECIALLY in the class creation dialogue, for the code hints, 9 times outta 10, if you mispell “Graa” instead of “Grap” for Graphics, good bye dialogue, please start again.
If you can’t increase the responsiveness, then just be more forgiving with spelling, or just fix #1, and you should be good.
4. Stop Being ActionScript Racist: ActionScript vs. Flex
You all have been doing this crap since Flash 8. Back then, you’d show AS3 code hints for AS2; even help would show AS3 when I specifically set AS2 in the publish settings. Back then, QA was sincerely concerned, but it still shipped. “We don’t want you to use AS2 anyway”.
When people like Keith Peters, Steven Sacks, Grant Skinner, and Darron Schall bitch about it, and you do nothing, that’s a serious communication problem… and makes me question if the assholes who used to run Flash Media Server 1 & Flex 1 teams are now running Flash Builder team. Aka, “Screw you, your ideas make us and our shareholders no money, please DIAF.”
When I create an ActionScript 3 project, and go to import flash.display.Graphics, but you give me a code hint spark.primitives.Graphic, I want to throw a nuke at San Fran. It’s a waste a time, confusing, and causes compilation problems. It also leads to subtle, yet horrible problems where Flex dependencies get leaked into potentially awesome AS3 only libraries. as3corelib is a perfect example. Was pimp… then someone accidentally imported mx.formatters.DateFormatter… AND YOU’RE FUCKED!
If I create an AS3 project, get your damn Flex outta my code. I’m Jesse Warden, you know I love Flex, especially 4 now that I’ve drunken the Kool-Aid. But when I’m coding an AS3 only AIR project for Android to help promote your technology, and your own IDE starts getting all AS3 racist on me, it makes me RAAAGGGEEE!!!
5. Linking Projects: Unit & Visual/Functional Testing
Linking projects is just garbage and does not work. One of the greatest features you all implemented in Flex 2 was Library Projects. Using Library projects, you can also make Design View quite useful in Flex 3. You just build all your GUI in the Lib, and implement with application logic in your main project. Since it’s a Library project that’s pre-compiled, all your graphics show up nicely in Design View.
…if you want to unit test or do visual tests, however, it’s a nightmare. In this case, I have 3 options (3rd is make your own command line build script for mxmlc).
I can either integrate all my unit testing code & framework libraries into the project itself, or setup a new Flex/ActionScript project specifically for just testing the code. If you’ve ever worked with a large team, you know that the 1st doesn’t work. All someone has to do is get out of sync and/or break the build, and poof, productivity grinds to a halt. Broken builds, source control/SubClipse can get out of whack, or strange conflicts can result. Things happen, no big deal.
The big deal is you can lessen the impact by creating new projects so developers can work on their projects and do integration testing with their new code on their own terms when they are ready to lessen the impact on the team. It’s a very simple thing to do.
The problem is, this sucks. Linking to Library projects is magic; it’s why people still keep Flash Builder around when they primarily use FDT. You just click the “Add Project” button for Library paths, and BOOM, you’re linked. It automatically recompiles your SWC, and copies the fresh mofo over. No manual refreshing, no Project Clean n’ Pray… it just works. THIS is where I’m glad some of my $5oo bucks went.
For projects? No such love. I have to manually point the source to the other project’s source. While in the same Workspace, apparently Eclipse doesn’t think that’s useful and makes me manually navigate there via Finder/Explorer. Worse, you have to do it AGAIN for your libs folder since it’s a source path link and not a real project reference.
…and it gets worse. Because it’s a source path to an open project, Eclipse gets confused sometimes. You’ll run into situations where you can have to “MyCustomButton.as” files open. Which tab is which? Why is one “out of sync”? How come sometimes I compile and run and the code hasn’t changed?
This is even more important for components you’re testing in AIR projects. Most AIR projects have complicated bootstrapping, so it’s not very straightforward to just test a new AIR application (which creates yet another AIR config xml file). It’s easier just to create a quick ActionScript/Flex project, and test the components in isolation. Quicker to solve bugs too.
Please fix linking projects (Library projects work just fine).
6. Design View
What the hell did you do!? This worked fine in 3. In 4, sometimes my drops are ignored. My pixel perfect placements take 3 drags to get right. Sometimes it just gets locked up, and I have to manually hit the refresh button. Based on Twitter, there are only 3 other people in the world who use Design View; the rest are crayon pushers who use Catalyst, so maybe that’s why. Still, if you don’t want us to use it, then make it like the Behaviors Panel in Flash, and REMOVE IT.
7. Proactive Error Checking
mxmlc’s incremental compilation is rad. I know those coming from PowerBuilder, Java, and other large Enterprise systems which have tools that are pretty smart at only re-compiling what is needed are somewhat critical of mxmlc’s speed. Whatever, if you worked on projects in Flex Builder 2, and then did projects in Flex Builder 3, it was light years better. If you did work in Flash IDE, then went to MTASC, then went “back” to Flex Builder 2, then 3… it was UBER-light years better.
That said, the background compilation for errors doesn’t really do much. IntelliJ really wins here in making use of the full IDE to HELP you, vs. just inform you’re screwed, no compilation for you. Right now, most messages in Flash Builder’s mxmlc errors are good enough, and clicking on the error to go to the line is great.
However, IntelliJ makes the word/area red, puts red tick marks on the right side to indicate where in the class the error is, and even underlines the tab’s class name itself to imply “this class has an error”. That’s 3 visual indicators each covering a different spacial area all to be proactive to help you FIND problems. Even cooler, IntelliJ has some helpful options to import a class you forgot, show a possible mispelling, or allow you to create a class that doesn’t exist yet.
These common problems are old. IntelliJ has found ways to help you solve these common problems. I fail to see why at version 4 we’re still ways away from this. All we get a list of red dots plus reasons away from the code itself and everyone I know ignores all of them except for the 1st. Context is key, and in-code errors plus helpful solutions would be great.
8. Copy Paste
How come I can’t copy paste from Flash Builder to Flash? Some programs just seem to ignore the clipboard from Flash Builder. Others on Twitter have reported the clipboard in Eclipse is reclusive for them as well.
9. Pasting Multiple Files
I have flexunit4.swc, hamcrest.swc, mockolate.swc, greensock.swc. I copy them from my Finder. I paste them into my libs folder inside of Flash Builder’s project panel. Only flexunit4.swc makes it. God dammit.
Please fix this.
If you fix the above, you’ll start to become on par with Flash Develop/Intellij/FDT. Once you do that, I can justify spending $500 again for an IDE. Right now, beyond MXML handling, states preview, and consistent Library Project linking, I’m not sure why I paid for in my upgrade from 3 to 4. Whatever I can do to NOT use Flash Builder 4, I’ll do. Either you all were rushed, you don’t have enough money behind the project, or y’all have never used another IDE beyond Flex Builder to code ActionScript.
If you didn’t listen to anything I said, then for Flash Builder 5, please:
- copy Flash Develop’s code hinting
- copy FDT’s code gen
- copy IntelliJ’s proactive error handling & auto-importing
- copy FDT’s class re-factoring
- fix Design View