The seductive power of libraries

While porting the token scanning of LiveGraphis3D from Java to JavaScript, I realized that one reason that this whole endeavor has a realistic chance of success is that I only used plain Java and the most basic library classes, e.g., Graphics from the Java AWT classes. (I.e., I didn’t use Java3D nor Swing, etc.) The functionality of the AWT Graphics class is similar to the functionality of the HTML5 Canvas 2D API, and in fact to any other 2D graphics API. Thus, I don’t have to reimplement any complex functionality. If this port to JavaScript succeeds then not relying on existing Java libraries was the key. I assume a lot of software projects die because of dependencies on libraries that are no longer supported or evolve without backwards compatibility.

Of course, the evolution of Mathematica’s graphics is an example: LiveGraphics3D supports only Graphics3D objects of Mathematica before version 6 (when the graphics were significantly revised) because I’ve never found the time to support the version 6 graphics of Mathematica. (Part of the reason is that the scanning of textual representations of these graphics requires a lot more look-ahead than the older graphics.) Thus, in the long run, LiveGraphics3D is doomed because it cannot keep up with the evolution of Mathematica (unless someone else picks up the task).

What alternatives are there to Mathematica? In particular, could LiveGraphics3D support an open-source computer algebra system? Probably, but the whole idea is that the applet (and in the future the web app) is not only able to read and display potentially complex 3D graphics but also read and evaluate potentially complex symbolic expressions, and that requires quite some programming unless someone has already implemented a computer algebra system in JavaScript. Anyway, I’m getting ahead of myself again.