Reserved-usernames: Usernames to prevent url collision with resource paths
github.com
github.com
Seems silly. You should either put users at example.com/user/{username} or you should put all non-user profiles under a reserved base like example.com/res/settings.
That said, it might still be a good idea to blacklist these anyway, as you might end up with someone registering the username 'reset-password' (which isn't on this list yet) trying to phish your users, or 'support' trying to masquerade as your support, depending on what your app does.
consider:
website.org/aloha
website.org/contact
website.org/u/aloha
website.org/users/aloha
users.website.org/aloha
u.website.org/aloha
aloha.website.org
with the first two examples, yes, there is a potential for collision - so you'd want something like this.
I consider the next four examples to be best - the final example I consider potentially administratively painful depending on implementation.
Mastodon's interesting approach: website.org/@aloha
I still use ~ on a couple web servers I administer, easy way for me to give people a sandbox attached to their user.
That can help stop some particularly egregious social engineering attacks.
As other people have mentioned, namespaces for user URLs solves this better.
reddit.com/r/subreddit
reddit.com/user/my_user_name (Why not u? I don't know.)
Pretty straight forward. There are also ones like subreddit statistics and they're all... after the name. reddit.com/r/subreddit/about/traffic
(Note: Public viewable stats are only turned on if the mods turn it on.)[edit] Wait. Reddit removed user access site-wide to those pages? Morons. Well, the URL point still stands.
reddit.com/u/foo
does work, but it just redirects to reddit.com/user/foo