I started working a set of robotics control libraries back in 2009 and
have deployed them as the control framework for MRI compatible robots.
Over the past year i began developing a set of tutorials for building
robots using my framework. In this process i build a small scripting
engine that uses Git as its file system. This allows scripts to
hyperlink to each other based on the Git repository they live in.
The platform supports Java/Groovy, Clojure, and Python scripts, and
these scripts use an "Object in Object out" version of the Pipe
pattern for interfacing. Since the JVM provides the common runtime,
they can pass memory references back and forth in the pipe pattern as
opposed to parsing and building stings. This lets any of the languages
trivially interoperate together. If a script you want is in a
different langauge hosted on a different Git repo, no problem just
call it in line and the compiled and typed object is returned.
Under the hood, JGIT, the same library eclipse uses to provide Git
support, is the library that manages the local caches of files pulled
from the Git repo. The scripting engine has features to commit changes
and push them upstream. In the Tutorials, you look at spike examples
in the WebBrowser (using GitHub Gist to JS embed the code), JGIT takes
the Git URL extracted from the Gist, caches the repo to the disk, and
makes it availible to the new user to run. From there the user can
fork, modify, and publish changes to the demo code. In this way, all
examples are executable right out of the built in browser for the
fastest startup time with new code examples.
The Application is used to connect cameras, robot controllers,
kinematics libraries, CSG Cad engine, a physics engine and a few AI
libraries all in a common runtime with a shallow on-ramp for even