@Hassan, your explanation to @pha3z is great -- but I'm afraid your correction needs a correction. ;-)
There are 5 fields under the heading 'Name' in the user's profile settings page (wp-admin/profile.php) :
- Username (cannot be changed)
- First Name
- Last Name
- Nickname (required)
- Display name publicly as (dropdown menu of all of the above)
Usernames are chosen at registration and cannot be changed except directly in the database. They're used for logging in, so should never be revealed publicly, for security reasons.
The Nickname, being required, is by default set to the Username, since registration only provides two fields: username and email. The registered user CAN indeed change the Nickname by logging in and going to the Users > Your Profile page (wp-admin/profile.php). -- Or the admin can do it for them by going to the Users page (wp-admin/users.php) and clicking the Edit link under the user's name in the list of users.
That's also where you can set the Display name. It, too, is filled in by default with the Username, but should be changed.
It would be best if WordPress core code created the author URL with the Display name if available, or the Nickname as a second choice, and only fell back on the Username if nothing else was set. But unfortunately, that's not what's happening as of the current version (3.5.1). It uses the Username for the URL, even though you'd think having the Nickname be a required field would mean that that's what it would use. Well, it doesn't. That's why this plugin is useful.
What the plugin uses is the Display name. Which is perfect, because the Display name can be set to any of the other names, including the real name if you wish, or the Nickname if you prefer, which is useful if you don't want to use the Username for security reasons AND you don't want to use your real name for privacy reasons.
I'm not sure whether the "nicename" is supposed to be the Nickname or the Display name, but either way, the author URL isn't using either without this plugin (or something similar).