I thank everyone for taking their time to read my story and provide insight into what happened. As a software engineer, I understand the contributing factors. However, when I put my usability hat on, I am reminded of the joke about the suit [1].
I believe several things could be discussed to potentially improve the user experience of Syncthing.
- A nice interface is forgiving, i.e. it allows one to recover from an error. Syncthing’s default is unforgiving. The folder creation wizard does bring it up, however the option is called
File versioning
- there is no immediate link between this option and possible loss of data, no link with the “trash can” metaphor that users are accustomed to. I only connected the dots now, after taking some damage, I wish I did it earlier.
- On Android and in the Web-UI
File versioning
doesn’t have a one-line explanation of what this option is for. For example, Folder type
is Send and receive
by default and there is a label under it that says “The folder will both send changes to and receive changes from remote devices”. There is no analog string about the file versioning option, it could say something like “Define what happens when a file is deleted locally or on a remote device”. Instead of “None”, the current default, it could say “No versioning, delete immediately”. This might attract attention and prompt people to RTFM. The status quo is that only users who click around to tinker with the software will stumble upon it; some do this, but not everybody.
- In the Web-UI it is possible to create a folder without ever going through the
File version
tab. As soon as I type the name, I can press Save
and get going. This is potentially dangerous, because this important use case is overlooked. The status quo attitude is “users are expected to know what they’re doing”, we can assist them in this, by nudging them into the right direction (e.g., change the default, ensure they go through the other tabs, etc).
- A good approach is to place the burden of deciding on the shoulders of those who are best equipped to handle the decision. The status quo is that the consequences of the defaults fall onto the shoulders of inexperienced users (because the experienced one enable versioning).
If the default were different, the burden would be on the shoulders of the experienced users (an extra click for them to turn it off), while the clueless newbies would enjoy the extra protection without even being aware of it.
- The remark about version compatibility/stability issues is somewhat worrying. I only became aware of it on this forum; Syncthing was operating in a “set it and forget it” mode on my systems, I was satisfied with the result and wasn’t following the news. Perhaps when such backwards compatibility situations occur, the newer version could warn the user through the UI about it? My Syncthing client on the Android didn’t say anything about it, although it is always visible in the notification area and there is always a “Syncthing is running” entry in the pull down menu. In other words, the software is displayed in a prominent place and it is getting its share of attention - perhaps this place can also be used to inform users about important actions such as this one?
A final note is about the handling of cases like the one I described. I understand the mechanics of why it happened, and although I miss my data, I don’t feel any anger (-:
In the field of human-computer interaction, several types of errors are distinguished:
-
mistake - when the user had the wrong plan, they carried it out correctly, and they got a bad outcome;
-
slip - when the user had the right plan, but they carried it out incorrectly (i.e. accidentally pressed the adjacent button, mistyped, etc.).
What happened to me was not a mistake, because I think I have a fairly accurate mental model of how Syncthing works. It must have been a slip, perhaps when I was selecting a bunch of directories to delete, my finger moved a bit too far on the touchpad, taking my Syncthing directory with it.
The software can’t figure out what it is that the user really wanted, and there’s no way for it to anticipate that the “file deleted” notifications it receives should be ignored, because they are actually a part of a recursive delete that will take down everything, including the .stfolder
marker [2]. However, the software can be more forgiving.
[1] The suit joke, taken from the Internet and adapted to the UI context:
A man goes to a tailor to try on a new custom-made suit.
The first thing he notices is that the arms are too long.
"No problem" says the tailor. "Just bend them at the
elbow and hold them out in front of you. See, now it's fine."
"But the collar is up around my ears!"
"It's nothing. Just hunch your back up a little... No,
a little more... That's it."
"But I'm stepping on my cuffs!" the man cries in desperation.
"Bend your knees a little to take up the slack. There you go.
Look in the mirror--the suit fits perfectly."
So, twisted like a pretzel, the man lurches out onto the street.
A passer-by asks him "hey, is that a new suit?", "yes it is",
our guy replies.
"Wow, it must have been made by the most skilled tailor in the
world!".
"How so?", our guy asks.
"Well, if he could make a suit for a cripple like you, I can
only imagine what he can do for me!"
[2] If it is possible, maybe it should be done that way.