I've extensively used Autocad, Varicad (linux), qcad (linux), CATIA, Rhino and tested some others like FormZ, Pro/e. I was since some time ago thinking of what you are talking about (more or less). I'm also 100% linux, since I dropped autocad and catia.
I'm also very interested in the Hidden Line Removal, as you said 2d print from 3d. In my opinion, these would be the order of things for a simple, functioning CAD app:
1) Tree view (OCAF)
2) Selection (tree and viewport), allowing filters like edge, vertex, etc...
3) Undo/redo framework (OCAF)
4) Manipulators (interactive rotation, move, scale)
5) Creation of basic entities with numerical input. gp package-like entities: point, plane, axis.
6) sketcher mode
7) constrains and snapping
8) basic solid features, like extrusion
9) layers
10) python wrapping to access all the stuff that doesn't have a visual interface. At least, things are there.
11) Drawing extraction and some 2d output paper model.
12) Export or print support
If you want just 2d cad, like autocad is really used for, then the list would be:
1) Tree view (OCAF)
2) Selection (tree and viewport), allowing filters like edge, vertex, etc...
3) Undo/redo framework (OCAF)
4) Manipulators (interactive rotation, move, scale)
5) Creation of basic entities with numerical input. gp package-like entities: point, plane, axis.
6) sketcher mode
7) constrains and snapping
8) layers
9) export or print support
What do you think?