Giving up extensible generality and moving from a linear structure to finite but 'big enough' adjacency matrix always seemed the way to go.
it is not really a problem of the graph representation, but it is about what i call `implicit dependency'. in order to traverse a graph, you can traverse it manually or create a topologically sorted list (which is faster and easier). in any case, this leads to a total order between all unit generators. if you change the layout of the graph, the order between objects, accessing the bus has to stay the same, to keep the access order. otherwise one sample block may be lost, or played twice.
I'm not speaking for Martin on ZenGarden though, I'm not sure what his current ideas are, or even if its still active.
How did topoloical sorting of a list work out in Nova Tim?
sorting the list is not the problem. the problem is to keep the semantics. this is not only a problem when changing the signal graph, but also when trying to parallelize the audio synthesis. the programming model of max-like languages turned out to be contra-productive and i abandoned nova, in order to write supernova, which replaces the supercollider server. since the programming model of supercollider doesn't have the notion of implicit dependencies (it was designed as system for dynamically changing synthesis graphs), the this problem doesn't exist, which also makes it way easier to write a scalable multi-processor aware audio synthesis engine.
well, my master thesis will cover these issues in more detail, will need a few more months to finish it, though
tim