As I mentioned in another post, I noticed (because I had Chrome Dev Tools open) that the text of my comments is being uploaded to the remote server as I type rather than only after I click “submit”.
I am not sure of the purpose of this functionality. My guess is that it is not for nefarious privacy-invading purposes but simply to store the draft text so that I can come back to it later on. However, browser local storage would work for this purpose without risking privacy. So, I guess the purpose must be more like “be able to retrieve your draft text in the future no matter what device you use”.
I would prefer for there to be a visible indication that the drafts are being uploaded to the server, as the functionality breaks my conceptual model of a Comment Box with a Submit button.
I have made composition diagrams of the concepts I think are involved. I would be interested in feedback about whether the diagrams make sense and how I might further improve them.
I agree that the draft storage concept is convenient and makes it less likely you will lose work. The issue that I have is that it is also privacy-invading. If I inadvertently copy and paste a password or other private details into the wrong box, this private information would end up on a server. Many shopping sites nowadays have scripts that send all a user’s mouse movements, typing, and scrolling to the server in a way that people can effectively watch in real time how somebody is using their site. I consider this to be a “dark pattern” because I don’t think many people would be happy to know that someone was watching their browsing behaviour without their knowledge. The solution I propose is the concept of a “Saving Now” Indicator (e.g. a little animated icon that appears on the screen when data is saved) that could act as a signal that the content is being stored somewhere (and maybe not locally).
Regarding my previous diagram: I wasn’t happy with the concept of Backend Store, as it seemed to be implementation-oriented, but I didn’t know how to express the idea that the data was being transferred to the backend without it. I would love to see an alternative way to conceptualise the situation.
Regarding your idea about Post evolving to incorporate the functionality of storing draft content, I am wondering whether the concept of Draft Post should be kept separate from Post and then composed. A Draft Post is not published, but when publish is called, it triggers a Post to be created. When is it better to incorporate functionality into a concept and when is it better to try to keep concepts separated? Is a state change like “draft” to “published” functionality that Post should have or is that now giving it multiple purposes?