▲ | cyberax 4 days ago | |
Sure. But then you need to notify users when they come back online that there's a conflict, so they can resolve what to do. You likely need to have a report on the frequency of such occasions for the managers, and so on. These kinds of conflicts simply can not be solved by CRDTs or any other automated process. The application has to be designed around that. > In principle, local-first to me means each instance (and the actions each user carries out on their instance) is sacrosanct. Server's job is to collate it, not decide what the Truth is (by first-in-best-dressed or otherwise). This makes sense only for some applications, though. And we have not yet started talking about permissions, access control, and other nice fun things. | ||
▲ | evelant 3 days ago | parent | next [-] | |
I’ve been experimenting with this, it’s a very interesting problem space! https://github.com/evelant/synchrotron Idea is to sync business logic calls instead of state. Let business logic resolve all conflicts client side. Logical clocks give consistent ordering. RLS gives permissions and access control. No dedicated conflict resolution logic necessary but still guarantees semantic consistency and maximally preserves user intentions. That’s the idea at least, requires more thought and hacking. | ||
▲ | moggers123 3 days ago | parent | prev [-] | |
I doubt you'll ever see this.. Oh well.. I probably should have been explicit in that I'm not arguing in favor of CRDTs, just that the adverse doesn't need to be "send it and accept the collateral". Draw The Rest Of The Owl energy here, but at least its a nice northern star. |