EMC2 is software that runs on Linux, on most standard PCs, that can interpret G-code and run a CNC machine. It was originally developed on a milling machine, but support was added for lathes and many other types of machine. It can be used with mills, lathes, plasma cutters, routers, robots, and so on.
EMC2 is an effort currently underway to simplify, organize, and extend the original EMC software in order to make it more developer friendly. It got under way after the 2003 EMC meetings where the difficulty in understanding and modifying the original version of EMC was a major topic of discussion.
The RCSlib (Real-time Control System) was replaced with libNML (Neutral Messaging Language) which is a pruned version with just the functionality needed to support the NML communications needed by EMC. The new libNML is part of the EMC2 code tree so it is no longer necessary to compile or include the original RCSlib. Some recent discussion on the IRC channel has lead to ideas as to how, in an ideal world we would implement the messaging layer within EMC2 ... as ideas form they are documented on the Emc2MessagingLayer page.
Other parts of the code have been pruned somewhat to remove abandoned, non-Linux, platforms (Windows-NT and Sun-OS) and code with licensing restrictions incompatible with the open source nature of the project.
The interface to the control hardware has been greatly reorganized and simplified by the introduction of a Hardware Abstraction Layer (HAL).
Documentation of concepts and code are being given much greater attention so that new developers can "come on-line" with much less effort. Many of the goals set at ProgrammerDecisions Fest 2005 have been met.
GPL license terms have been applied to the newly derived code.