SUL finalisation

SUL finalisation would unify user accounts across all Wikimedia projects.

History
Originally, Wikimedia wikis operated completely independently from each other, with separate user accounts and passwords for each wiki. CentralAuth was created to let users log in with the same credentials across multiple wikis, but as the wikis operated independently for years there were thousands of clashing accounts, i.e. cases where different people had registered the same name on different wikis. These clashes prevent those affected from logging in with the same name across all wikis.

Project Goal
The goal of the SUL finalisation is to forcibly rename any clashing user accounts so that every single user has their own single unified login across all Wikimedia sites.

Project Duration
TODO: Fill this out

Necessary prior code/ops steps

 * ✅ : ACTION: ?? to run the pass0 script to clean up data; updated stats review
 * ✅: PG's AccountAudit extension deployed and $wgCentralAuthAutoMigrate enabled on 2013-05-10 (allows gradual automatic merging by users on login).
 * ✅ by Legoktm, September 2014: also create a global account upon login when all local accounts belong to the user.
 * : ACTION: ?? to run the migrateAccount script for non-conflicting users, in order:
 * ✅ Merge 10k users who only exist on one wiki, and are not attached
 * ✅ Merge 18k incorrectly unattached users and 3k LUGM
 * ✅ Iterate over all unattached accounts with email and, where all accounts for a username have the same (confirmed) email, merge them all.
 * Send emails to make 50k global accounts claim all their local unattached accounts (gives 28 days time)
 * Email the 3.3M unattached, email unconfirmed accounts (sendConfirmAndMigrateEmail.php)
 * [Timing depends on how many] Automatically create some more global accounts (migrateAccount.php --auto)
 * Figure out other cases which need no manual intervention
 * Next steps (parallel):
 * Hoo? – Review lego's patch for 4
 * Depends on stats DB ✅
 * ✅ : Finalize the global rename user tool and get deployed
 * Note that renamed users MUST have their cookie invalidated.
 * Next step:
 * ✅ Legoktm, CSteipp, Hoo man - Merge https://gerrit.wikimedia.org/r/#/c/92468/ and test on beta
 * ✅ CSteipp, Hoo man, Legoktm - deploy on cluster and test. Planned for July 9th.
 * ✅ We need the ability to re-run metrics like these
 * Setup DB for tracking unattached user in the cluster
 * Ops: rt #7775
 * CSteipp? - Scripts to synchronize user tables
 * ✅ : Add sufficient unit tests to CentralAuth to prevent regressions
 * Plenty more could be added, but we should get notification of major breakage now.
 * ✅ : Run pass0 again, to ensure localnames and globalnames are accurate
 * Legoktm - See updates at 67350.
 * : Write & deploy new code for auto-login-to-alternate account.
 * ("You logged in as 'Foo' but your username has been automatically changed to 'Foo~Barwiki' - please use this in future")
 * Started as - Abandoned
 * ✅ Patch by bd808 to handle most cases:
 * ✅ Core hook and hook implementation by CSteipp to handle case where winner later renames, so no global account conflicting with the looser's old name exsits
 * Notification page once you login with your old name
 * : Write & deploy clashing-user-rename-and-globalise script.
 * Note that a single user with multiple local accounts that clash with a global account need to be renamed to a single global account named after the “home wiki” per the same code that Special:MergeAccount uses
 * Note that a single user with multiple local accounts that clash with a global account need to be renamed to a single global account named after the “home wiki” per the same code that Special:MergeAccount uses

Desirable prior code/ops steps

 * : Write & deploy global user merging so two global users can be merged together
 * What to do when two clashing local instances under the global accounts?
 * ✅ Deploy UserMerge extension to all wikis
 * Update extensions to be compatible - bug 67758
 * Fix major bugs in Ex:UserMerge
 * ❌ Enable UserMerge for all wikis in beta, test
 * Next steps:
 * Legoktm - Work on UserMerge dependencies
 * ✅ CSteipp - Merge global merge, disabled by config
 * : Write & deploy a tool for local ‘losing’ users to check a proposed new account name (check against clashing global and local users, and also against the global user account name rules) and request it be done.
 * ✅ bug 68886 Request global account rename from home wiki before forced SUL name change
 * bug 68924 Create special page to manage global rename request queue
 * Depends on Global Rename tool
 * Next steps:
 * Bd808 is working on patches

Project pages

 * /Global account merge


 * Global rename
 * older implementation (historical, outdated)
 * User documentation for tool


 * SUL Audit:
 * February 2013
 * March 2013
 * April 2013
 * May 2013
 * July 2014
 * September 2014