so the length of the username was designed to be able to fit a username in the player card. the allowed length is 5-15
At some point I think we also agreed that it might be possible to tweak the player card design so that longer names are possible.
Some cursory research, combined with personal experience and anecdotal knowledge, leads me to believe that the best outcome would be to give everyone a 30-character short/abbreviated name ("display name"), and a 255-character long (and unique) name ("account name"). The account name would be "optional" during registration, and if someone leaves it blank, the system would just default to copying their 30-character name into that field.
Here's one way the Player Card could be tweaked to make 30-character names possible:
Before:
After:
A brief list of tweaks in the above:
Made the experience bar a bit smaller and moved it down slightly.
"Level" was abbreviated to "Lvl" and also moved to a lower position, to the left of the experience bar. (I played with putting it on the right, though that gives the impression that it's the next level, and I suspect it's not, it's the current level.) I tried using a 2-digit level just to show that it's not occupying a lot of space.
The name could be 30-characters long with slightly smaller font. I would still render it in the larger font whenever it fits.
I didn't do it in the above example (IIRC), but we should probably ALWAYS render this with a monospace font, and document what font is used, so that the name size is actually predictable based on character count. Otherwise someone named "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW" is going to make our system look unprepared ;)
As the community grows, I wouldn't be surprised if a bunch of 30-character names become non-unique (though, like, during registration, do inform people of how many other people are already using the name they're about to pick, so they can choose something else if they don't want to be too common or easily confused). There just aren't a lot of possibilities in that space, at least not without reaching into the vast number of very cryptic strings of text. So we just let that be a non-unique field. It'd still be useful in places where space is limited, like on player cards.
This is kind of like our names for our governmentsonas: first names are what we tend to call each other casually, but we understand they are very much NOT unique, they are just unlikely to get confused if there are only 2-8 of us in a conversation. But then we have "full names": the first name + middle name + last name combo, to use US tradition as an example. These are much more likely to be unique (I'm not sure if they're required to be unique by law or anything, but w/e).
It'd be open to debate, but I'd suggest that initially, we'd just make it a rule that the short name should be an abbreviation or truncation of the longer name, enforceable by moderator action. This would just be to disallow deception and avoid confusion. (It'd be too hard to validate that programmatically, but that wouldn't be a new thing. People can sneak vulgar (e.g. hate speech) text into name fields, so some policing of names is necessary regardless.)
As for characters allowed, I would strive to make our code competent enough to handle these allowances:
For all names:
Only non-printable character allowed is the space character. (No tabs, new lines, vertical tabs, nulls, delete, bell, control codes, non-breaking space, etc etc.)
These printable characters are never allowed: /, @ and #.
/ is forbidden because it is very often used as a path separator in multiple places.
@ is forbidden because platforms often use it as a token to initiate account names, so we'll probably do the same.
# is forbidden because platforms often use it as a token to initiate hashtags. We might do the same if we ever use hashtags for something.
For short (display) names:
For printable characters, all are allowed except for the above exclusions.
Full-width characters count as 2 characters for name sizing (ex: asian scripts, Japanese Kanji+Kana, etc). This is simply to represent the amount of space required to render them, ex: on the player cards.
For long (account) names:
For printable characters: ASCII only, and with the above exclusions. (This tends to make it much easier to type such names, and slightly relaxes the requirements that computer systems have to meet to process these names, ex: UTF-8 awareness not required.)
We probably aren't there yet. We'd need to make REALLY sure that there are no situations where injection attacks are possible. So initially, I'd forbid various syntax characters, but relax that restriction as we become confident.
If we wanted to be really clever, we might be able to fit someone's long+unique account name on the player card in the form of a QR code, or some sort of compact 2D barcode.
From conversation with @AlibabaTheGreat :
At some point I think we also agreed that it might be possible to tweak the player card design so that longer names are possible.
Some cursory research, combined with personal experience and anecdotal knowledge, leads me to believe that the best outcome would be to give everyone a 30-character short/abbreviated name ("display name"), and a 255-character long (and unique) name ("account name"). The account name would be "optional" during registration, and if someone leaves it blank, the system would just default to copying their 30-character name into that field.
I chose 30-character as the display-name length limit simply because it's the default length limit for Mastodon/(The Fediverse): https://www.reddit.com/r/Mastodon/comments/zwjls4/where_to_increase_the_display_name_limit/
It also seems pretty doable on the Player Card.
Here's one way the Player Card could be tweaked to make 30-character names possible:
Before:
After:
A brief list of tweaks in the above:
As the community grows, I wouldn't be surprised if a bunch of 30-character names become non-unique (though, like, during registration, do inform people of how many other people are already using the name they're about to pick, so they can choose something else if they don't want to be too common or easily confused). There just aren't a lot of possibilities in that space, at least not without reaching into the vast number of very cryptic strings of text. So we just let that be a non-unique field. It'd still be useful in places where space is limited, like on player cards.
This is kind of like our names for our governmentsonas: first names are what we tend to call each other casually, but we understand they are very much NOT unique, they are just unlikely to get confused if there are only 2-8 of us in a conversation. But then we have "full names": the first name + middle name + last name combo, to use US tradition as an example. These are much more likely to be unique (I'm not sure if they're required to be unique by law or anything, but w/e).
It'd be open to debate, but I'd suggest that initially, we'd just make it a rule that the short name should be an abbreviation or truncation of the longer name, enforceable by moderator action. This would just be to disallow deception and avoid confusion. (It'd be too hard to validate that programmatically, but that wouldn't be a new thing. People can sneak vulgar (e.g. hate speech) text into name fields, so some policing of names is necessary regardless.)
As for characters allowed, I would strive to make our code competent enough to handle these allowances: For all names:
/
,@
and#
./
is forbidden because it is very often used as a path separator in multiple places.@
is forbidden because platforms often use it as a token to initiate account names, so we'll probably do the same.#
is forbidden because platforms often use it as a token to initiate hashtags. We might do the same if we ever use hashtags for something.For short (display) names:
For long (account) names:
We probably aren't there yet. We'd need to make REALLY sure that there are no situations where injection attacks are possible. So initially, I'd forbid various syntax characters, but relax that restriction as we become confident.
If we wanted to be really clever, we might be able to fit someone's long+unique account name on the player card in the form of a QR code, or some sort of compact 2D barcode.