What the title says. It's a pretty terrible interface, and needs to be redesigned. Here are some of the issues with it:
- Is just an object, so there's no way for other code to make user objects for other users,
- Has a bunch of functions (see user.bucket(), user.sessionId()) that don't belong there,
- Doesn't give you an IP address for anonymous users when calling getName(), making it tough to get an identifier for that user (E:Annotator just ran into this problem),
- Doesn't have username validation functions, which would be useful for client-side validation.
In the end, it's only useful purpose is the ability to retrieve the current user's name and ID, and even then the getId and getName functions are just wrappers for mw.config, so it's pretty trivial to get the info manually.