UI: Deletions and Warnings
There was much ado on Twitter today that warnings within an application are, at best, passé. It has come to pass that many developers feel warnings have become so ubiquitous that users no longer read them, regardless of content. I was nearly alone in my conviction that warnings not only have a place, but can be necessary within an application. Apple’s Human Interface Guidelines suggest: “Warn users when they initiate a task that will cause irreversible loss of data.” I’ve taken that thought a littler further. My ardent belief is that a user should always receive a warning dialog if the following three criterion are met:
- Data is lost
- It takes non-neglible time to manually recreate the lost data
- The lost data will affect future runs of the application
All of these criteria deal with data. Nearly all applications exist solely to process and store data. When a user enters data into an application it, and by extension the developer, becomes the guardian of that data. It is up to the developer to ensure that the data is safe, that we keep it from harm. And the same time the user must be allowed to create, destroy and modify their data as they choose. Every operation that a user performs on their data involves a certain amount of risk. Here risk will be defined as a situation invloving exposing the user’s data to danger. Most interactions have very low risk, including creation, modification and viewing of data. Conveniently these are the most common types of interaction with data.
Deletion is the odd man out, for all his low risk brethren, deletion has significant risk. It is the complete loss of data. Some applications will allow deletions to be undone, a very effective catch all for accidents, or for rectifying a misunderstanding between user and application. But the ability to undo a mistake is not a replacement for preventing it to begin with. An ounce of prevention is worth a pound of cure.
Many have suggested that Undo is a magic cure-all for deletion, this is a fallacy. Undo is only good until the program exits. In the case of accidental deletion, where the warning dialog truly shines, the user will not know they need to undo it. Maybe they thought a different window had focus, maybe they fumbled a keyboard shortcut, or maybe their cat had a nap on the delete key, doesn’t matter. Once that application is quit, that undo memory is gone, as is the user’s data. At this point Time Machine or backups (either user or program initiated) are the last hope. If any part of your application’s workflow relies on the fact that there should bebackups, you have failed. This is why my second criteria states that it takes non-neglible time to manually recreate the data. Don’t rely on backups and undo.
It is important to realize that not every deletion require warning, as not every deletion has the same level of risk. I have adopted both approaches in my applications. NameChanger’s toolbar prominently displays Remove and Clear buttons. Remove deletes the selected filenames from the table and Clear removes all entries from the table. Neither of these deletion operations spawn a warning. Isn’t data being lost, why not warn the user? Let’s see how it matches up to my criteria. First there is no true loss of data, a filename is removed from a table, nothing more. Second it would take longer to warn the user then for the user to manually re-enter the data. Thirdly, nothing is persisted between runs, so quitting after removing a filename has no impact on future runs. The data, in this case a filename, is only a short file browse away. The risk is not great enough to warrant an interruption of the user’s workflow.
Now the other case: the next release of Syrinx will contain a List management window. A Twitter list is a user-defined set of Twitter friends. A user can have multiple lists each containing up to 500 members each. When attempting to delete a list Syrinx presents the user with a warning. Why give a warning? Back to the criteria. First actual data is being lost, those lists and members are deleted from Twitter’s servers. Second, it can take a significant amount of time to recreate the list and it’s contents, assuming the user can remember it all. Third, since the data is persisted, the deletion affects future runs of the application.
I challenge developers to apply these criteria to their own applications to determine when and where warning dialogs are appropriate. Don’t jump on a UI bandwagon just because it’s rolling through, determine what is right for your application.
So… where was my warning then, before I quit my Syrinx client that I would lose all the stored tweets regardless of the ’3-day history’ or ‘Never’ setting in the preferences? I took a 3-day Twitter break and relied on what your app told me that it would store everything I missed, and then made the mistake of briefly quitting the app — history gone.
I love your app except for it just loses all of its tweet history whenever it quits, and I can’t do old style retweets conveniently anymore. Just give me a ‘quote’ function in addition to Twitter’s forced redefinition of retweeting. And remove the history preference that promises something it can’t deliver: both of those things should take all of about half an hour to fix.
P.S. I likely wouldn’t have said anything if you hadn’t written this excellent post, but you are not living up to your principles with this tweet history setting, and somebody needed to tell you that.
@DBL Thanks for the feedback. To address your comment: Syrinx is only used to create and view tweets, it never persists them, that would be redundant with Twitter’s own server storage. As such there is no warning because my first criteria is not met: the data is not lost, it is all up on Twitter’s servers.
I agree, there is a new wave of UI snobbery that casts warnings away as crutches of newbies and training wheels of dimwits. If people don’t want to read a warning notice and proceed carefully, they do so at their own peril. We have warning signs on roads to limit speeds and encourage cautious driving. Do we remove those as well? Warn the user or they will be pissed. With a deletion notice, they can only blame themselves. The development of “undo” to cover everything in new ways is not intuitive as implemented currently. Use warnings and at most, let users deactivate warnings in advanced preferences.
Actually data is lost in when you dump the ’3-day history’ — the bookmark is lost, which is arguably the most important data independently stored by a Twitter client. Plus, have you ever tried to dig back 3-days in your Twitter history using he website? It’s basically impossible. Once Syrinx dumps the history, it’s effectively lost. Also, to claim there is a 3-day history stored is just misleading. Regardless of whether data is lost, it should not be misleading what is going to happen — I would hope you would agree.
Great app, though! Syrinx is the only Twitter client worth a damn on the Mac, to date.
Unfortunately, lately I can’t DM full-size DMs from Syrinx anymore. It seems to be subtracting the ‘d [username]‘ from the count, after it is sent, resulting in truncated DMs without warning. (Data loss.) I no longer DM from Syrinx now — I DM from the website but use Syrinx for everything else. Considering that Syrinx already asks me to view people’s profiles on the website instead of in-app, there’s a lot of need to rely on the website for a standalone app!
My comments are meant to help — thanks for all your time and trouble.
Self-correction: The DM length issue seems to have gone away now. For a few days it persisted even when I restarted and wouldn’t go away, but now it seems to have resolved itself; must have been something on Twitter’s end.
The latest update (2.4.2) has some big improvements, much appreciated! (Can’t tell you how good it is to finally not have retweeted links truncated — and Lists too, awesome.) There is one issue though — I can no longer leave Syrinx open for more than a day. It slows to a crawl until it eventually takes about a 2 second delay even to advance the bookmark when I press the soacebar. It becomes unusable and I must relaunch Syrinx, and then of course because of the cache-clearing issue, I then miss a whole bunch of tweets.
I may have to downgrade because nothing is worse than being forced to miss tweets.
Shoot me an email: mrrsoftware at mrrsoftware dot com, let me know what hardware you’re running on and how many tweets per day you usually get. Haven’t had any other reports of slowdowns.