Two years ago when ActionScript 3 introduced to Flash community, Flex 2 was the first citizen of next generation of Flash platform, before Flash CS3 released almost a year later (count in Flex 2 beta versions). I don’t know how many percents of former Flash developers has already worked with AS3 today, but one thing at least, Flash developers not only excited by the new generation robust AS3 language, but also confused and complained. Some Flash developers argued Flex frameworks, are those Flex applications over-engineering? Why a single Flex component asking for big number of kbytes which not included in RSL? Some voices also come from another side of hill, the mainstream of Flex developers, former Java developers found themselves quite comfortable with Flex frameworks, has some opposite opinions.
What happens to Flash community for Flash developers? What’s the direction of future Flash developments?
(‘Flex’ means Flex framework projects in this post not include Flex pure actionscript projects)
Flex changing Flash developments
When ActionScript 3 came with Flex 2 two years before, there’s a strong signal from Adobe, Adobe has great interests to grasp methodologies from Java world, Agile developments into the new generation of Flash. The new AS3 API then has two parts from Adobe:
Flash Player API. The same part that Flash developers coding in AS2 with Flash IDE (technically new VM for sure), now what Flash developer relying on using Flash CS3 IDE (there’s still components in Flash CS3, I wonder whether they really useful).
Flex framework. Visual components and layout containers, styling, event/handler pairs, utility classes, data collections, service/remoting classes, code templates/code injection with MXML scripts and meta data.
I know some Flash developers, likely refuse to touch the AS3 Flex framework API, refuse the heavy weight kbytes for web applications. Though it has to say, Flex changing Flash developments.
The more Flex accepted by the industry, the more it changes Flash developments even without using Flex.
In sport games, when a challenger got higher score than a former champion, the latter will lose his gold. The only choice he had to fight for another higher score to regained the winner position. Today Flex was accepted by the market, and most important, for clients and end users, Flex equals to Flash, both Flash SWF files running with Flash player VM or AIR. So some situations will be, if something can be done well in Flex, like better usability, accessibility, functionality, will be requested by clients: ‘I like the way of that Flash, do this for me can you?’
So in some means, Flex pushing Flash applications to be more complicated than before. The more complex, the more code, and better light-weight architecture, with reasonable design patterns, will be necessary for lots of future AS3 Flash applications.
Second, Flex will change Flash projects by developers. The community now not only has traditional Flash developers, Flex developers, but also between them, there will be a number of Flash && Flex developers. When these developers join in a Flash project team, experiences from Flex developments and some techniques used in Flex framework which can be found from source code, will be introduced into Flash AS3 projects. For example, early last year I read a mailing list post from a developer of Adobe Flex team (should be James Ward if not wrong), said ‘Flex has better solutions to deal with text renderering’, so when a Flash project has the needs of text renderering optimization, how about to get some ideas from Flex framework source code how Adobe teams improved that?
Flex has been accepted well in the industry which no one can ignore.
Development teams favor more Flex.
- MXML and meta data, better readability, less code to maintain
- Force developers to code under predefined architecture, components/containers, event/handler, developers can be replaced easier by new members.
- Possibility for test-driven development and continuous integration, depends on team members’ experiences and time.
Lower budget required.
- No need developer hours/QA for components/containers offered by Adobe.
- Fast mock-up with MXML design view, easy to throw away if not fit.
- Flex SDK is free and Flex Builder 3 free for educations, means more cheap developers in the future.
Accepted by market.
- There’re many cases where functionality more important than preloading speed even remote websites.
- Local networked enterprise applications don’t care how much kbytes.
- AIR applications don’t care size.
So Flex has lots of benefits that Flash project couldn’t have today, what about the old Adobe rumor? Flash IDE for designers, Flex for developers?
I never agree with this. Flash development will not, and never can be replaced by Flex (framework) wholly.
- Limitation of Flex framework
Flex framework was planned for enterprise solutions, even today Internet quite faster than several years before, even Flex 3 introduced RSL solution to reduce kbytes absolutely, in many case, preloading speed can still be a problem to end users, would lose their satisfaction whatever realized or not.
Other cases if end users change their habits, say, some guys using iPhone/iPod more often? Most of Flex applications will be immediately not runnable in those devices. Techniques used by Flex framework to improve development effectiveness are double-edged sword, such as MXML/meta data, which auto-generated source code, automatic components/containers size-measurement, will consume more kbytes/memory than real necessary.
- Open source light-weight Flash framework for better, faster, lighter Flash applications
There’re already some open source AS3 framework emerged, some for dedicated usage like PV3D, some for light-weight architecture like pureMVC. I think there will be finally one or two mainstream open source Flash frameworks to be used as light-weight alternate to Flex framework (i.e. heavy components like DataGrid not necessary for most of Flash projects), lighter and more freedom to build Flash applications with Flash IDE or Flex pure ActionScript projects.
Open source framework could be faster to change than Flex framework because of less backward compatibility required, result will be Flex framework possibly sometimes get contributions from open source Flash framework by community.
RSL solution for open source Flash framework? How about share unique URLs, i.e. http://osflash.org/share/osrsl_01.swf.
There will be also needs of some external development tools, such as dynamic mock-up, open source automation test tools to be used to improve effectiveness in Flash developments.