|Resolved||None||T46294 MWException error - Error: invalid magic word 'speciale'|
|Declined||TTO||T16264 Import sources should be maintained by stewards|
|Open||None||T28992 Implement configuration database aka configuration management aka no shell excuse|
|Open||None||T28994 Make site rename requests possible on-wiki without low-level ops intervention|
|Open||None||T29002 Completely de-couple the DB name|
For comparison, here's how we do it in StatusNet:
- Each site has a 'nickname' used as an internal identifier, which never changes. This is used in multi-site data structures such as job queues.
- Local configuration, or a 'status_network' table for multi-site farms, can provide additional mapping between nickname, database hostname & database name, and domain name or URL path
- domain names or URL paths are used as the primary user- and admin-visible identifier for choosing which site to work with (via vhost on web or -sidenti.ca parameter on command-line scripts)
So to handle the Wikimedia-style cases, a central site mapping table might list for each row at *minimum*:
- database name ("enwiki")
- site family ("wiki"/"wikipedia")
- language/section subkey ("en")
- hostname ("en.wikipedia.org")
If we're actually using a mapping table instead of trying to manually break apart or build up from prefix/suffixes all the time, that might actually be plenty.
That would allow continuing to use the dbname as an internal key, while allowing language codes or domains to be altered.
However, in places where we expose db names (such as cross-wiki user management), we should consider displaying and selecting from canonical hostnames ('en.wikipedia.org') or language+family ('en.wikipedia') as a UI-friendly form, so that things that look like they don't match are no longer an issue.
This sounds a lot like Toolserver's wiki database. Which is one of the reasons cross-wiki tools are relatively easy to make there.
A wikified dump of that MySQL table can be seen here: