Let's say there's a web app where you can edit documents, similar to Google Docs but more lightweight. A document can be shared and multiple people can edit it. Every change is immediately synced to the server.
Right now, documents can only be edited online and people can't edit the same document concurrently.
Now you want to implement an offline mode so that people can work on documents while traveling or on mobile without internet.
What are some simple user experience patterns to avoid common sync issues? I can think of the following:
- A Git-like merge process
- If a user is offline and wants to edit a document "my-document", an offline copy is created "my-document-copy". When the user comes back online, it is merged automatically if there are no conflicts and "my-document-copy" is deleted. If there are conflicts, both "my-document" and "my-document-copy" are kept. In the end, conflict-free merges are avoided but it seems like this would also inevitably lead to a manual merge process.
Are there any other user-interaction modes to avoid complicated merges? I wonder if there are any other user-interaction modes to avoid complicated merges during offline/sync for a casual user base.
I would like to avoid the user having to think his way through a Git-like merging process. Even though this would probably be the most robust option, it does not appeal to casual users.
The copy process still requires a manual merge, but at least the user has the option to just keep a separate copy of his document without merging it into the original.