The first in local-first is relevant. These aren’t local-only apps that are unaware of the network (as is typical with native apps), they are applications that can sync data among instances and combine concurrent offline changes by different users.
That’s where the complexity comes in. Desktop apps have the same inherent complexity, they just resolve it by leaving it up to the user to email report_marks_changes_fina_final.docx instead of having the software resolve it.
>That’s where the complexity comes in. Desktop apps have the same inherent complexity, they just resolve it by leaving it up to the user to email report_marks_changes_fina_final.docx instead of having the software resolve it.
Unfortunately, software often cannot resolve it either. I keep coming back to CRDTs admiring their conceptual simplicity, but in the end there's always some semantic constraint that turns out to be very hard to resolve without actual centralised database transactions.
Or take your own example, which is about text documents. CRDTs give you a guarantee that after syncing everyone up, everyone gets the same bytes in the same order. But in order to arrive at a semantically coherent document, you ultimately need coordination on a higher level than that.