[US-18] As a user, I want to choose between live (real-time, autosaving) and transactional (explicit save) editing modes where the individual app supports it, so I can control when my changes become visible to collaborators. #8
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ELFA/rfd#8
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@yousef For me, this is not a not a must-have.
I'm concerned it comes with significant engineering and UX challenges. The main one being; what happens to local unsaved changes when the user accidentally closes the browser / computer?
@jeremiah Personally, I want things to always be saved. Hovering over command+S is a relic.
If I want a checkpoint in the edit history, I save a specific revision. In Google Docs, File → Version history → Name current version does this.
[US-18]to [US-18] As a user, I want to choose between live (real-time, autosaving) and transactional (explicit save) editing modes where the individual app supports it, so I can control when my changes become visible to collaborators.in the NG prototype, we already implemented this mechanism. A document can be opened in "live editing" (real-time) or not.
There is no overhead in engineering as it is done at the CRDT level. All CRDTs are compatible with that. What we do is that we store the updates locally. They are persisted locally so a refresh wouldn't lose them. But they are just not sent yet to the other replicas. They accumulate locally, and when the user wnats to "Send" or "save", they just press the save button (cmd+s). In terms of UX, it is understandable what save will do. We can even add a "cancel" button.
I agree that it is a "relic". But in local-first settings, the topic is coming back. Google docs and other collaborative tools brought the "always sync, always collaborate" concept, and there is no need to press save. We do support that, obviously, and it could be the default mode (it isn't for now in the NG prototype).
The rational behind bringing back this "save feature", is a bit distinct from the "save a revision" one that Jeremiah mentions. The save a revision feature can only mark in time, something that was collaboratively edited. But it does not allow me to "prepare some changes locally and only share them with others when I am ready". Sometimes you don't want each character to be seen by the others, as they are typed in. Sometimes you want to be free to draft a sentence, change it, and only send it once you are happy with it. If the document is collaborative and there is no way to temporarly deactivate the collaborate, then you can't do that, and you have to open a notepad on the side to draft your sentence and then past it into the shared doc.
Finally, this feature is technically important, for 3 reasons :
I think we need to keep in mind that the fact that we can do something, doesn't mean we necessarily should, especially not in a first version.
It's good to make sure we can architecturally support these kind of scenarios, but I wouldn't underestimate the work to surface it to end-users. For example, the upwelling paper shows there's tons of ways to do this, and how different patterns might cater to different users. Saving real time (when possible) imo is a sensible default, and we could always add features like these for advanced authoring later.