When users delete their accounts, what should you do with their stuff?
I see a few approaches:
1. Recursively delete all their stuff
This causes problems. We run competitions, and if someone deletes their account and we delete their entry to a competition, it disappears from the site possibly in between winning and receiving their prize. If they started a discussion in a forum, all replies would disappear too. It seems like the wrong approach and in testing we've seen things break in this case.
2. Assign their stuff to a "Deleted User" account.
We could make a special user called "Deleted User" who inherits all stranded objects in the system. We have things like awards that can be won though and it seems strange to have them awarded to a deleted user. This approach would seem to prevent application errors since stuff always belongs to a user.
3. Soft-delete users
Maybe keep their username but add a "Deleted" indication next to it. We'd preserve an account as it was but just show people that the user has left our system.
What strategies have you used and would you recommend to handle a user deleting their account?