User blog:TOR/MediaWiki Upgrade

As you may or may not know, Wikia uses MediaWiki as our base software. This is the same base software that the Wikimedia Foundation uses for Wikipedia, but here at Wikia we run a heavily modified version of it. Currently we’re using code based on MediaWiki version 1.16. From time to time, we sync our version with the latest MediaWiki version, which as of May 2, 2012, is up to version 1.19.

Why we are upgrading?
First of all: to bring you new features!

But also because every new release contains many bug fixes and performance improvements. Most of these are changes happening under the hood which are not visible to users, but help us maintain our MediaWiki installation and expand.

How are we going about it?
We started with a clean MediaWiki 1.19 and gradually applied our changes to the core code. That is now complete, so next we are testing the whole infrastructure plus our unique extensions against the new code. This is to make sure everything is working exactly as it worked on previous version (or better).

Medusa


Since Wikia is made up of thousands of wikis, rather just one, we have had to develop unique tools so that all wikis can be upgraded and run smoothly. To do this, every Wikia wiki is running on top of custom platform which we call WikiFactory. It allows us to run hundreds of thousands of wikis on one code installation.

Recently our Engineering Team completed an improvement to the way this system works, which gives us the possibility to run different wikis on different versions of the code. We call this new system Medusa, because… well, it was supposed to be called Hydra (multiple code version are like the many heads of the hydra), but someone confused the two monsters and the name stuck. Besides, Medusa has many serpents on her head, that kind of works, too, right?

MediaWiki 1.19 merge will be our first project which will utilize Medusa to gradually switch all wikis to the new version of the code.

Timeline
The MediaWiki 1.19 upgrade project started in April and we hope for it to be completed by the end of July. We are going to start by migrating a set of special test wikis to make sure things go smoothly. When we are confident with this migration, we will migrate a handful of medium-traffic wikis to analyze how the process works on a real, live wiki. After that’s done we plan to migrate our 5,000 biggest wikis.

Once those have been upgraded, the script will continue running on the rest of our wikis, slowly working its way through the more than 200,000 wikis on Wikia. We hope for this to be complete by the end of July and will keep you updated as we proceed. How will you know if your wiki has been migrated? You can have a look at the Special:Version page on your wiki which will tell you which MediaWiki version your wiki is currently running.

Selected bug fixes and new features
The upgrade brings us a lot of changes and fixes, many of them deep in the core code. Not all of these updates ones you will see directly on the site, but they include things like performance optimization to help the site run a bit faster, and code refactoring to make future development easier. There are, however, many which you might find interesting. Here’s a selection:
 * The default user signature now contains a talk link in addition to the user link.
 * Built-in method for making tables collapsible. Instead of adding custom JavaScript to your wiki, you can now just use the class "mw-collapsible".
 * File extensions (e.g. .jpg) will be automatically added to filenames on upload if the user specified a filename without an extension
 * Images are now autorotated according to their EXIF orientation. This only affects thumbnails; the source remains unrotated
 * The "This is a minor edit" checkbox is now available when you create a page or new section
 * Support for metadata in SVG files (title, description)
 * Inline rendering/thumbnailing for Gimp XCF images
 * The parser cache is now shared amongst users whose different settings aren't used in the page
 * A variety of category sort-related fixes, including:
 * In English, lowercase and uppercase letters now sort the same
 * Subcategories, ordinary pages, and files now page separately
 * When several pages are given the same sort key, they sort by their names instead of randomly
 * Interlanguage links display the page title in their tooltip
 * Special:Listfiles now supports a username parameter
 * And much more!

If you’d like to see a full list of the changes, take a look at MediaWiki’s Release Notes for 1.17, 1.18 and 1.19. As we work on this upgrade, we will not be doing our weekly code release. This is so the site remains stable and all of our engineering team can focus on the upgrade. During this time there will also not be weekly technical updates. Once we feel the site is stable, we will restart weekly releases and the technical updates. Thank you for your patience as we release this, and feel free to post questions below.