Wow thanks for all of your great replies on this!
I guess I should have clarified "using USB or Ethernet" a bit further. The program itself would just be a translator and GUI. It would set up and do all the motion setup like work offset's, tool compensation and ect. The software would then download the instructions to the motion controller connected to the USB or Ethernet. At this point I am really undecided on what motion board to start out with but it needs to be inexpensive and simple to hook up and use "virtually plug and play".
A industrial standard Ethernet bus interface that could be easily connected to a cheap $50 - $100 dollar PLC would work great as simple and robust IO capability.
I will be initially writing the software in C++ on windows. The reason is that it is simple to use easy to support and familiar to lots of people. Lets face it not that many people know what a bash prompt is or how to edit text in Vi. Although there is nothing saying that it could not be ported to something else later on. What I think would be nice down the road is to have an imbedded version on a usb stick. Sort of like a Roku for CNC!
Most of the pc controller software core logic like mach that are out there were written on nix and ported to windows. If you have ever looked at the source for EMC I think you would agree that it is a complete mess. The original core logic was created by NIST to support as many different configurations as possible including scara robots and hexapods! This is all just unnecessary for what the majority of home shops that just want to retro fit a 2 axis lathe or a 3 axis mill would use it for. I think a clean slate needs to be made. A clean program designed specifically for the type of machine it will be used on and for the guy in his garage more interested in machining out his latest idea and not so much learning the inner workings of coordinated motion control. I know there are lots of these guys because I was one of them.
The first thing that I need to work on is creating the core logic from scratch. This will include all the algorithms that modify the trajectory code like tool and work offsets and cutter comp. This will be the toughest for me as I will need to dust off the rusty calculus gears that haven't been used in a long time.
After the core is finished then we can do the fun stuff like create the GUI and conversational generators like threading, facing, pocketing, ect.
I really appreciate all of your input and please keep it coming.