Some years ago I worked dev. this, but I aspire to too much and it become incomplete. I comment to try to take some steps forward.
This capture shows a vertical group, which you can only drag horizontally, a riched group where you can write name and description (and put an icon) via double click, and an on-canvas cluster, where you can also define the parameters and the main idea was to be able to reuse them as snippets, and loading easly other implementations that match its parameter setting.
I also did and UI option to show the object roles, but this doesn’t work perfectly well because is very hard to deduce automatically this without user defined labels like global and local input/output, or global and local source/target. I already suggest to do support for this metadata which will allow new features above of the definition recognition, but I don’t think they seriously considered it.
I also tried to do a metagraph like that in several ways, I spend some time obsessed with this idea. However, it seems simpler than it is, it really is a lot of work.
I hadn’t thought of including the number of components, I opted for changing the size of the nodes instead, which turned out to be very complicated to place them correctly, so good idea. Although aesthetically, I don’t like to see the numbers there, some visual solution might be better. I also fail trying to this when you zoom out to some amount, because all that view is very It’s pretty wasted, but it didn’t work out. In the end I chose to make a map in a corner, but I wanted it to be zoomable so I could go through 3 metagraphs, a top one with groups of maximum level of abstraction, an intermediate one to define the intermediate steps and another detail view to define the implementation. I was totally overwhelmed by such an ambitious idea. I finally opted to keep it simple, but my energies had already been spent. However, this poses several problems. One that I remember now is that, as a user, you have two options, either to make lots of groups, more than you would normally do, or to settle for having many groups with a single node, which does not reduce much visually the content. It’s not a problem to avoid doing this, but to not expect wonders.
I didn’t throw this project away. This was all in a project to make GH easier to use and learn. The main use of these groups was to do tutorial steps on the canvas, to minimize the author’s effort, and automatically, as with an assistant, to be able to guide the student to learn the definition/tutorial. Another important intention of the cluster in the canvas was to create definition templates, where the student faces the problem of creating something but with parameter restrictions, which models the way to face the problem and he only has to think how to transform the data. It is also very useful for standard product construction topologies, where the only thing that changes from one design to another is the implementation of detail, for example, if you want to texture a surface by moving a grid of points in its normal direction, it is a position dependent function that returns an amplitude of motion, one part of this definition is always the same (like a template, the part of extracting the points, moving them and creating another surface with them) while another part changes for each implementation (using the distance of the points to attractive geometry or something like that). Thinking about it now I think this is a bit off topic, sorry.
I’ll come back to this but it’s not a priority for me right now. But it should be native, that the next version should enrich the groups and have a map like you propose, because really from inside they can facilitate this a lot.