GSoC idea: Sync Accountability

The key problem that I see is that the lack of transparency described can be a pain point when it leads to a desync or a lack of a single-source-of-truth in a multi device environment. My goal is to enable an auditable sync model that is less "blind". I have three main points:

  • Having a more context-aware sync model, specifically manifest/sync log system, gives users more context to fix unexpected sync conflicts. Part of the issue I encountered was similar to this, and while the solution I proposed doesn't address the root cause of sync conflicts, I believe this sync model can be extended to solve it because the key idea here is to make each sync operation logged and traceable, attaching a lot of context and information to each synchronization. This 'context' can be used by any Joplin device in the environment. At the moment, I think needing to remember the changes we made can be a pain point for some users.
  • Lack of visibility into the devices linked to my sync target can cause a lot of confusion, even if there's no sync conflict at all. I encountered these two threads - one, two, three where syncs do unexpected things (from the user POV). I'm sure they have their own root causes, and this new sync model won't magically fix them if it is the users' fault. But we are empowering them with the telemetry so theyn can see the origins of the changes, e.g. where and when, to gives them clues for what happened and why.
  • Perhaps I poorly worded the solution and made it seem like a "Device List" was the primary outcome. I think the Device List is a side effect of the newer sync model I proposed, which in addition to the device list would allow us to: 1) to display the users more information when there's a conflict, 2) show more context on every synchronization operation (e.g. not only fetching changes from remote, but fetching changes from where? from my work laptop, personal laptop, or from my phone?)