User:IMSoP/trashpad

From Meta, a Wikimedia project coordination wiki

This is just somewhere to dump some comments that I typed up and then realised were a complete waste of time. It seems a shame to lose them forever, so in case I change my mind again, I'm shoving them in here:


On a technical note, combining this with my parallel-DB concept (wherever it's been moved to now) you'd need a third (or perhaps 2½th) account type to represent global login with multiple usernames; i.e.:
  1. True global account: this is what would be created for a new user, and would simply store one central record accessible from all wikis. Hopefully, most 'legacy' accounts would be either automatically or manually merged to form these as well.
  2. Unmigated 'legacy' account: exists only in a single wiki; the global user database just has a dummy record saying "no user name here, go look at the local database".
  3. Global account with linked legacy accounts: this would either:
    • have 'exceptions' stored in the central DB, so that requests from, say, en_wikipedia, would refer to a specific legacy account, those from fr_wikipedia another, and all others to the centrally located information. (I'm thinking of queries like "who's logged in" here, which would presumably be global_user_id → local_username)
    • or, we could look in the individual (per-wiki) user tables first, and override the central DB if the name exists locally. If we delete the information for fully-merged local users as they are migrated, this would be conceptually simpler (it would deal with types 2 and 3 in one go). The disadvantage is that for fully global (type 1) users, and linked global information, it would require an extra DB lookup, which is a bit wasteful
I don't know if I'm thinking about this a bit too much, given how I have, like, no database experience, but, well, there you go... - IMSoP 18:37, 24 Oct 2004 (UTC)

There are complications, though - given:
[wp_en::Foo → global::Foo] & [wp_de::Bar → global::Foo]
& [wp_jp::Bar → global::Bar] & [wp_fr::Foo → global::Bar]
a lookup for "who has username Foo" is not trivial.