Had dinner last night at Figo with my friend Leif, the local Adobe User Group Manager and Roundbox employee. More than a friend, he’s one of my mentor’s and also someone locally I can meet up with in person and talk shop. We were discussing various things, and I took the opportunity to show him some of the more real-world examples I was working on that extrapolated on my way of incorporating Flash content into Flex vs. loading it in externally. I got some good context about work flow I hadn’t considered. Since he plays a managerial role at times, he’s thinking about the best work flows for his team. This was a good acid test to see if some of my ideas would work or not.
One thing that came up that I couldn’t answer is the state of ActionScript 3 in Flash 9, mainly, why is it there? If you were at MAX, or read anything online, the future release of Flash 9 looks pretty hot. A far cry from what is up on the labs right now, the IDE design itself looks hot, and it has some quirky features that, at least at the get go, look appealing enough to upgrade. The big thing, though, is the ability to publish to Flash Player 9 using ActionScript 3.
Upon reading this article ASH posted, it clearly shows there is some “desire” by agencies to not only desire to publish to Flash Player 9, but who are now in a good position to do so when Flash 9 is released officially. Agencies do not utilize Flex to do their work. They are typically marketing & design focused, not doing application development, thus Flex isn’t the appropriate tool for them. Yet, I have no clue what those agencies have in mind.
I really didn’t fully appreciate how ingrained Flash was in the agency world until I spent those 3 months up in Detroit. In working at a big agency, as opposed to the smaller places I usually work, I got to see the vast uses Flash has in those places. I could make generalizations because apparently agency people float from agency to agency based on economic & leadership climate. Not all agencies are the same, but they are doing the same “types” of work with regard to their use of Flash. In the middle of our project, we got the go ahead to upgrade to Flash Player 8. We were originally slated to deploy to Flash Player 7, which I supported. I would’ve taken 6; as long as I have ActionScript 2, I really don’t care for that type of work. While it was a little disconcerting to change your deployment scenario in the middle of the project, I understood the needs. As a design driven project, they were planning to shoot & utilize an immense amount of video footage, taking major advantage of Flash Player’s superior reach & usage of digital video online. Specifically, they also wanted the On2 codec in Flash Player 8 vs. the earlier Spark. The ability to have better looking fonts with dynamic kerning control was a nice side benefit. Obviously, Flash Player 8’s runtime filters gave the designers a lot easier time to convey whatever design they wanted, easier, without having to do production art to convert a PSD’s implemented effects to Flash. They still had to for some, but at least it was easier now.
“A color burn with a white fade & blur on this transition? Ok, can do.” No After Effects required.
But what of 9? The biggest to me was the work flow improvements with the Photoshop import. That is one of the biggest bottlenecks in development and I think Adobe looks to be doing a fantastic job there.
But what of Flash Player 9? I can think of no feature in Flash Player 9 that any agency would take advantage of. Strong typing, from my experience, does have value in shorter time frame Flash development work, but doesn’t have the return on investment like it does in larger scale Enterprise projects. After you wax a branch of classes you’ve just done because the design changed, you start to question if you should really be working that hard to make the code scale when it’s lifespan is measured in potentially minutes.
You don’t typically see software developers in the agency world for a reason, specifically front-end. If you do, they don’t last long. Either that, or their style has adapted to the strenous and under-appreciated role. They lose the ego and pretense that goes with what’s “perceived” as good programming practices. To me, when you’re under a deadline crunch, a lot of the OOP & design pattern precepts are meaingless; if you can get stuff done, on time and as designed, who really cares “how it’s built” if the app will never be maintained? When first time design impact vs. maintainability drives your product, strong typing, encapsulation, and various other best practices earned in blood over the years in Flash Development quickly fade away into being meaningless ivory tower concepts that don’t apply to your world.
Frankly, I don’t know how they do it. I know WHY they do it, but I don’t know HOW they do it. These same “developers” who work side-by-side with designers, creating massively complicated engineering works in a fraction of the time it takes traditional software developers, and expected to change said code on a whim. Code done in minute time frames isn’t typically as maintainable as code that was developed with the appropriate time. These are the same types of developers that stand the most to gain when agencies start doing Flash Lite work in the US. By the time they do, we’ll still be the atypical USA with the majority of phones deployed with Flash Lite 1.1 on them, supporting basically the Flash 4 style of coding. Most of these guys and gals can tackle that no problem since the ones I’ve had experience with have the no fear mentaility. Loosely typed, flexible ActionScript 1 shines in these areas and complements design nicely. I managed to inject ActionScript 2 into our project because the scope of the data services we were dealing with demanded it. That’s a fancy way of saying I’m now spoiled, and am incapable of going back to older, but still valid, ways of development. If the code isn’t as flexible as the designers, it’s thrown out; there are no negotiations. Developers are on the low-end of the totem poles at those places. They are there to serve the designers with their mad coding skillz and knowledge how to incorporate said code into design.
…so where does that leave ActionScript 3? As of this writing, Flash Player 8 is just slightly above the 90% penetration rate according to Adobe; 9 is about 40%. As such, most consumer facing agency work will continue to publish to 7 and 8 until 9 hits the 80% mark. What then? Just because Flash 9 might default to publishing to Flash Player 9, ActionScript 3 (guessing here, don’t know for sure), does that mean they too will publish “because they can”? Remember, Flash Player 9’s key component is the incorporation of the new ActionScript Virtual Machine, AVM for short, that takes advantage of ActionScript 3’s strong-typing to make code execution screaming fast compared to past iterations. This in no way positively impacts design rendering speed. I’ve only seen the new Garbage Collector, implemented in Flash Player 8, negatively affect animation speed in Flex, not Flash.
We’ve already established strong-typing has little place in most agency work. There is more incentive to use strong-typing now inActionScript 3, because beyond the easier debugging of code, you actually now are rewarded with fast running code for strong-typing things. Most agency work does not have a lot of code, nor is that code doing anything processor intensive beyond tweening code, which again, is display related. Some of the public Rich Internet Applications work I’ve seen in the industry is definitely developed with Flash as opposed to Flex. I’m seeing a large influx of traditional web & software development firms using Flex for their existing work because it’s approachable to them vs. Flash. As such, there are still smaller software development firms utilizing Flash for development work. To me, they have little incentive to keep doing so. Flex’ workflow is superior for that type of work than Flash is. Even when Flash 9 is released with ActionScript 3, you won’t get all of the coder benefits one gets in Flex Builder 2. One could argue some of the public facing development work done using Flash was done that way because Flash makes it easier to incorporate specific design elements compared to Flex. I’d agree, but if your project is development driven vs. design, I really fail to see the gain. Seems to me you’d save more time in development that would offset the design incorporation time. Either that, or they are just learning Flex to see what it can do and offer them, and are thus sticking with what they know till the time is right for a new project. Cool, I can understand that. As Leif pointed out last night, I’m extremely impatient. Prudence is a good move in this case, even with all the hype surrounding Flex.
Regardless, I still can’t see the reason why AS3 is in Flash. The only tangible reason is, going with the above prudence argument, that smaller shops don’t want to jump to Flex immediately for their development work, so will continue to be slightly behind the bleeding edge, and thus will stick with Flash for another 1 year to 18 months; depending on project schedule & in house developer training / competence of the new Flex tool set.
Others could argue Flash is faster. Hrm… define faster. If I want to check the length of a string, print out key codes, or parse some data, I’ll definitely be using Flash for that. Setting up a project in Flex Builder just to do those simple thing is a pain in the arse. Additionally, strong-typing gets in the way. Granted, you don’t HAVE to in Flex, and can ignore all of the warnings, but even so, certain non-casting in Flash allows you do quick math that is impossible in strongly-typed Flex. Again, you don’t have to cast… but why go to the trouble? Just publish for ActionScript 1 in Flash, and get things done, faster. I’ve seen like… apparently 2 use cases for ActionScript only projects in the past year. One in particular was strongly defended as being relevant, and having no need of the Flex framework for a GUI-less project. Ok , I can buy that. I can also buy it’s 1 use case, being an exception to the rule. At the end of the day, it seems for quick and dirty apps, prototyping, or just good ole small in scale Rich Internet Applications, you’d use Flash vs. Flex. If I had my choice, I’d use the latter, but it’s really industry specific at this point.
I still think the prudence argument is weak. The only other valid argument is specific towards public facing applications, as opposed to being deployed on intranets, CD-ROM’s, devices, etc. Most public facing projects quickly determine that Flex is not right for them.
“I’ve added 1 Button and 1 Text box to my Flex app and it’s 118k!?”
That answers pretty quickly people’s questions if Flex is right for them on some projects. A lot of us nowadays get off easy targeting broadband customers, or Intranet deployed apps. A lot of people don’t have that luxury. It was one of the biggest frustrations of the early Flash frameworks in that while the initial hit of the framework was harsh, about 60k, the rest was really small because they all shared a lot of common base classes. Still, the initial hit was still too much, combined with slow initialization times.
Those days are over, but the requirements for smaller apps isn’t. I’m seeing more and more AJAX / DHTML / non-Flash sites nowadays that load slower than Flex apps do. Why? Initialization is debatable, but filesize is not. For example, Plum.com, a social collection site, takes 7 seconds to load on my gaming PC. The initial page is 31k, and the homepage alone without clicking on anything downloads a total of 634k worth of assets, all in 14 server reqests (why do server requests matter?). How does this compare to your Flex app? Obviously, this is but one example, and there are many good ones, but the key point here is that Flash is chosen over Flex because you have more control over the filesize of your component set. Flex can be shrunk, no doubt, but it wasn’t made for modem users.
…so, I guess ActionScript 3 is in Flash 9 for prudent customers, and those who wish to harness the power of ActionScript 3 for creating smaller SWF’s? Not sure how big the component framework Metaliq and Grant Skinner are working on for Flash 9’s release, but we’ll see. This was one of our requirements up in Detroit; filesize was our 2nd priority over correctly implementing the design, so I can see how it’s valid.