In the past two years, I have been volunteering as a mentor for the Byron High School robotics team. One major project I worked on was the construction of a DIY CNC machine. We started with the X-Carve kit from Inventables and quickly ran into limitations.
Initially, the machine was controlled by an Arduino running GRBL. The stock stepper drivers were underpowered and I wasn't happy with the machine's performance. After quite a bit of research, I settled on upgrading to a LinuxCNC controller, gecko stepper drivers, and a closed loop spindle speed controller. This would let us use proper CAD-CAM and have a whole lot more flexibility. (At the time I didn't know how to write a post-processor, and am still a little fuzzy today) Getting linuxCNC setup wasn't trivial but I was able to learn a ton.
After the all the upgrades done things still didn't go as smoothly as I would have liked. The X-Carves' physical design is limiting factor. The frame could be a lot more rigid, and I am not a fan of the belts being used for linear drive. That said the machine works fine, it just can't take more agressive cuts.