You are reading content from Scuttlebutt
@andrestaltz %QFPhYzleyOfAPYCP8/9G59HEfpzsDsLDVRtHSmzKzB8=.sha256
Re: %jLwMHzN4U

@Aljoscha You're right about the depths, I didn't realize that.

Let me start with this point:

The single-root design entangles tangle identification and tangle content, and to me that is more complex than keeping these two concepts independent.

I can understand how the decoupling of concepts is one definition of simplicity. But my definition of simple is "reduces corner cases to address in implementations", and that happens sometimes when you couple concepts together. Decoupling leads to more generality, and more "freedom" so to speak, which in turn leads to more corner cases. Coupling removes independence, and that's something I'm aiming for, actually.

Maybe you're looking at this with an academic lens, and I'm looking at this from a software engineering lens, even though we both are proficient in both fields. I'm trying to design this with real world use cases in mind, YAGNI, KISS, and thus generality is a non-goal. In fact unlimited generality is an anti-feature, because it creates a combinatorial explosion when interacting with other features.

That's my preface, because now I can comment on the tangle issues specifically.

If you support multiple roots, then you support disconnected DAGs, and that's a corner case that I want to eliminate. Simply by construction: if I have a (weakly) connected DAG with a single root, then as soon as I create a new root, it will by definition be disconnected to the rest of the DAG, thus the total is a disconnected DAG. From that point onward, it is possible that the new root leads to a new (potential large) branch which remains still disconnected from the rest of the DAG.

To me, that violates the purpose of a single "interlinked replicateable", because with disconnections in the DAG, you don't have interlinking anymore. You essentially have multiple disconnected tangles inside this "legal" tangle. That's a use case that I want to eliminate because it seems contrary to design goals, seems like it allows use cases that are outside of design goals, makes implementation more complex (there are more corner cases to support, test, and predict their interaction with other systems and features).

About coupling identification with content, I have a hunch that if you decouple them, then you inevitably allow the emergence of disconnected DAGs. This is a hunch, so feel free to prove/disprove it. Based on this: if my tangle identifier is unrelated to the tangle nodes, then I can create a new node without backlinks (thus a new root) as long as I just reference the tangle ID. Or how else would you declare a root to belong to a tangle ID? If the root doesn't reference the tangle ID, then the root itself must inherently have an identity that allows other nodes to know that they are related to that root in a tangle relation.

Join Scuttlebutt now