Why make a CNC controller?
I've had a CNC and rapid prototyping obsession for many years now and can't help but dream of building a beastly 5 axis machine that can hold it's own with the commercial offerings worth more than the average house.
2 years ago I started playing with WebAssembly and decided to have a crack at building a 3 axis CAM system, something that can turn a common STL into G-Code suitable for your average GRBL powered CNC.
To my surprise it actually (mostly) worked and now lives in the Machinist project on Github. Whilst Machinist is far from complete, the working prototype gave me the confidence to tackle a the larger idea to hopefully provide a better ecosystem for CNC in general that would serve as a great tool for my personal rapid prototyping ambitions and hopefully those of others.
What we're trying to do
Existing open source CNC controllers do a fantastic job for motion control but fall short when it comes to connectivity and more advanced features found in commercial machines like peck drilling, lathe threading and tool center point control just to name a few. What we'd like to do is build a motion controller with all the standard features as well as plenty of room for expansion to support more advanced machines and part geometries.
Connectivity is a major component of improving open source CNC, instead of requiring an additional computer (like Octoprint or CNC.js) we're bundling a fully featured web server directly into the controller allowing it to serve and integrate with Machinist so you can go from STL to machined part from the WebAssembly powered interface using any phone, tablet or PC. The Bluetooth capability of the ESP32 open's up even more opportunity to support interesting peripherals like wireless touch probes and gamepad/keypad control.
By keeping everything open, documented and flexible we want to support every use case we can think of. Even the ones we can't think of just yet.