My top priority is completing Falcon's MXML functionality. I plan to do this in a test-driven way, by writing unit tests at the level of the lexer, parser, and code generator and making them pass. The compiler tests for MXML that we had at Adobe weren't structured well, so rather than spend time donating them I prefer to write an MXML suite from scratch.
I'm happy to take suggestions from Omar how to write better JUnit tests, since he didn't think much of the ones I wrote for the MXML lexer. Soon I'll start on a set of JUnit tests for parsing each kind of MXML tag. After I write a few of these, I hope that people will help me to complete the set and fix the bugs we find. Then I'll move on to code generation of specific MXML features, and then to compiling entire SWCs and mustella tests. Given that Falcon's ActionScript functionality is much closer to shipping-quality than its MXML functionality is, I don't consider the ActionScript tests to be as high a priority. Other than porting over key bug fixes from ASC 2.0, I don't think we should be changing the ActionScript compiler until the MXML compiler is more complete, and therefore we can live without ActionScript tests. I'm hoping someone else at Adobe takes on the task of donating the ActionScript unit tests. I think there are more than 25,000 files, so this will be a lengthy task. In the absence of ActionScript unit tests, large functional tests like compiling framework.swc can substitute for them and verify that ActionScript is getting compiled correctly. I have asked for help with setting up these tests and not gotten any takers. The first step is to convert the <compc> tasks in the Ant scripts to use config files so that a JUnit tests can use the same config file. Anybody who has ever written a config file can do this. Working on the MXML compiler does not require a background in compiler construction. It is pretty straightforward stuff. For example, the parser code turns a DOM-like representation of MXML into a tree-like representation with nodes like MXMLInstanceNode and MXMLPropertyNode. You could understand this process after a few hours. Similarly, anyone could work in code generation after a few days, because most MXML tags produce straightforward byte code. I encourage developers in the Apache Flex community to step up and help with the completion of Falcon. If no one helps me out, Adobe may conclude that further investment of my time is not productive. - Gordon