ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
MediaWiki serveron-wiki JavaScripton-wiki templatesexternal clients (community and 3rd party)
2
Extension PHPGadgetUser scriptLua moduleWikitext template
Toolforge (web/bot/jupyter)
External app/bot
3
PurposeExtending capabilities of MediaWiki to provide optional components that can be enabled per-wiki.Adding or changing interface and output for users, available to othersAdding or changing interface and output for oneselfStructured modeling and automated formatting of content (scripted)Structured modeling and automated formatting of content (markup)Automated editing, content extraction and analysis, especially based directly on a database replica.Automated editing, content extraction and analysis, etc
4
5
Read application state and invoke servicesFull access, via DAO and PHP service objectsvia public Web APIvia public Web APIlimited, via Lua libraryminimal, via parser functionsSQL queries on sanitized replica,
public Web API
via public Web API
6
Change application state (page edits, user accounts)Full access, via DAO and PHP service objectsvia public Web APIvia public Web API--via public Web APIvia public Web API
7
CapabilityCustom data storageSQL, strict requriements, update framework supportJSON wiki pagesJSON wiki pages--few restrictions, manual updatesno restrictions, manual updates
8
Receive eventsAPI call from internal service (changeprop)----via public Web API streamvia public Web API stream
9
Modify user interactionsJS API and DOMJS API and DOMJS API and DOMinfoboxes, etcinfoboxes, etconly through Gadget-
10
Generate or modify visible contentParser hooksmodify DOMmodify DOMgenerate wikitextgenerate wikitextonly through Gadget-
12
Process wikitext dumps-----toolforge hostingdownload
13
14
LanguagePHP + SQLCSS / JavaScriptCSS / JavaScriptLuawikitextanything (Python, PHP, Node, etc.)anything (Python, PHP, Node, etc.)
15
Framework supportStrong (MediaWiki)Limited but flexible (JS API)Limited but flexible (JS API)Strong but restrictive (Lua libraries)Limited and restrictive (parser functions)Weak (except for pywikibot)Weak (except for pywikibot)
16
ExecutionServer (PHP)Web BrowserWeb Browser
(limited audience)
Server (LuaSandbox)Server (Parser)Toolforgeanywhere
17
TriggerServer-side callbacks (hooks and handlers)JavaScript events (UI actions)JavaScript events (UI actions)Page rendering (on edit)Page rendering (on edit)Manual/periodicManual/periodic
18
19
Version controlpublic gitpublic wiki pagepublic wiki pagepublic wiki pagepublic wiki pagepublic git (usually)anywhere
(may be private)
20
Deploymentautomatic weekly & self-service backportsautomatic instantlyautomatic instantlyautomatic instantlyautomatic instantlyself-serviceself-service
21
Code ReviewGerrit +2Peer adminsnonePeer editorsPeer editorsnonenone
22
Audience impacteveryone by defaultopt-in userspersonal or shared peer-to-peereveryone by defaulteveryone by defaultopt-in userspersonal
23
24
Risk summaryVery High
(database integrity)
High
(readers' browsers)
Medium
(limited audience)
Low
(community oversight)
Low
(community oversight)
Low
(edits-only, community oversight)
Low
(edits-only, community oversight)
25
Difficulty summaryHighMedium (JS)Low (simple JS)Medium (Lua)Low (wikitext)Medium (complex environment)Low (e.g. pywikibot)
26
27
28
very high or very strong or very hard
29
high or strong or hard
30
intermediate
31
low or weak or easy
32
only indirectly
33
none or not applicable
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101