As we get close to the release of OpenMx 1.0, it is time to begin compiling a list of the new features we would like to see in the post-1.0 development cycle. I'll start the discussion with two features that have been on my mind.
Rewrite of mxEval
The mxEval() function needs to be rewritten. In the new implementation, a great deal of care should be made to capture errors at the point in which they occur. There are two primary types of errors: (1) during the evaluation of a function or an operator. And (2) when assigning dimnames to a matrix or algebra. The rewrite of mxEval() will also allow us to create an option for populating definition variables with a specific row.
Implement cbind(), rbind(), t() speedup
We should be able to transform cbind(), rbind(), and t() expressions into MxMatrix objects, provided all the arguments to the functions are either MxMatrix objects or cbind(), rbind(), and t() expressions that recursively satisfy this criteria. The big challenge (oops first time) is to do this correctly. That means: (A) assigning names to all anonymous free parameters, (B) keeping track of which algebras are transformed into matrices, (C) undoing the transformation from algebra to matrix after optimization has completed, and (D) undoing the naming of anonymous free parameters.