Technically yes, but of course it is never that simple.
There are a lot of good reasons people edit things, from removing personal information (a phone number or email left in an advert) to removing an insult said in a moment of heat that they now regret. But perhaps the best reason not to is that people may have indulged in defamation, corrected themselves, but if the historical version were still visible and uneditable then they could continue to be held to account for that.
The only way to protect users from themselves is to visibly treat delete as delete.
Yet, the only way to protect users from other users is to not actually delete in the majority of circumstances, just to hide.
What this ultimately means is that the database table called comments doesn't hold the comments themselves just the idea that someone posted a comment at some point in time on some item (conversation, event, etc), and a table called revisions actually contains the comment body itself.
That revisions table is an append only table, so every edit, every revision of a comment... is stored as a brand new row. And then the latest one is marked as the current one. Whichever one is marked as current is the one shown on the UI. But all of the rest remain along with the IP addresses and user agents used, etc, and if there are disputes about classifieds, or the police get in touch about stolen bike parts being offered, etc... then we have this forensic history of all that was said, by whom, from where, etc.
But showing that to the world? It's a different can of worms. I tried to balance it by simply storing it and not showing it.
Technically yes, but of course it is never that simple.
There are a lot of good reasons people edit things, from removing personal information (a phone number or email left in an advert) to removing an insult said in a moment of heat that they now regret. But perhaps the best reason not to is that people may have indulged in defamation, corrected themselves, but if the historical version were still visible and uneditable then they could continue to be held to account for that.
The only way to protect users from themselves is to visibly treat delete as delete.
Yet, the only way to protect users from other users is to not actually delete in the majority of circumstances, just to hide.
What this ultimately means is that the database table called
comments
doesn't hold the comments themselves just the idea that someone posted a comment at some point in time on some item (conversation, event, etc), and a table calledrevisions
actually contains the comment body itself.That
revisions
table is an append only table, so every edit, every revision of a comment... is stored as a brand new row. And then the latest one is marked as the current one. Whichever one is marked as current is the one shown on the UI. But all of the rest remain along with the IP addresses and user agents used, etc, and if there are disputes about classifieds, or the police get in touch about stolen bike parts being offered, etc... then we have this forensic history of all that was said, by whom, from where, etc.But showing that to the world? It's a different can of worms. I tried to balance it by simply storing it and not showing it.