User:Leucosticte/Inclumedia2

Inclumedia is an abortive embyronic MediaWiki wiki farm. The plans said it would consist of projects such as Inclupedia, Incluversity, etc., each of which would be a mirror, a supplement, and to some extent a fork, of Wikimedia projects. The basic approach to creating all of these different sites would have been identical, and similar software (MediaInclu, MirrorTools, etc.) would have been used for all of them. There is a separate Meta-Inclu project coordination wiki, but it was deemed desirable to do technical planning on MediaWiki.org to reduce fragmentation and to avoid the problem that Wikimedia encountered, in which it was later necessary to move a bunch of technical content from Meta-Wiki to MediaWiki.org that might as well have been created at MediaWiki.org to begin with.

Inclupedia
Since Inclupedia is the flagship Inclumedia project, the rest of this discussion will focus on its implementation.

Specifications
The primary keys for user, revision, recentchange, etc. for Inclupedia should probably be started at some number much higher than what it's anticipated Wikipedia will use any time in the foreseeable future. It appears that Wikipedia's rc_id and rev_id are already at or close to 600 million, so to future-proof it, it should probably be changed to a BIGINT and started at 1 quadrillion.

This could cause issues if revisions are imported from eninclu to enwiki. There could be a table mapping one to the other, if necessary. Better yet, just use a field, and have the functions (e.g. in DifferenceEngine.php, perhaps) use that field if need be.

There's pretty much going to be a global with all the different parameters from the API function, that gets used by all these different hook functions.

Preserving data
Before any edit is to made to the local wiki, it should be saved to another database table that is strictly for attempted edits. This way, no matter what snafus happen, we never lose anything. Extension:ContributionsBackup will be developed for this purpose.

Bugs
See https://bugzilla.wikimedia.org/showdependencytree.cgi?id=60084&hide_resolved=1

New hooks
These hooks are run right before database writes.