Interwiki integration

This page is for proposing and discussing interwiki integration ideas. These ideas seek to fix the following bugs, while also enabling more interconnection among the wikis of the wikisphere as a whole, in ways not contemplated by these bugs:

Bug Description
11 Red interwiki links -- check for page existence across wikis
708 Interproject links
1066 Cross-wiki talk page notification
1837 Search all wikis at once
3525 Cross-wiki watchlists
3544 Single recent changes on several MediaWikis
9890 Reasonably efficient interwiki transclusion
11423 Central database for interwiki
14234 Create a way to change home wiki in CentralAuth
15607 Implement the Interlanguage extension in Wikipedia
16568 Create a hub devoted to cross-wiki data exchange
23741 Resolve searchNs collisions on wiki farms with a shared user table
23999 Provide method to store API/DB information for interwiki sites
27696 It should be possible to see the changes to the interwiki page in the watchlist

Create wikispaces and langspaces in central database


Create a central database/website as a clearinghouse for interwiki data sharing. Have local wikis retrieve data from it (e.g. for producing interwiki watchlists, recentchanges, and existence-detecting links) via the backend, and allow remote wikis to either (1) pull data from it or (2) subscribe to a service in which the clearinghouse website will periodically push updates to those remote wikis via their APIs. The shared central database will contain wikispace and langspace fields, in addition to the already-supported namespace fields, in the appropriate tables. Pages would be accessible as follows:

Wikispace Langspace Namespace Page title Result
Wikipedia English Portal Geography wikipedia:en:Portal:Geography
Wiktionary French Main Fromage wiktionary:fr:fromage
... ... ... ... ...

This will enable both existence-detecting links to "absolute" addresses (e.g. ) and (as is already the case) to "relative addresses" (e.g. ). As is already the case, users would not necessarily need to type in the full page title (including wikispace and langspace); if the user is on, say, enwiki and types in Portal:Geography, the software will assume he means wikipedia:en:Portal:Geography.



Make necessary changes to dozens/hundreds of core and extension files. E.g. parameters will need to be added to many functions, and new variables will need to be added to many class objects. Many aspects of the user interface, including special pages and the API, will need to be revised to make use of the new fields. In the central database, add the following database fields, and implement the associated functionality to make use of them:

Table WikiField LangField
archive ar_wikispace ar_langspace
job job_wikispace job_langspace
logging log_wikispace log_langspace
pagelinks pl_wikispace pl_langspace
protected_titles pt_wikispace pt_langspace
querycache qc_wikispace qc_langspace
querycache2 qcc_wikispace qcc_langspace
recentchanges rc_wikispace rc_langspace
redirect rd_wikispace rd_langspace
templatelinks tl_wikispace tl_langspace
user_properties up_wikispace up_langspace
watchlist wl_wikispace wl_namespace

Advantages and disadvantages



  • Allow for integrated watchlists, integrated RecentChanges, interwiki page existence detection, etc.
  • Allow one database query to be run on the entire wiki farm without the need to UNION or JOIN a bunch of different databases.


  • Could be hard to implement, requiring hundreds of changes to the core and extensions.

Rejected ideas


There was an idea to consolidate all local wikis' databases into one big database with different wikispaces and langspaces: "All configuration settings will need to be unified for the one big wikifarm, which might require changing some of them to arrays in order to maintain customizability of individual wikis." This idea was rejected due to performance concerns related to the difficulty/impossibility of scaling such a huge database to a multi-server system, and the probable difficulty of getting the community to accept such an extensive revision of core code.

See also