User:Leucosticte/Inclumedia2

Inclupedia is a proposed mirror of, and supplement to, Wikipedia. There is a separate Meta-Inclu project coordination wiki, but it is 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.

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
It would be good to explain why a particular bug needs to be fixed in order for Inclupedia to be created. The idea is to implement a minimum viable product that has just the bare bones of what's needed, as quickly as possible, before resources (including morale) run out. It can be held together with duct tape if needed; the frills can be added later. You might ask, Why are you needlessly replicating data that's already in Bugzilla? Well, I dunno if there's another way to get a table like this.

New hooks
These hooks are run right before database writes.