But there's no good reason to have a username at all unless users interact with each other or the web-going public, in which case the username is a public part of the URL. Services like twitter or github need @usernames. Other services should just use email addresses.
Sometimes an e-mail address isn't enough because if the site has any type of social aspects to it you wouldn't want your e-mail address being used as your identifier.
I agree though for sites where you're not mingling with other users or have any notion of a public profile then a username at this point is pretty silly.
Your bank doesn't need the concept of a username. A service may need a username if it's going to have social features, public content, or other ways in which users interact with each other. If people just log in and use the service, let them use an email address as their login (which is already unique), and don't make them pick a username at all.
They don't mention it, but there's a privacy benefit to generating usernames. Most users are predictable/lazy and will use the same username on every website. However, tools exist for finding accounts across services that have the same username. Generating a unique username and storing it in your password manager would make it easy to evade these tools.
Depends. I worked on a software for school which will be used by young children to learn spanish. It was a strict requirement to have usernames because these children don't even have an email yet.
Another advantage of usernames is to mask the email address specially if you run public forums etc. Also, this allows changing email address without losing identity on front end as you obviously dont want to display the database table id.
The problem is not displaying a username. The problem is using the username to login. Because users forget that.
If you're stupidly using your email as your username then your email becomes public should the site you're on show, at any point, your username.
Which is why sites correctly done use the email for login but display a username and never your email. Correctly done sites also forbid username from containing '@', so that you can be sure that people don't do anything retardedly stupid like using their email as username, which would be displayed publicly on the site...
My (perhaps inaccurate) feeling is that it is most important for Twitter. In my experience most people (except perhaps those both very familiar with the website and pretty techy) are unlikely to try and go directly to a URL for most services based on a name, e.g. typing in www.facebook.com/ycombinator, or whatever the youtube/tumblr/etc equivilents are. Whereas for twitter, if you think you know the name, or even if you just think you have a good guess, lots of people will type it right into the address bar.
Maybe this is because Twitter, right from launch, had a very clear link between "if this is their username, it's also their display name, and also their URL", whereas other services, while they might have done the same thing (often as a post-launch change), it was sold more as a "this makes links look nicer" rather than as a "go straight to an account easily" feature.
It does indeed seem a bit strange to require a username when an email-address is enough. However, my point was that even though they use usernames, they still allow you to simply login by using their e-mail address. That's a lot better than sites having a 'lost your username?' link IMHO.
Is it really "good practice"? It seems like cargo-cult security to me. Usernames are usually public anyway; refusing to reveal the existence of a user name as part of the login process but revealing it elsewhere in your application is pointless.
I don't think it's widely used. The average site that doesn't want to provide their own username is using Facebook nowadays. Stack Overflow etc. seems to be the only bigger site that uses it, and it's kind of a mess over there.
I'm sorry to hear that you don't want to register. I agree that usernames are frequently unnecessary, and for other sites that I've created I avoid them.
However, I think it's useful for this website because you get a profile page with a URL that uses that username. For instance, here is mine:
reply