The advantage of ECS here is that it solves the programmer needs of dynamic typing while retaining the safety, performance, and pre-compile intellisense of static typing. The cannonical introduction is http://cowboyprogramming.com/2007/01/05 ... -heirachy/
Moving logic from OOP objects to systems that act on tuples of component types is a magical
and cathartic feeling.
I understand the perpetual legacy of these large codebases: how they become resistant to change as they increase in mass. ECS, I think solves a lot of the modularity issues in a nice way.
I have no doubt that the best CAx applications in the world a decade from now will use ECS or evolutions of that framework.
I'll study the codebase more in depth in future months before embarking on any sort of architecture experimentation. @ickby I saw your frameless UI and really liked that (but more broadly I want multiple documents open for editing simultaneously, ie to visualize git repo linked composition of parts as graph nodes). For example, building a house in FreeCAD at Open Source Ecology it is ambiguous what the 'base unit' should be. Raw material like 2xN" lumber? Multiple 2xN App:Link, each cut to a specific length vs a single parametric cut? A house module composed of the underlying materials? These issues get complex once you consider longevity and collaboration.
Pretty much the most user-friendly precedent for this sort of thing is a nested prefab variant in Unity https://docs.unity3d.com/Manual/PrefabVariants.html
(that's not quite ECS yet because it doesn't use systems): well that requires a better external editor integration and powerhouse UI workflow. I for one don't understand why open source projects can be so insistent on application contained scripting (Use Godot editor to write GDScript, use FreeCAD console to write macro) Cmon guys I want my custom fonts and color theme in VSCode... Tree drag and drop functionality is not even merged in .20 yet https://github.com/FreeCAD/FreeCAD/pull/4626