==== Problem
There is an old bug T14974 in MediaWiki that breaks templates, variables, parser functions etc that accept usernames for input which begin with characters that have a special predefined “start-line” formatting. This includes the character `*` which is why it is problematic for IPM since our choice of temp usernames is beginning them with an asterisk. For these characters, the software forces a newline when the character is encountered.
The exact way it breaks is as follows -
Say I have a template like this that inputs a username as a parameter:
`[[User:{{ucfirst:*Unregistered 1}}]]`
However the output will look like -
```
[[User:
* *Unregistered 1]]
```
[Sandbox](https://en.wikipedia.org/wiki/User:NKohli_(WMF)/sandbox) for demo.
Here’s an [on-wiki discussion](https://en.wikipedia.org/wiki/Wikipedia:Village_pump_(technical)/Archive_204#The_new_temporary_user_accounts_and_old_scripts) that includes some examples of the problems here.
==== Possible solutions:
1. We stick to the `*` and expect the bug to be fixed. The problem with this approach is that the bug has existed for so long that a number of templates/functions etc have started relying on the bug and working around it. Fixing the bug will break these. We will need to work with the communities to modify these. Even though this feels like the right approach, it will require a lot of effort and time to help the communities make the changes and also require an unknown amount of work from the parsing team to actually fix the bug.
2. We pick a different character that seems more viable. If we want to do this, we can look through our past analysis on the usage for different characters. I will note that there are others besides `*` that suffer from the same bug `- # : {| ;`. Also, = has been called our as a bad character choice because it acts as an assignment operator inside functions/templates.
==== Prefix options
|**Character**|**Known issues**|**Can it be used as a temp username prefix?**|
|*| T14974 |Not without significant work|
|;| T14974 |Not without significant work|
|#| T14974|Not without significant work|
|:| T14974|Not without significant work|
|{| T14974|Not without significant work|
|=| Acts as an assignment operator within templates & functions| No|
|@|Used in the reply tool on talk pages to mention other users| No|
|~|||
|-|||
|$|||
|2XXX (year as prefix)|||