To be clear, this is a mode you would have to explicitly enable. It will NOT be on by default.
The current thinking is to allow people to quickly switch via their profile menu drop down, to an alternate anon account (with an automatic naming scheme like “anonymous 1234”) which we will create for them, if it does not already exist.
Once switched to their anon account, they proceed as that user, and all functions work normally as if you had logged out and logged in as the anonymous version of you.
To end anon mode, use the same profile menu to switch back to your primary, non anonymous account.
There are a few concerns:
email will have to be synthesized for the anon user as emails are unique keys in Discourse. The user can edit the email on the anon account to whatever they like, of course, but it cannot conflict with existing emails, including theirs.
no cross user notifications. If someone replies to your anon account you will not know until you switch into it. (We could provide a nudge and message you that “n notifications are waiting on your anonymous account”)
stats may be a little shifted or off as one person now has, basically, a sock puppet, two accounts attached to the same user.
What I like about this is that it is simple, all the code paths go through the regular places as if you had logged out and logged in as a different user. So we don’t have to special case a bunch of logic all over the place for “anon mode”, it is just another user account. We simply made it much easier to do than manually signing up for another account and manually logging in and out every time you want to be anon.
Any concerns? Anything we did not think of?