Created: 2022-06-06T03:00:48-05:00
Was musing over the documentation for SideFX Houdini recently. In particular how the program represents every operation as a particular node. This kind of thing also appears in [Material Maker](https://materialmaker.org/), Rack, [Armor Paint](https://armorpaint.org/), [Natron](https://natrongithub.github.io/) and their commercial originals.
It's interesting to see the basic pattern:
In a way this mirrors the "command pattern" but rather than doing a command once and throwing it away (or leaving it in an undo log for a short time) the command persists as an object to be tinkered with later on. Sometimes even features like outputting sound are owned by a node (such as VCV Rack) and the host framework is only concerned with graph editing and mediating access to node property editors.
One might wonder why this design is mostly used in very expensive studio software but rarely used in the realm of mortals (aside from clones of said studio software.) Even Apple threw away Soundtrack Pro which kept a persistent change log of edits to a particular sound over time.