Currently, with FreeCAD v0.19, you can build fully functional assemblies using only core FreeCAD App::Part - App::Link and PartDesign::Body objects. There is no need for extra workbenches, the workbenches provide solvers to position parts inside an assambly as well as convenience tools to create such assemblies. The App::Part container was designed specifically to be the assembly container (see
https://wiki.freecadweb.org/Std_Part) :
The Std Part is intended to be the basic building block to create assemblies
This container has been introduced in v0.17, and is now very stable. It has been made fully compatible with the App::Link interface, and both provide a solid foundation to build large assemblies. It would be a pity to re-develop something from skratch where we already have a good solution.
BUT : some people seem to like the idea of a specific assembly container, and are unconvinced of the "old" App::Part (Std_Part) object and want something more "modern".
Fortunately, the coders of the Stad_Part have foreseen this and provide a default property called "Type", which is a string and empty at creation time. I propose hereby to make an extension to the existing Stad_Part and use that "Type" property to adapt the icon shown in the tree: by default, the traditional "Part" container is shown,
and when the Type property is set to "Assembly" a modified icon is shown:
It would look like this is the real usage:
I'm preparing a pull-request. Which is not only visual, but also a de-facto confirmation about the fact that tha App::Part container IS the FreeCAD assembly container. But this is also a confirmation that FreeCAD is nearing stability, as we are refining existing objects to extend the feature-rich functionality. By switching back to the pre-0.19 yellow Part icon we also show make life easier for existing documentation.
PR is here: https://github.com/FreeCAD/FreeCAD/pull/4928