Why Skein uses locks instead of merging every field

When two people move the same door at the same time, someone’s work disappears. Text editors solve this with operational transforms or CRDTs, because a paragraph can absorb two edits. A transform can’t: there is no meaningful “merge” of two positions.

So Skein makes ownership explicit. Selecting an object requests its lock. The server — a single atomic step in Redis — grants it to exactly one person. Everyone else sees Editing: Chris in their Scene view.

If you edit something you don’t own, your editor undoes the change and tells you who is working on it. Nothing is silently overwritten, and nothing waits on a merge dialog.

Locks are leases: they’re renewed by your editor’s heartbeat and expire about 20 seconds after it goes silent. A crashed laptop can never lock an object forever, and an admin can always force-release one.

The full rules — which changes need locks, what happens offline, how rejected edits are reverted — are in Conflicts & locking.