OK, here's the plan:
1. We disallow the creation of new users (for the following, which won't
take long)
2. We add a "user_single_id" field in the user table of each wikipedia,
initially 0
3. We generate a list from all wikipedias, containing user name and user
password hash
4. We merge every two entries on our list (#3) that have both the same
name *and* the same password hash (same name and password = same user)
5. We create a new, separate user database
6. We fill it with all unique user names from our list, and fill the
"user_single_id" for every user with that name in all wikipedias the
"user_id" from the new database
7. We generate a new user in our new database for each remaining
'double' from out list; its password hash is blanked
8. We allow creating user names again (see, didn't take *that* long:-)
with the following mechanism:
* New users can *only* be created if that user name isn't already taken
in the new database, where it will then be added
* The 'local' wikipedia database gets a new user account as well, with
the "user_id" set to the "user_single_id" from the new database
A user trying to log in evokes the following rules:
* If there is no user in the local database with that name, password is
checked against the new database; if it matches, a local account is created
* If the "user_single_id" is *non-zero*, password is checked against the
new database
* If the "user_single_id" is *zero*, password is checked against the
local database
For any user with a conflicting user name, that means (s)he can still
log on to the usual wikis, but can't create new accounts on other
wikipedias under that name.
REASOING:
* Easy to set up (new db and a script)
* Minor changes to the MediaWiki scripts (login and preferences only)
* Minor changes to the database (adding a single field)
* Everyone can keep working under his/her username
* Most users can instantly enjoy the new, unified login
* Conflicting user names can be easily listed and resolved in time
* New functions (My contributions/Watchlist/Recent changes in all
wikipedias) can be introduced over time
Comments? Volunteers? ;-)
Magnus