@David Alan Hjelle Yeah, I think a big part of it is that there are so many pieces that need to come together. For example, transparent persistence at the model level, efficient mutation tracking for model objects and primitives, abstractions around slots to manage all the data related to storage and synchronization, an object/graph database with on disk garbage collection, storage transactions to ensure consistency, coalesced Notifications and scheduled actions, wrappers around all events so synchronization can be managed before returning to the event loop (and which deals with quirks of the event system like Javascript having some events within others), a standard UI framework that supports the protocol, etc. These things can't just be mixed and matched. e.g. using some UI framework components that don't have the proper wrapping of events and model protocols could break synchronization.