Single Node Group Socket Hierarchy [Proposal]

The main goal is to improve the user-experience when working with node groups that have many sockets. Such groups currently face two problems:

  • All sockets are shown in a flat list without any hierarchy or separators between groups of sockets. This makes it hard to quickly find the relavant sockets and their relations.
  • Sockets are generally shown all the time. It’s already possible to hide e.g. all unlinked sockets but that’s often not flexible enough. Also it makes the relations between sockets even less clear.

The proposed solution is to be able to put input and output sockets into a hierarchy which can then be presented to the user. The idea of putting sockets into (nested) panels is certainly not new. The main contribution here is the exploration of the idea of putting all sockets, inputs and outputs, into a single hierarchy.

This single socket hierarchy is intended to replace the two separate lists of input and output sockets we have now with a single tree view.

Using a single hierarchy for inputs and outputs allows us to do a few things that would be more difficult otherwise:

  • While the common case is to have many inputs and only few outputs, sometimes it can make sense to group outputs with corresponding inputs. For example, a node group that does a water simulation might have inputs for spray particles and a corresponding geometry output. Both could go into the same panel.
  • Often one has an output socket that corresponds to exactly one input. It would be great to put the input-output-socket-pair into a single line in a node because it wastes less space and shows the link to the user. Common examples are the Mesh sockets on the Subdivide Mesh node or the Attribute sockets on the Raycast node. Aligning sockets will be even more important as the number of inputs/outputs changes dynamically in the future, e.g. when the Raycast node supports multiple attributes. With a single hierarchy, the corresponding sockets could be put right next to each other instead of relying on more complex mechanisms to find them (like name matching).
  • In the modifier interface, the “Output Attributes” subpanel could also potentially be removed when the output names are interleaved with the group inputs.

It would be astronomically helpful, a big quality of life improvement. Here is a use case…