There are a lot of areas for improvement in the Abacus MathML Editor. The major, difficult items are:

- Integration with N|Vu and other Mozilla-based projects
- True support for adding human/markup language sets to the edited expression
- Implementing a text-based content MathML parser for each textbox (Abacus 0.2 requirement)
- Adding lots of MathML templates via the Abacus Template Editor, including a matrix template
- Making the user-interface more user-friendly / visually appealing, particularly in accessibility
- Preventing data loss when an error occurs in saving templates
- Exporting MathML markup that doesn't rely on chrome stylesheets
- Writing a help section and tying it to the "Help" dialog button

Other areas for work include:

- Fixing the strict warnings (all deliberately thrown to flag developers of known weaknesses)
- Reviewing the code for inefficiencies, documentation, and what's "just plain wrong"
- Filing and fixing bugs in Mozilla which Abacus reveals (there's more than one!)
- Localizations, particularly of error messages
- Separating the Abacus Template Editor and the Abacus MathML Editor into two separate projects
- Separating the dialog from the actual MathML Editor for XML editors to use (modal dialogs
*suck*!) - Exploring further the use and development of design-by-contract in JavaScript (asserts, preconditions, postconditions)

Some possible subprojects include:

- Using content MathML to calculate an expression's value
- A graphing calculator based on SVG (this is easier than it sounds... I've done it before)
- A native-code replacement for java.math.BigDecimal() (JS source code included in abacus.xpi)
- Developing a Geometry Markup Language, and appropriate user-interface for it
- Developing a Theorem Markup Language, and tools to use in secondary schools

So, where does Abacus go from here?

At this point, there is only one major requirement "set in stone" for Abacus 0.2. It would be really, really slick to take a text expression and translate it directly into MathML. TeX and LaTeX come to mind, although there is also the possibility of an ASCII expression. With that in mind, and the respective author's permission, I've relicensed and included the source code for the ASCIIMathML project in abacus.xpi. The code is not currently used, as Abacus isn't quite ready to use it. (Content is king; ASCIIMathML is currently configured for presentation MathML only. Plus, there are some more fundamental bugs in the current Abacus implementation which block its development.)

I haven't made any solid plans beyond Abacus 0.2, or for that matter, beyond that one major requirement. In one sense, the Abacus 0.1.1 release is a moment for me to step back and ask for help in developing this project. I've taken it a long way in at least making it work on a fundamental level. I call it "dogfood" because I and other developers can use it in small daily tasks. But is this a tool I would recommend for the average student or mathematics teacher? Not at this time.

Teachers and students: I am particularly interested in getting feedback from you! If you are a student seeking a project to work on, and this fits your bill, I'll be more than happy to write a nice letter (not an e-mail, but something for your academic record) recognizing your contributions. If you are a teacher who would like to bring computers into the math classroom, I want to hear from you your ideas on making it work! If you are a teacher who knows how to write JavaScript... let's talk.

Financial contributions are also welcome. If you are interested in directly sponsoring development of Abacus or related projects, please e-mail me. I am available for hire, and my resume is here.

Alexander J. Vincent