🌱Ian's Digital Garden

⚛️
Liberties in the Large, Constraints in the Small (DRAFT)


Or: Small Trees, Large Graphs

What it is

A design pattern used in large systems where less constrained global structure is layered over more constrained local structure.

Examples

The best example is the World Wide Web. It's a gigantic digraph of links, but individual webpages are much more constrained HTML trees.

It doesn't have to be this way. There could be a hierarchical portal that classifies all sites Yahoo-style, and the sites themselves could be made of little collections of freefloating cards. But that feels inside-out.

Another example is Unix filesystems. These are big leaf-valued trees with arrays of bytes for nodes. We've tightened the level of constraint a tick, but the same pattern is here.

Natural Law

There's an analogy to this in nature. Trillions of cells doing all kinds of highly specified things come together to make John Smith, who's a lot less constrained in his actions than a cell is.

But this is a design pattern not a law and so doesn't have to be followed. A flipped example (though this isn't a large system) is a computer game save manager. It's probably a list, which is a lot more constrained than the game instances it holds. But this is the right choice because a list removes energy from that level and directs it downwards. A game isn't supposed to be about the save manager, it's supposed to be about the items in it.

A Trick of Questionable Usefulness

One thing that can be done with this idea is to imagine new systems. Sort the organization strategies you're interested in by how constrained they are, then iterate through them looking for interesting combinations. 3D space containing 2D spaces? This makes me think of a space flight game with plantetary land battles. But it could be used for more that that.

And there are all kinds of other options:

  • graph
  • digraph
  • flat tag system
  • hierarchical categories
  • straight hierarchy
  • 3D space
  • 2D space
  • array
  • map/attributes
  • set
  • etc.

Maybe there's a pair in there that will be useful for one of your projects someday.

Feedback

This must have been discussed a fair amount already, but Google isn't helping. If you have leads 📝contact me.

P.S.

The title is inspired by 🎞️Constraints Liberate, Liberties Constrain which is an unrelated but wonderful video.

Backlinks