MediaWiki as a Wikidot replacement
This document will seek to properly analyze the use cases the SCP Wiki and sister projects have, current properties of these sites on Wikidot, and how these could be replicated on MediaWiki. The goal is to explore the viability of hosting the wiki using MediaWiki, as it is an already-extant, widely used, maintained wiki software. However, its use is not necessarily obvious, as there are a number of significant differences between Wikidot and MediaWiki.
Whether a path to pursue platform independence via MediaWiki has not been decided, but this document aims to make such an assessment easier to perform.
Wikidot / MediaWiki Rosetta
This section lists behaviors or features of Wikidot, or our usages of Wikidot, which we will need to satisfied in some way on any viable replacement platform. It then describes any possible ways of replicating this behavior on a self-hosted MediaWiki platform, and assesses the viability and difficulty of each.
Each assessment gives an emoji to describe the overall compatibility. A legend is provided below:
✅ – Fully compatible
There should be no issues with this aspect of a potential transition.
🔵 – Mostly compatible
There will be issues during the migration, but this substitute should work acceptably in the long term.
🟡 – Somewhat compatible
There will be growing pains, or a very different framework of policy or site organization will need to be adopted to accommodate the changes between the two platforms. Permanent changes to site culture may also be necessary.
This is the minimum level of incompatibility for any assessment which finds a breaking change or permanent redirect is necessary.
❌ – Not compatible
A workaround may be possible, but will require significant manual human labor, code changes, policy changes, and/or cultural changes to the site.
⛔ – Impossible
There are no feasible means of bridging the requirements, and it is not clear how this requirement could be met.
❓ – Unknown / Not fully evaluated
While a surface-level investigation has been performed, a larger analysis of the viability of this approach depends on particulars that are not yet known, or will need to be discovered during implementation.
This assessment may include another emoji, denoting what the current believed compatibility level is.
Wikidot requirement | MediaWiki replacement | Compatibility Assessment | |
---|---|---|---|
Pages | Pages | ✅ | Being a wiki, MediaWiki supports pages complete with persistent records of revisions which can be recovered if needed. At a high level, these concepts are equivalent. |
Sites | Wikis | ✅ | MediaWiki supports having multiple wikis with isolated permissions and pages. Sites are also permitted to have custom domains. |
Localization | Localization | ✅ | MediaWiki is well-translated and has many localization options. |
Users | Users | 🔵 | Users have some differences.
(See below “Slug normalization”) |
Wikitext (syntax) | ❌ | MediaWiki has an entirely different syntax than Wikidot. Several transition steps will need to be taken, at minimum:
See also:
| |
Custom parser | ❌ | Using ContentHandler, all namespaces (save However there are some issues. Internationalization passes through MediaWiki wikitext, which would need to be converted, and outcomes like structured data and categories need to be implemented as part of the parser’s output. This will be a substantial effort, as the MediaWiki parser is tightly integrated into its code and will be difficult to work with. See also:
| |
Categories | ✅ | These concepts are essentially equivalent, however they are configured differently in MediaWiki. | |
Category read restrictions | 🟡 | Wikidot’s implementation has several issues, but it does permit categories to be configured such that their contents are not publicly visible. In MediaWiki, this is not native functionality, but the Lockdown extension is able to offer this concept, though with many of the same limitations as Wikidot, and these restrictions may not be respected or compatible with other extensions. (This is noted because any MediaWiki installation to replace Wikidot will doubtlessly need several extensions for compatibility). | |
Category write restrictions | ✅ | MediaWiki has native support for restricting writes based on namespace and user role. | |
Tags | 🔵 | Pages can be placed into “categories”, which are essentially analogous to Wikidot tags. There are some differences however.
| |
Slug normalization | Title normalization | ❌ | Both Wikidot and MediaWiki normalize slugs, but do so in extremely different ways. For Wikidot:
For MediaWiki:
Alternate normalization systems are not really possible in the code, at least without extensive modifications to MediaWiki core. A system of automatically redirecting pages could be implemented, but may need to exist at the router level (i.e. in nginx before the request hits MediaWiki). A bot could also be employed to automatically add hundreds of redirects for all listed variations. This is culturally relevant to the SCP Wiki, as the slot a page has is important. SCP articles are numbered, and it could be confusing if similarly-cased or punctuated articles could be created. |
Slug / Title Distinction | 🔵 | In MediaWiki, a page’s slug is its title. In order to change the title a page has, the syntax | |
URL compatibility | N/A | 🔵 | The web server can be configured to serve pages at |
Page locks | ✅ | Pages can be given varying levels of protection to prevent vandalism or misuse.
| |
Anti-vandalism | N/A | ✅ | MediaWiki is provably capable of handling very large sites while still enabling action against vandalism. Some tools (such as ClueBot or Twinkle) are third-party bots or tools, and not part of the core software itself. Relevant extensions or features:
|
Page rating | ❌❓ | There are a number of voting extensions, but they tend to be poorly maintained or simplistic. It is possible to replicate Wikidot’s vote environment, but further improvements will likely require a custom extension. | |
Start page | ✅ | A main page can be configured for a site. | |
Files | 🟡 | Files are completely different concepts.
| |
Redirects | ✅ | MediaWiki natively supports redirects. They may only be linked to pages on the same wiki (can be configured). | |
Site search | ✅ | MediaWiki search is functional, and there are many ways to customize it and make it significantly more useful than in Wikidot. | |
🔵 | These two notions are mostly similar, but in details they are very different. However most of the use cases in Wikidot are covered relatively well by MediaWiki. Particular modules may also be mentioned separately. | ||
Components / Includes | 🟡 | MediaWiki has native support for templates, which are a fair bit more extensible than Wikidot’s. However, like with the syntax, these are designed very differently and will require effort to convert and document the changes, as well as cultural changes. | |
ListPages (offset pages) | 🔵 | If subpages are enabled in the main namespace, then adding | |
ListPages (other uses) | 🟡 | These are three viable extensions which could replace the use case of the ListPages module (for the intended use of listing pages), however they have not been thoroughly evaluated, and there may be Wikidot features within ListPages that are not supported by any of these extensions, or have issues. | |
Author pages / art pages | 🟡 | User pages are a clear analogue to author pages, however there are some differences:
Art pages and other related media can simply exist as subpages within their | |
Forums | WikiForum, SocialProfile, DPLforum, DiscussionTools, LiquidThreads, PostComment, Comments | ❓ | There are a few extensions to consider when trying to create a forum system on MediaWiki:
Alternatively, forums could be deployed entirely separately from MediaWiki, and standalone forum software used instead. For instance phpBB or XenForo (not free). |
❌ | If we ignore extensions, then MediaWiki does not have a meaningful forum replacement, and instead uses a system of talk pages, pages associated to others (similar to the “discussion” link on Wikidot pages), which users can write in to hold conversations. This can work fine if the community is adapted to it, but for the SCP Wiki and its associated communities, this will be a massive cultural change. Additionally, importing thousands of Wikidot forum posts and finding some way to represent them cleanly on talk pages will be a significant challenge. An alternative to talk pages for the bulk of discussion is the use of some forum extension. These will need to be researched, but will doubtless present their own issues.
| ||
Forum moderation | Editing talk pages | ❌ | Moderating talk pages will prove challenging. Large, extant communities such as Wikipedia are already very familiar with the talk page system, and have an established culture surrounding it. Such structure will not exist for the SCP Foundation, and it will require an immediate, massive transition, which will prove disorienting. There are several issues which affect talk pages, especially notable for a community which has a number of younger fans contributing lower-quality comments:
|
User DMs | SocialProfile, User talk pages | 🟡 | With SocialProfile, a feature called UserBoard exists which can replicate this functionality. However the extension includes much more, and it is not clear how separable individual components are. Aside from extensions, direct messages do not exist in MediaWiki. Notices are left to users by leaving a comment on their talk page. This will obviously require a cultural change. Alternatively, the EmailUser special page could be used, but this would essentially permit exposing email addresses to users, which people may find objectionable on privacy grounds. |
Moderator / Administrator | 🔵 | By default, MediaWiki has several user groups. Wikidot’s notion of the “moderator” and “administrator” map fairly well to MediaWiki’s “administrator” and “bureaucrat”, with the notable difference that admins are able to apply blocks (bans). MediaWiki also allows customizing different groups which have special permissions. These can be further extended with extensions, which add new groups or add new capabilities to those groups. | |
Site membership and applications | User role and global editing settings | 🔵 | MediaWiki does not distinguish between “user who exists and is on a site” and “user who exists but is not on a site”, with the only way of having a “non-member” user is to block them. To implement a “membership” flow, a site could be configured so that regular users cannot make any edits, and the “basic user” role is used instead. A user can be added to this group upon completion of some custom application flow, which will need to be researched and developed. It is also possible to disable access by anonymous users, which requires that all users have a registered account. |
Crom | API | ✅ | MediaWiki has a native API which can be used to interact with wikis in an automated way. To avoid API write access abuse, the extensions ConfirmEdit (captcha) and AbuseFilter (customizable anti-spam) can be used. |
Attribution | 🔵❓ | It is possible to add attribution data via templates which apply structured data, using a flow such as Cargo → SMW. Then a template such as This would not be a “native” feature, and a significant amount of work would be required to have it be available cleanly in all areas where this information is needed. Some work would be needed (a template, or possibly a custom extension) to display authorial information in some standard location. | |
Narrative title | Structured data, templates, Cargo, SMW | 🔵❓ | Similar to attribution, the alternate or narrative title field could be added as structured data. Displaying it would likewise be similar to author attribution. |
Theme pages | Unclear | ❌ | There is not a clear analogue. CSS can be customized in a few ways:
Of these, the TemplateStyles extension is the closest to how per-page styling is done, but it cannot alter the skin at all, which entails a cultural change due to a restriction of author creativity. To allow skin styling to also be changed, but without bringing the restrictions of worsened accessibility or denying personal settings, a custom extension would need to be created. |
Custom CSS | N/A | Allowing untrusted users to specify arbitrary CSS is a security flaw, and our setup on Wikidot works despite that. This is not a behavior we should bring to any new platform. That said, the CSS extension is pretty much an identical match for Wikidot’s | |
Sandbox / drafts | 🟡❓ | There are not good ways of copying pages from one site to another. English Wikipedia uses the Draft: namespace, and there are some extensions which can copy data to to other wikis. This will need to be evaluated more closely if we pursue a MediaWiki transition. |
Hosting
Miraheze – Not viable. It is a general wikifarm and we have very particular needs, both in terms of bandwidth and extensions. Additionally it has latency issues which would be problematic for our site.
SkizNet – Possibly $60/month, managed, excluding costs for the CDN. Provides support for hosting. With prepaid storage, those costs should be trivial.
Overall Assessment
With a significant development effort, it is likely possible to adapt a series of existing and new MediaWiki extensions to reasonably emulate a Wikidot-like environment. Several notable trade-offs will have to be made, whether they are considered worth it will need to be investigated themselves if a MediaWiki transition effort is being seriously considered.