Extension:MirrorTools/Development

A complete rewrite of MirrorTools is in progress. It is a huge project, and there is some question of what is the best strategy of how to proceed.

Extend existing classes and override methods
Do what was done in v1.0.0, which was extend existing API classes like ApiEditPage, and override methods. That will involve a heck of a lot of code duplication, because only minor changes are being made.

Write it all from scratch
This is what I have been doing. See Extension:MirrorTools/Development/From scratch.

Figure out some better way
It's evident that there are certain ways of eliminating some duplication...

Change the core
Most of the core functions, e.g. LogPage::addEntry, lack a timestamp parameter. I could (1) add that parameter to those functions or (2) let those functions have the same list of parameters and add new functions that they call that have a timestamp parameter.

What about MirrorBot?
MirrorBot will interface with MirrorTools. What is presently envisaged is that MirrorBot will poll the API of the remote wiki, get the data, and put it into a queue table in a database. Then it will put that data into the local wiki via said wiki's API. Or, if MirrorBot runs on the server that has the local wiki's database, it could just do database queries to directly put that data in there, without fooling with the local wiki's API.

The ultimate goal
The ultimate goal of all this is to end up with a local wiki database that has everything (or at least everything that's needed) that's in the remote wiki database. Plus there needs to be capability to deal with synchronization problem.