Alastair, I believe modifying a global (? non-local) subcomposition would still affect all uses of it in all compositions, and modifying a local subcomposition would affect all uses of it within the one composition in which itâs used.
Are you suggesting a third kind of sub-composition that canât be reused â where copying it creates a separate unrelated copy â and modifying it has no effect on any copies?
Yes, im suggesting when inline sub-compositions become a thing (effectively window in window was something I wireframed yonks ago in pre-alpha days) â or even before then â where sub-compositions are not so much Virtual Patches in QC language but just equivalent of QC Macros and copying them just creates a new instance that may be varied accordingly with no effect on the original node from which the copy was instantiated.
Thereâs a bunch of situations Iâd use that in. Personal Text Layer nodes where I want to use something Iâve got already got going but then tweak it inside a bit to do something else, like round off or smooth a number value input thatâs irrelevant to the original sub-comp/macro I copied it off because it doesnt have a separate numeric value input.
So yes that makes three kinds of sub comps, but really two kinds, the kind Iâm talking about, macros in QC-land, and the ânode classâ type of sub-comp youâre talking about that can be called up in the library, reused and rewritten once to see changes ripple through your composition / entire composition library.
Thinking that through some more, you might want that library or ânode classâ kind of subcomp to be universal, either local comp constrained or global for all Vuo comps that user has, and the way they drag it onto the graph determines if itâs local or global in scope. Holding âOptionâ key while dragging from the Node Library or hitting âEnterâ key while selected in the Node Library makes it global for instance. EDIT meant a modifier when hitting âEnterâ key. (eg. âShiftâ + âEnterâ key).
Clicking Period Key while cursor is over a ânode classâ subcomp devolves it into a simple macro environment with no implications on other instances when itâs changed inside. And vise-versa dumping any internal changes when returning to an existing node class.
Would need some kind of subtle UI indication of scope i.e. itself/local-composition/global.
Square corners â isolated;
round corner â local sub-comp;
chamfered corner â universal sub-comp.
Hope that makes sense.