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




Reply via email to