emc2 overview
emc2 is the current development tree based on the original EMC code - It currently doesn't know if it is a MATLAB wannabe, a robotics construction kit, or a CNC control.... The codebase for emc2 was forked from the Sourceforge repository during April 2006 followed a few months later by the cessation of the SF repository. The move was taken by a very small number of developers without consultation of fellow developers or project administrators. Even the "Board" failed to vote on the subject in accordance with it's "bylaws".Recent months has seen an explosion of ****** kernel modules implementing anything from complex trajectory calculations to trivial bit toggling - The majority being of the trivial nature. Each module has a series of "pins" stuck in (almost like a voodoo doll), and to stop the bleeding, a Hardware Abstraction Layer (or HAL) is used to link everything together. These links can cross the kernel/user space boundary, which when viewed in conjunction with the inherited shared memory interface, offers the prospect of multiple data paths. The HAL pins/links can also bypass the NML communications layer compounding any problems even further.. Like the original EMC code, it is unlikely that the code could be compiled to run on anything other than an ix86 processor without modifying the sources - It could be done, but...
Looking at the sloccount numbers:
ansic: 73088 (47.81%)
cpp: 60165 (39.35%)
sh: 9863 (6.45%)
python: 5915 (3.87%)
tcl: 3850 (2.52%)
sed: 2 (0.00%)
Like the original EMC code, there are substantial quantities of duplicate code in several monolithic files, and although an attempt has been made to adopt autotools, the make files are just as ugly. Question marks regarding licencing still remain over certain files along with definite copyright transgressions that are unlikely to be resolved. Anyone contemplating using the code for any other purpose other than personal use needs to conduct a full audit and read the user/developer mail archives (would be wise to consider the commit logs also).
If new users were confused by the configuration files in EMC, the emc2 configs should confound them even further. Not content with a single ini file, emc2 uses an *.ini, an *.nml, plus several *.hal configs. Each with their own peculiar syntax, often terse or cryptic, and oh so easy to break..