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.