One of the most annoying parts of the current way we configure MediaWiki in production is the need for constantly deploying changes for simple actions like:
- pooling/depooling databases
- changing the database weights
- changing the functions a DB server performs (watchlist, recentchanges, vslow, and so on
This basically means being able to populate:
- $wgLBFactoryConf['sectionLoads][$shard]` with a k: v hash of db labels and weights
- `$wgLBFactoryConf['groupLoadsBySection'][$shard][$function] with a k:v hash of db labels and weights
I don't think we should keep that data structure in the variables we'll add to confctl; we should instead aim at making it easy to edit and thus more resistant to mistakes. So first order of business will be to design such data structures.