I agree it’s been an inconvenience. One of the upsides or downsides, depending on your perspective, is that different FreeCAD contributors have tried different ideas out. I would be surprised to see older Assembly workbenches thrown out, making old documents unusable, but I would hope that they would at least get to the point where one particular approach is integrated, recommended, and thoroughly documented…
Assembly3 depends on SolveSpace which is not license-compatible, so it’s unlikely to be blessed as The One Assembly Workbench unless all the constraint solving is re-implemented internally. At least it no longer requires running a fork of FreeCAD like it used to!
The nice thing about constraint-based assembly is that it’s like making sketches. The bad thing about constraint-based assembly is that it’s like matching sketches. In both cases, if you add a constraint that it has trouble solving for, it makes up nonsense. I don’t know if I’ve gotten better at avoiding nonsense in sketches or if FreeCAD constraint solving in sketches has gotten better over the past few years. Fundamentally, finding solutions won’t improve in Assembly3 without improvements in SolveSpace. The experience using Assembly3 is a lot like SolidWorks in my experience, both in the mechanisms of constraint and in the fact that sometimes the parts just do something I don’t expect and I have to puzzle out how to get them to behave.
Assembly4 looks promising and doesn’t need a solver, which makes it remarkably more efficient. It does require adding local coordinate systems to pieces to map together if they don’t map at the origin, or at least it works better that way, not needing to set offsets from the origin.
Compared to SolidWorks, I like that Assembly4 (at least; I don’t remember about Assembly3) lets me build both parts and assembly in a single document (vs. .SLD
/ .SLDASM
in SolidWorks).
Assembly4 clearly could use more refining and documentation, and trying to understand how to use it from the documentation and the single mega-thread on it on their forum is a bit frustrating. The maintainer is still tinkering with what to call the top-level objects. But the idea of explicit assembly instead of constraints makes a lot of sense to me.
Ultimately, I like the idea of being able to try different ideas, but it sure would be nice if there were one recommended assembly.