When moderators delete posts, they cannot be undeleted by non-moderators. The "undelete" link still appears for 10K+ users, though, but it produces an error tooltip when used. That fact doesn't seem to be mentioned in either the 10K privilege page or the 20K privilege page. The latter says something about answers torched by mods, but doesn't mention questions.

Please remove or clearly disable the "undelete" link for questions that we cannot actually vote to undelete. Alternatively, a note in the privilege pages would be good. It's bizarre that clicking the "undelete" link appears to work - it asks whether you really want to cast that vote - but only fails after you confirm.

voting to undelete?


Relevant: Allow community votes to undelete Q/A that a moderator has deleted.


Have you noticed that the "award bounty" UI is present even on deleted answers? That the "accept answer" checkmark is present even if the answer is too new for you to be allowed to accept it? That vote buttons are available even to people who don't have the upvote and downvote privileges? None of those controls are grayed out or disabled, either. At least it's consistent.

The reason for all of this, I was told when I asked about the bounty case, is that checking for the necessary preconditions for every UI element would noticeably affect page-load time. Rather than do all that checking for every UI element at load time, the engine instead does the check when you try to use one of those controls and then displays just-in-time documentation in the form of the big red pop-up of "no you can't do that; here's why". Yes, until you click you might be misled, but most people only need to see the pop-up once or twice and then they learn.

But wait, you might say -- I only see the "delete" (or "close") link at all when I have the privilege. If we can do that, why not have the undelete link be more dynamic? Two reasons: first, checking whether this user can vote to undelete (at all) is a one-time reputation check (not something to be checked for each deleted post), and second, checking whether this post can be undeleted is a more-expensive DB check because you need to join the post to the deletion event to the deleting users (three different tables) and then check for diamonds there. For something that comes up rarely, for a link that most of the time won't be clicked to begin with, that sure is a lot of pre-display computation.

I don't know what that pop-up says right now (when you vote to undelete something deleted by a mod). If it's not perfectly clear, let's improve it. I'm neutral on the question of adding this special case to the documentation; there are lots of special cases that aren't documented, and the documentation is short enough to read. But I don't think it's worth trying to change how/whether the link is displayed in the first place.

Update after question update: I hadn't realized that undeletion is a two-step process. Doing the eligibility check at the first step (when you get the "are you sure?" dialogue) would improve the usability and doesn't seem like it should be expensive. Yes, you can't do it entirely client-side, but you're pretty close to needing to ask the server anyway, so it doesn't seem harmful.

  • Very good points. It is worth noting that the downloaded and displayed page already knows whether the deleting user is a non-Community moderator - you can visually see the username and the diamond - so the server wouldn't need to check anything extra. Sorry to turn this into a chameleon feature request, but maybe what I should be asking for is the "really vote to undelete this post?" dialog to be removed when the vote can't actually be cast. I'll add screenshots to the question. – Ben N Aug 16 '16 at 15:13
  • @BenN I didn't mean the user being served the page; I meant that in order to answer the question "can this user delete this specific post?", the site also needs to check the deleting users. That's the stuff that's two joins away in another table. – Monica Cellio Aug 16 '16 at 15:16
  • Right, but the server already checks that when you attempt to cast an undelete vote. The client has enough information to determine whether the undelete vote can be cast or not - the deleter's username and diamond is on the page. – Ben N Aug 16 '16 at 15:18
  • @BenN it does the check when you actually attempt the deletion. To implement what you're asking for in the question it would need to do the check every time a deleted post is viewed, when only in a small number of those cases will somebody go on to vote to undelete. Moving the check to that first dialogue (do you really want to delete?) instead of waiting for the submission would be an inexpensive improvement, though. – Monica Cellio Aug 16 '16 at 15:19
  • Just as a small note, a counterexample would be locked posts. They do not show the aforementioned UIs. – Justine Krejcha Aug 18 '16 at 21:43

Removing the link will only leave 10K users asking "where did that link go?"… and documenting the dozens(?) of exceptional circumstances for every feature will make the system that much more complicated for everyone else to use.

I can appreciate the desire to "document everything", but I much prefer a style of just-in-time learning where you keep the system relatively consistent and easy to use… while only subjecting folks to these nuances on the rare occasion it comes up in actual practice.

I much prefer that to a mystery menu where you have to read through hundreds of posts just to find out how that darned thing is supposed to work. And when you pile every little bit of nuance into the system documentation, folks are even less likely to read it at all.

  • 1
    That makes sense. Still, graying out the link (and adding an on-mouse-over tooltip) seems like a good idea because currently, it looks like the vote is about to be cast - it even asks whether you want to vote to undelete - but then the error occurs. – Ben N Aug 15 '16 at 22:59
  • 6
    Would it really prevent people from reading the documentation if you changed "Voting to undelete answers except those deleted by a moderator" to "Voting to undelete questions and answers except those deleted by a moderator"? Is two words for the purpose of clarification going to stop people from reading the docs? The way it's written now, it's actively confusing, because the omission of the inability to vote undelete mod-deleted questions may lead someone to believe they should be able to vote undelete them. The alternative is to force people to read through MSE to figure it out! – allquixotic Aug 15 '16 at 22:59
  • @allquicatic But multiply that by potentially dozens of footnotes and annotations for just about every feature on the site. Don't believe me? Hover over "sort by votes" (seems simple enough) and then look up all exceptions (and exceptions to the exceptions) where that is not true on this site. – Robert Cartaino Aug 15 '16 at 23:04
  • 1
    So how does the team decide what features or nuances are worth documenting, and which ones aren't? It seems to me that the features that are documented, e.g. in the privileges pages, are just arbitrarily picked. Is there a deliberate decision to curate those pages with, say, the most commonly needed information, while leaving out extreme edge cases; or is it just what the developers felt were "cool" features they wanted to show off to people because it was really hard to implement? ;-) – allquixotic Aug 15 '16 at 23:09
  • 1
    Also, I have the feeling that a significant minority of active SE contributors are of the particular personality type to value attention to detail; this type of person would be very likely to actually read a very long, comprehensive documentation page describing, e.g., privileges and site functionality. Having somewhere on the site that curates this information in an authoritative way that isn't a scattered set of MSE questions would sure help these people learn without having to burden others with questions. If the privilege pages aren't the place, then perhaps somewhere else? – allquixotic Aug 15 '16 at 23:14
  • @allquicatic I'm not sure how "cool" it is to show off the half-dozen exceptions to every behavior on this site, so I'm not sure what you are asking. You write documentation for readability and relevance. Beyond that, I'm not sure how you quantify or formalize that technical writing process. – Robert Cartaino Aug 15 '16 at 23:14
  • 6
    @RobertCartaino Incorrect documentation is worse than no documentation at all. As pointed out above it only requires the addition of 2 words. We can a least try to make sure the help pages are correct - there aren't that many of them. – DavidPostill Aug 15 '16 at 23:23
  • 5
    "deleted posts can be undeleted by casting undelete votes, unless deleted by a moderator". Is this really "making the system that much more complicated for everyone else to use"? I don't think so. It's just adding three words, for the sake of those who prefer to know things without going through hundreds of meta posts. – Shadow Wizard is Vaccinating Aug 16 '16 at 5:58

Yep. As it stands, there is certainly a discrepancy between the documentation on the privileges page and the actual behavior (or perhaps one might call it an "omission" rather than a discrepancy). The solution here is pretty straight-forward: update the privileges page to document the actual behavior when a user with the privilege attempts to vote-undelete a question which was deleted by a community moderator.

There's also the behavior itself of the undelete link which you've called into question. There are several paths to take RE: this behavior:

  • Do nothing: leave it as-is, where attempting to undelete gets you an error message. Not, IMO, the most helpful, as the message can be a little confusing.
  • Remove the undelete link entirely if the user can't undelete, or gray it out: This would be more helpful, in my opinion. If you remove the undelete link completely, it shows the user in no uncertain terms that that action is not available. If you gray it out, provide hover-over text explaining (perhaps more completely than the current text) why it's grayed out.
  • Actually allow users to undelete posts deleted by a mod.
  • Introduce a new feature allowing mods to choose whether to "soft-delete" or "hard-delete" a question or answer. A soft deletion leaves open the possibility of appropriately-privileged users to vote undelete the content. A hard deletion is to be reserved for cases where, in the moderator's judgment, there is no possible justification for ever undeleting the content (for example, spam content with no value whatsoever, offensive material, personal blogs, etc.) -- Once you introduce this new feature, you would be able to allow users to vote to undelete only those posts that have been soft-deleted, or flag posts that have been hard-deleted.

The advantage of adding the new feature as described in the last option is that it would actually reduce the workload on moderators when they soft-delete a question that's, say, off-topic, too localized, too broad, etc. which the community wants to try to sustain for some reason (great answers, editable into a good question, etc.) -- the moderator can literally ignore the vote-undelete process and just let the vote play itself out, either by not garnering enough votes, or getting the votes and being undeleted. If it gets undeleted, then the community has effectively told the moderator to leave it on the site.

This approach also leaves the door open for moderators to protect the site against harmful content, by giving them the hard delete option. They just have to exercise their judgment in determining when to hard delete. The guidance given to moderators should be that they should never hard delete something that could be edited into a decent question (if there's even a little kernel of somewhat topical, somewhat interesting information in the Q, and it's not offensive / spammy in nature, you'd just soft-delete).

  • 2
    The "hard deletion" could be implemented in terms of locking, which - if I understand correctly - prevents normal users from doing anything at all. – Ben N Aug 15 '16 at 22:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .