User blog:TimmyQuivy/On the Importance of Upgrading MediaWiki

If this is the first you're hearing about the Unified Community Platform project, read this to learn more about the entire scope of the project before commenting.

As Fandom continues to roll out our United Community Platform this year, one reason you have seen us cite for creating this new platform is that it'll allow our entire wiki network to exist together on the same version of MediaWiki. This means, for communities already on the Fandom platform in particular, upgrading to MediaWiki 1.33.

That explanation might make a lot of sense for our oldest, most experienced users, but for many of our users, the term 'MediaWiki' is a mystery. What is MediaWiki and why does Fandom care about it? Doesn’t Fandom have its own unique code? Why does upgrading MediaWiki take so much work?

These are important questions we're answering today. It's critical our community understands where and how Fandom and MediaWiki interact and why modern MediaWiki translates to a modern Fandom platform.

What is MediaWiki?
MediaWiki is a content management system, often simply abbreviated as a CMS. Okay, ... What is a content management system? CMS's are software applications that allow users with varying levels of technical skill to build websites. They are large pieces of software because they incorporate all of the things you need to host a successful website, including but not limited to:


 * Templates that allow you to create consistent pages
 * Ability to customize and stylize site design & display elements
 * A user-friendly interface for adding & changing content
 * Moderation tools
 * Well-defined content structure
 * Can be easily extended, allowing third-party developers to add extra pieces of code into the software to handle unique needs.

A CMS is a pretty standard part of any publishing platform, the most popular of which is WordPress. If you've been on the internet for any period of time today, even excluding the fact you're reading this very page on a CMS, chances are you've been on a website built using a CMS.

MediaWiki began development in 2001. It was designed entirely for the purpose of hosting Wikipedia. Wikis as a concept had been around since the mid-90s. 'Wiki' is from the Hawaiian word ‘Wikiwiki’, meaning 'fast'. It was chosen as that term because it allowed fast edits to what is displayed when you visit a website.

What made MediaWiki unique, then and now, is it was able to tie in modern version control (in wiki terms, page history) and storage of pages into MySQL. This enables wikis to operate at larger scales than on other systems. It's why Fandom is able to host hundreds of thousands of wikis on our platform.

MediaWiki was successfully launched on Wikipedia in January 2002. Interest from developers led to creation of the Wikimedia Foundation, who maintain the software to this day. This allowed people to use the software for independent wikis.

Fandom's History with MediaWiki
Since Fandom was founded by famed Wikipedians Jimmy Wales and Angela Starling in 2004, MediaWiki was the obvious candidate to host all of our wikis.

In the early days of Fandom, we were mostly just a wiki farm - we offered hosting of wikis for people with very little difference than the regular “vanilla” form of MediaWiki. In fact, Fandom and the Foundation worked closely on a number of initiatives in the late 2000s and early 2010s, including both platform's first VisualEditor.

But over time Fandom's needs and the Foundation's needs began to differ. The Foundation, still mostly dedicated to supporting Wikipedia, focused on the needs of that very specific type of resource website. Fandom, meanwhile, found the needs of our communities were dramatically different. Additionally, our massive size of hundreds of thousands of wikis meant that we needed to change MediaWiki code to optimize our site performance. Any time that vanilla MediaWiki upgraded to a new version, we had to spend weeks of engineering time comparing code differences and making our custom code compatible before following suit with upgrading.

As such, in mid-2013, Fandom decided to “fork” from MediaWiki, meaning that we kept the MediaWiki software we already have, but went in a complete custom code direction for all code moving forward. As such, Fandom wikis have been “frozen” at MediaWiki version 1.19 for nearly seven years.

What Makes MediaWiki special
You and anyone else can, by default, add & edit pages!!! … Seriously, that is pretty much it. This is pretty much the bread and butter of what makes MediaWiki unique.

MediaWiki is the only major CMS designed to allow for crowdsource editing. Any other similar software by default keeps the ability to add content to a website limited to the website owner and other manually added contributors.

Because MediaWiki is centrally designed around this unique premise, there are some things it does very well:
 * Editing
 * MediaWiki has a default permission structure that allows end-users to add and edit content freely.
 * It uses a fairly simple shorthand markup called wikitext which allows you to link pages, add images, and do many other things without having to learn HTML or PHP.
 * MediaWiki's parser - the engine that interprets the markup and turns it into actual HTML to display in your browser - handles incredibly complicated markup well, allowing editors to develop very detailed pages without need for very intensive work to display it.
 * Structure
 * Vanilla MediaWiki intentionally does not come with much of anything predefined in terms of how the content is structured and organized.
 * This is an advantage because it allows communities to categorize and organize their pages in ways that serve their needs.
 * Most categorization is done through MediaWiki’s “Category” tool, which allows users to easily put an article in a collection of similar pages. Pages can be in any number of categories.
 * Additionally, MediaWiki comes with tools called “Special Pages” that collect pages that have a particular quality, for example Special:LongPages
 * Finally, namespaces allow clear divisions of types of pages on the wiki
 * Moderation Tools - Admins have the ability to:
 * Block users on the frontend
 * Review edits using special tools like RecentChanges & RecentChangesPatrol
 * Quickly undo and revert edits using the control revision features.
 * Lock down specific pages from being edited by certain users.
 * Email Watchlists
 * Customization
 * Site admins can easily set the top level navigation elements
 * Users can add their own snippets of CSS & JS to make site editing or reading more enjoyable. Admins can add these snippets globally.
 * Certain labels of the interface can be edited using MediaWiki messages.
 * Templates
 * To prevent users from having to manually add consistently designed and structured elements across pages, MediaWiki allows you to store the basic code for these elements in a Template page and then you invoke it on an article page.
 * For example, on a Star Wars character page, you can invoke the Character template, pass it a few parameters, and save the page to show a table similar to other character pages.
 * The most common type of template is called an “infobox”
 * It evolves faster than other CMS softwares due to its open source nature.

Why is Fandom realigning with MediaWiki?
There are multiple technical, business, and social reasons why Fandom made the commitment to move to a Unified Community Platform. The amount of engineering effort it takes to maintain a highly customized code is higher than it would be if we were aligned with modern MediaWiki. Fandom merged with Curse Media, and that brought Gamepedia into the Fandom fold, so it made sense to operate on one platform with modern MediaWiki like Gamepedia has always maintained. And for years, we've heard the feedback that wiki editors want us to upgrade.

Once we made that decision, we had to decide what engineering direction we wanted to go in for a codebase. Gamepedia has stuck very closely to the vanilla MediaWiki, meaning the fastest way forward would be for Fandom to catch up. But upgrading the existing Fandom platform would've been a mess of technical issues, so the creation of a new platform to host Fandom and Gamepedia wikis on MediaWiki 1.33 made the most sense.

Additionally, Fandom users perceived our forking from MediaWiki as a mistake and a prime example of the company moving in the wrong direction. There was a long period of time where we focused too much on other experiences at the expense of the wiki platform, and users spoke loud and clear about how our outdated version of MediaWiki made them feel like we didn't care about wiki editing or wiki editors.

Upgrading to current MediaWiki means that users get some nice new moderation & content features from improvements made in the core software since 2013 (MediaWiki’s integrated Mobile Editor as a key example), and it makes it clear that Fandom is a modern wiki platform. A cleaner codebase also means that it will be easier for us to build many features that users have requested for years.

That said, upgrading MediaWiki is HARD.

Fandom maintains over 1 million lines of code. To be compatible with Core MediaWiki, we have to review each line of code and make sure deprecated functions - software methods that are now out of date and unsupported - are replaced. Fandom also has a series of microservices, like user permissions and Discussions that must be able to “talk” to MediaWiki properly.

As Will has made clear in the stages of the UCP rollout, our engineering teams are currently going extension-by-extension, reviewing the code, and then porting it onto the new platform. This is why it was not practicable to wait for the UCP to be in a fully finished state before review - we can test simpler code live on the site and verify it is working properly while working on the backend to add more complicated features and extensions.

The end result will be mostly the wiki platform you know and love. Some features need to be tweaked, others need to be replaced, but we’re going to come out of Phase 1 with a stronger platform that is built for the future. Phase 2 is when we start building that future with your help. Your feedback will be key as we refine the wiki experience for everyone.