Minsky is written in C++, in a Model-View-Controller pattern, with a TCL script providing the GUI View and Controller parts, and the C++ implementation providing the model part of the MVC pattern.
TCL provides not only the usual set of GUI widgets one expects for a modern GUI programming environment, and an event driven programming environment, but also a canvas widget, which is used represent and manipulate the ODE model in a graphical manner, and a spreadsheet widget through the use of TkTable. Additional graphical elements can be added to the Canvas widget by means of EcoLab's CairoImage class, which allows arbitrary graphical elements to be constructed using the Cairo library.
Minsky uses Classdesc (from EcoLab) to provide reflection of the C++ classes to XML and to the TCL programming environment.
The C++ code uses a modern RAII style of coding managing object lifetimes. Contributed code that does not correctly manage the object lifecycle will need to be corrected before being accepted.
EcoLab also supplies the ability to query the state of any C++ object via the "object browser", acting as an in build debugger. This is a complementary tool to using a regular symbolic debugger. Similarly, "command" allows any TCL command to be entered on the command line (if minsky is being run from the command line). This can be useful for trying out different TCL commands.
Regression tests (in the form of unit tests and integration tests) exist in the test directory. Tests are written as bash shell scripts, exhibiting a particular protocol which works within the Aegis test framework, but can be run independently by running the scripts directly. Unit tests can be added to the unit test executable, making use of the UnitTest++ test harness. This is run from test/00/t0001a.sh.
Source code automatically annotated by doxygen can be found at http://minsky.sourceforge.net/doxydoc/html/ . An overall UML class design document can be found here