Comment by ginko
I can only talk about my own experience trying to learn FreeCAD for a project[1] I eventually used Build123d for.
For me FreeCAD was highly unintuitive. Everything is a chain of operations/modifications on solids(good!) but for some reason it won't let you modify anything but the last element in the chain?
I was working on a trackball device so part of the parameters are the size of the trackball you'd use.. This affects pretty much all the parts in the chain but you have to decide all the way in the beginning on what size you need. In code-based systems this is simply a variable you define in the beginning and can modify at any point. Let's say I want to use M2 screws instead of M3 ones or use a larger bearing: I can just change a variable at the start of the script.
Being an absolute beginner I also had to reorganize stuff a couple of times. With python/build123d that's a matter of shuffling around code in your editor. I don't even know how you would do that in FreeCAD without deleting and redoing large swathes of your design.
Then there's my general unease dealing with this opaque representation of your model where any previous step you may have took puts your project into some state that can't really be undone or at least not intuitively found. When working with code and something breaks you can usually recover from a broken state by stripping out whatever you were working on. At worst you can just go back to your last revision in Git. With GUI-based tools you have to pray that Undo/Redo gets you to a state you wanted without losing too much.
Maybe the proprietary tools work better here but they don't run on Linux and I also don't use them for ethical reasons.
Admittedly the whole experience with build123d is anything but perfect. I _would_ like to just pick stuff with the mouse where possible and have a nice real-time display of changes I make. Ideally I'd like to see some sort of editing graph where you can see intermediate steps and pick visually parts to operate on for the next step - all underpinned by a concise textual representation that can be versioned.
Maybe this is me showing SE hubris but it's how I was able to get a reasonably complex personal project done. Maybe programming somehow broke my brain, IDK.
> For me FreeCAD was highly unintuitive. Everything is a chain of operations/modifications on solids(good!) but for some reason it won't let you modify anything but the last element in the chain?
This has been a longstanding issue in FreeCAD. A big issue is that it is really difficult algorithm-wise to deal with changing geography: a tiny change might result in two objects which look the same, but have a completely different internal representation. If the next operation is attached to "face #23", it's going to freak out. This is called the "topological naming problem"[0], and it is pretty much impossible to solve completely.
FreeCAD itself can support the kind of parametric modeling you want, but because it's so fragile the UX is pretty horrible. To do it properly you essentially have to specifically design your entire model around being parametric from the start.
Luckily FreeCAD made some massive improvements in 1.0, and issues due to topological naming are now far less likely to occur. Hopefully it'll eventually turn from "guaranteed to ruin your day every time you try altering something" to "might need some manual adjustment in weird edge cases" - and that would also make it far more sensible to invest in UX for making mid-change modifications, or for modeling using variables.
[0]: https://wiki.freecad.org/Topological_naming_problem