MediaWiki 1.21/wmf2

Deployment of MediaWiki 1.21wmf2 to Wikimedia sites
The latest version (labeled "1.21wmf2 ") of MediaWiki, the software that powers Wikipedia and its sister sites, is being deployed to all Wikimedia sites in stages.

Deployment started on Monday, October 15 and continues until Wednesday, October 24 (see the roadmap).

We will continue to deploy the latest software every two weeks. This is intended to minimize disruption and possible issues, and make it easier to identify the cause of problems, since the possibly problematic code will be much more recent.

The biggest changes

 * 1) The new ContentHandler might affect diff rendering, handing of CSS and JavaScript pages, import/export (including PDF export), and API stuff, especially when rendering and editing.  Also look out for issues in template rendering, images and media handling, localisation, and mobile device access.  (merged on Oct 9)
 * 2) High-resolution image support.  This work-in-progress will try to give higher-res images to high-density screens that can support it, like new Retina displays.  More info at  .  One of the bigger risks of the high res stuff is load-based, since we may see substantial new load on our image scalers. So *all* image scaling might be impacted. (merged on Oct 11)
 * 3) The CologneBlue skin has been refactored.
 * 4) "Sites" is a new backend to represent and store information about sites and site-specific configuration.  This code  is meant to replace the current interwiki code, but does not do so just yet.  Still, keep an eye out for site-specific configuration or interwiki issues.

Core changes

 * - Fix SpecialPage::isRestricted
 * - Revert MobileFrontend to rev before todays deployment
 * - * mediawiki.action.edit.preview is not loaded
 * - Update MobileFrontend to master
 * - Update MobileFrontend to master
 * - check for null content in ApiParse.php
 * - Add wfSuppressWarnings; to CologneBlue.
 * - fix non-array sidebar links handling in CologneBlue
 * - Update ZeroRatedMobileAccess to master
 * - Update E3Experiments and PostEdit to master
 * - Restore executable bit to bin/ulimit4.sh
 * - Update SwiftCloudFiles to master
 * - A few more for
 * - - Catchable fatal error: Object of class ParserOptions could not be converted to string
 * - [FileBackend] Issue a warnings for cache problems in streamFile.
 * - Check whether content is null or false.
 * - Clear $this-&gt;mOptionsLoaded in User::clearInstanceCache
 * - [FileBackend] Clear persistent stat cache if it mislead streamFile.
 * - fix, provide missing revId param in ApiQueryRevisions
 * - Update E3Experiments for this week's deployment to master
 * - [FileBackend] Cleaned up path normalization for caching.
 * - Make EditPage robust against null content.
 * - Fix fatal in EditPage::displayPermissionsError.
 * -  Missing content in EditPage::showDiff
 * - Update ArticleFeedbackv5, CentralNotice, and PageTraige to master
 * - Apply rtrim on on preSaveTransfrom.
 * - [] Record links on CSS/JS pages in the DB.
 * - Update ProofreadPage to master
 * - [] Handle non-existign content in WikiPage
 * - [] Handle null content in action=raw.
 * - Revert &quot;Show a &quot;(blocked)&quot; hint on Special:ListUsers/ActiveUsers&quot;
 * - Fix regression: ContentHandler prevents action=edit append to blank page
 * - Update EP to master
 * - Special:Undelete used non existant global wgContentHandlerNoDB
 * - Update VisualEditor
 * - Revert Collection to 9f37005e78a068821c45d9d313394c6728f55b4a
 * - Reset MobileFrontend in 1.21wmf2 to the same version as 1.21wmf1, needs more tinkering
 * - fix, return false on edit page form when section is invalid
 * - check if $revisionInfo['format'] isset in Import.php
 * - Update MobileFrontend to master
 * - Update VisualEditor to master
 * - Update MobileFrontend to master
 * - Update to master to fix missing stylesheet related errors
 * - Update to master to fix fatals
 * - Update MF to master to get https://gerrit.wikimedia.org/r/28030
 * - [] fix fatal error when rendering non-existing pages
 * - Message documentation update for DifferenceEngine
 * - More concise and precise wording for 'upload-disallowed-here'
 * - Fix for SiteListTest failing on 32bit machines
 * - Fix incorrect message in CologneBlue full text button.
 * - Rename $wgPurgeHttp11 to $wgSquidPurgeUseHostHeader
 * - Add $wgPurgeHttp11.
 * - Fix WikitextContent::getSection for missing sections
 * - [] code 415 for bad type in action=raw
 * - Support plain text content.
 * - Fix declaration of content_model and content_format fields.
 * - includes/ContentHandler.php does not exist, it's includes/content/ContentHandler.php
 * - Add separate fa_sha1 field to filearchive table
 * - Rebuild MessagesEn.php
 * - Make maintenance/dev/'s .sh files executable.
 * - action=info displays misleading edit history for redlinks
 * - Only show deletedOnly checkbox on contribs and history if the user can see deleted entries
 * - Delete more thumbnails after parser tests.
 * - Fix XHTML in Special:Upload form labels
 * - Add images/lockdir to .gitignore.
 * - ResourcesTest: Assert that all registered resources in RL exist.
 * - Update jQueryUI to 1.8.24
 * - Disable minor edit for page/section creation by API
 * - optimize API query generator list
 * - EditPage: Use content language to truncate for database
 * - PostDatabaseUpdateMaintenance: childs checks updatelog already
 * - Update @since tags from 1.20 to 1.21
 * - Added note about sites functionality into the release notes
 * - Added sites functionality, a much more generic and flexible version of the existing interwiki code
 * - Skip parser tests if main NS isn't wikitext.
 * - Silence warnings about deprecation by ContentHandler.
 * - [] Fix SearchEngineTest etc with non-wikitext content.
 * - Updates findHooks.php for ContentHandler changes.
 * - Add *_content_(model|format) fields to PostgreSQL
 * - Initial stab at responsive images for screen densities.
 * - Additional tests to keep Parsoid on track.
 * - Prefix new ContentHandler hooks in WikiPage with Page instead of Article
 * - Allow ORMTable to access a foreign wiki.
 * - fix typoed in EditPage-&gt;mPreloadContent
 * - introducing MW_SUPPORTS_CONTENTHANDLER for fun and profit
 * - remove exception, introduced with content handler merge
 * - Show redirects correctly on diff pages.
 * - Cache resources for anonymous users
 * - Tidy up InfoAction and note it's hook in docs/hooks.txt
 * - Avoid thumb.php fatal for bad titles on private wikis.
 * - Remove a bunch of trailing spaces and unneeded newlines
 * - Fix the jqueryMsg tests for plural rule parsing
 * - Add three tests for categories mixed with templates.
 * - * Oracle schema update: rc_moved, cat_hidden, ss_admin * tables.sql + updater patches for *_content_(model|format) fieldswq
 * - Fix test SpecialSearchTest.testSearchTermIsNotExpanded
 * - Stop expanding search term in &lt;title&gt; of the search results page
 * - Display converted namespace names in Html::namespaceSelector.
 * - Check headers for default variant when initializing default user options.
 * - Fix Ibcb23c81, and tweak array merge order
 * - Add a message key from ContentHandler merge to messages.inc
 * - Remove artefact from the ContentHandler merge
 * - Updated/added include/template tests to reflect Parsoid support.
 * - Fix flush-like commit in DeferredUpdates.
 * - Fix creation of pages in the MediaWiki namespace.
 * - Fix merge artifact in Article::showCssOrJsPage.
 * - Report legacy hook handlers.
 * - Silenice trx warnings from LoadBalancer.
 * - Remove unused variables.
 * - Replace deprecated call.
 * - Update docs for return and exception info
 * - Removed useless $title parameter to InfoAction::pageInfo
 * - Avoid direct access to $wgGroupPermissions
 * - Add version number to deprecated setting
 * - Make jquery.makeCollapsible less slow.
 * - Clean and repair many phpunit tests (+ fix implied configuration)
 * - Fix race condition in User::addToDatabase
 * - Fix HtmlTest, XmlTest; Add setMwGlobals method to base TestCase.
 * - Add parameters to LanguageQqx-generated messages.
 * - Update version to 1.21.
 * - Release notes tweaks.
 * - Cleanup of Wikidata branch.
 * - Fix typo in comment.
 * - Fix usage of deprecated ArticleSaveComplete hook in core
 * - Disable transaction warnings for automatic trx.
 * - Fix behavior of Hooks class.
 * - Phase out tests/jasmine; Update mediawiki i18n tests
 * - Deprecate $wgSharedDB
 * - Remove some unused local variables.
 * - Fix issue with link in history line for revs hidden from sysops
 * - Fix an issue with the data-sort-type retrieval.
 * - Simplify code for usertools in RollbackAction
 * - Revert my changes to includes/actions/CreditsAction.php
 * - mw.loader: Fix comma-joined 404 error.
 * - Add warnings to install.php for files-options
 * - Add passfile option to install.php
 * - [FileBackend] Removed pointless container process cache invalidation for Swift.
 * - Add userToolLinks to action=info
 * - Remove obsolete comment.
 * - Use parseAsBlock instead of parse to show the error message in OutputPage::showErrorPage
 * - The &quot;login again&quot; link on Special:Userlogout now has returnto parameter
 * - pass user object for delete/undelete/filerevert in api/gui
 * - Don't mangle &amp;nbsp; in on-wiki JS.
 * - Remove autoloader for deprecated Database class
 * - [FileBackend] Tweaked FileBackendMultiWrite behavior to fix test leakage.
 * - Remove deprecated 1.7 SpecialPage::addPage
 * - Remove deprecated 1.16 wfLoadExtensionMessages
 * - Remove deprecated 1.16 Legacy support: Database == DatabaseMysql
 * - Added missing entries in AutoLoader.
 * - [FileBackend] Tweaked TempFSFile::bind to handle __get.
 * - Don't display multiple language links to the same language
 * - Remove deprecated $wgAllowRealName
 * - Add @since tags too Hooks
 * - Add missing version number to wfDeprecated calls
 * - Make runLegacyHooks work around bug in Hooks.
 * - For now, use the parser cache only for wikitext.
 * - Clear the cached edit count within User::clearInstanceCache
 * - CologneBlue rewrite: rework otherLanguages, CSS: serif font
 * - SkinTemplate: extract formatLanguageName from outputPage
 * - Use ContentHandler as a factory for recirects.
 * - Add hook to info action to allow extensions to add extra information to a pages info
 * - Pass user object to some Revision::getText/Title::userCan calls
 * - Fix behaviour of namespaceSelector to match the documentation
 * - Replace remaining Array occurences with array
 * - Prevent page moved to different content model.
 * - Change Array to array
 * - fix merge of Iec98e472
 * - Remove left-over use of wfMsg
 * - copyedit
 * - set mediawiki version number
 * - added architecture documentation
 * - Updated export XSD to include model and format.
 * - Shutup some trx warnings
 * - else { if } makes no sense
 * - Added tests for well-nested &lt;noinclude&gt; uses in html attr context.
 * - CologneBlue rewrite: fix variantLinks
 * - CologneBlue rewrite: #toplinks fixes
 * - CologneBlue rewrite: kill the evil globals
 * - CologneBlue rewrite: fixup for unclickable site title
 * - CologneBlue rewrite: fix beforeContent and afterContent
 * - CologneBlue rewrite: fix sysLinks
 * - CologneBlue rewrite: don't display login/out links in sidebar
 * - CologneBlue rewrite: kill pageTitle, pageSubtitle, printableLink
 * - CologneBlue rewrite: kill pageStats and rewrite pageTitleLinks
 * - Added @since tag to IDBAccessObject.
 * - Added &quot;posdump&quot; option to syncFileBackend to dump the current position.
 * - A few action=info bugfixes and enhancements.
 * - - API: Call to a member function isGood on a non-object in ApiDelete.php
 * - Use canonical parser options per default
 * - Fix JS and CSS diffs
 * - Show a &quot;(blocked)&quot; hint on Special:ListUsers/ActiveUsers
 * - Add 'expandurl' to prop=extlinks/list=exturlusage
 * - Minor parameter documentation improvements on External Store classes
 * - Do not register absolute internal externals
 * - Parsoid-centric tests to RT-test comments-ws-pre interactions.
 * - [FileBackend] Suppress less warnings in doGetFileContentsMulti.
 * - Fixed documentation typo.
 * - Improved documentation
 * - Updated comment and pre-interaction tests with more cases.
 * - Rebuild MessagesEn.php
 * - Update messages.inc for Icd721011b4
 * - Add warning for unused params inside api
 * - Use User::getGroupsWithPermission
 * - Defer the watchlist update query in EditPage.
 * - ResourceLoader: Refactor style loading
 * - Additional template and pre-wrapping interaction tests.
 * - Improve documentation of maintenance scripts and test suite.
 * - Reorder keys for fileStoragePathsForOps function since its a list.
 * - Sane whitespace
 * - release note for
 * - Removed __NOHEADER__ magic word
 * - Fixup release notes
 * - Additional indent-pre and template interaction tests.
 * - jquery.byteLimit: Rewrite (fix, )
 * - Fix documentation of $wgProxyList
 * - Added test for parsing &amp;nbsp; in wikilinks.
 * - Use hasSubjectNamespace in Skin.php instead of namespace tests.
 * - more public accessors for Title class
 * - Convert valign HTML attribute into inline CSS
 * - Added test to allow &quot;|&quot; char between url and text in extlinks.
 * - Stylize
 * - Add action=info link to toolbox.
 * - Removed READ_LATEST default from Revision::newFromPageId.
 * - CologneBlue rewrite: remove stuff from pageTitleLinks that doesn't belong in there
 * - CologneBlue rewrite: get rid of some extra ugly HTML
 * - CologneBlue rewrite: kill mWatchLinkNum, watchThisPage is only called once now
 * - CologneBlue rewrite: finally a proper sidebar using standard functions
 * - CologneBlue rewrite: adjust the quickbar contents to 2012
 * - CologneBlue rewrite: start cleaning up the quickbar code
 * - CologneBlue rewrite: fix search form(s) generation
 * - CologneBlue rewrite: remove hard dependency on SkinLegacy, kill Quickbar nonsense
 * - Truncate SHA-1 indexes
 * - Changed notifyOnPageChange to use onTransactionIdle.
 * - Removed useless begin/commit calls as DBO_TRX is not on in cli mode.
 * - Split Content.php into one file per class.
 * - [FileBackend] Optimized concatenate to use getLocalReferenceMulti.
 * - [FileBackend] Added getFileContentsMulti and improved it for Swift.
 * - [FileBackend] Added getLocalCopyMulti and getLocalReferenceMulti.
 * - Add parameters to ArticleDeleteComplete.
 * - Don't assume main namespace contains wikitext
 * - Support explicit 0 and 1 forms for plural in PHP
 * - get rid of Revision::getText
 * - Comment cleanup
 * - Make EditPage fail on non-textual content.
 * - Fix preview and diff for deleted revisions.
 * - Introducing ContentHandler::canBeUsedOn
 * - fix spurious failure of TimestampTest
 * - adding @group Database to more tests
 * - introducing ContentHandler::getPageViewLanguage
 * - merge latest master.
 * - Restore (some) globals after each test
 * - Don't clone content, may need state
 * - Convert -{}- markups in title=&quot;&quot; and alt=&quot;&quot;.
 * - handle bad content model in SpecialBooksources
 * - Fix for section title when creating new talk page
 * - make MessageContent use a Message object
 * - suppress deprecation warnings about getText in tests
 * - make *ContentTest more robust against leaked state
 * - merged master
 * - Revert &quot;merged master&quot;
 * - clear magicword cache before testing cleanSig
 * - merged master
 * - Replace usage of doEdit with doEditContent
 * - EditPage cleanup - parser errors, etc
 * - Avoid deprecation warnings in test cases.
 * - Updating of redirect target in Content objects
 * - Fix error display on failing rollback
 * - Show HTTP error (if any) when scary transclusion fails
 * - Check prepareSave before undeleting.
 * - Fixing creation of DifferenceEninge
 * - Revert all changes to DairikiDiff.
 * - cherry-pick bdaee6f6594532409ce55e9cde0f942f96ec4181
 * - add docs for getContentInternal
 * - Add Content::matchMagicWord
 * - Make LinkFilter handle Content objects
 * - cleaned up comments in DifferenceEngine
 * - Made ApiParse aware of ContentHandler
 * - Improved content model handling in ApiEditPage
 * - Revision::getContent must return clone if mutable
 * - : Function for running legacy hooks.
 * - fixing long lines
 * - merging latest master
 * - Added utility method taking an array of elements and wrapping each element in it's own array.
 * - add Article::setParserOptions
 * - Added fixme for incorrect assumption being made
 * - mark WikitextContent tests as requiring database
 * - fix logic bug in assertArrayEquals
 * - fix some tests to work with =false
 * - fix WikiPage::getDeletionUpdates for cases where no content object is present.
 * - ported fix for to getContent
 * - Comment out call causing an error and assigning to an unused var anyway
 * - Moved getParserOutput to Content interface.
 * - moved getDeletionUpdates to Content interface
 * - fix replaceSection for models that don't support sections
 * - getUndoContent added to get undo working again for WikiText
 * - Added assertArrayEquals method to MediaWikiTestCase to avoid duplicating asort and array_values all over the place
 * - CLI install exited with 0 status code
 * - RevisionTest might need database access
 * - We need this 'AfterFinalPageOutput' hook for the STTLanguage extension.
 * - Improve names of factory methods in ORMTable. Now its clear that they create rows and not tables
 * - Add missing entry in autoloader for abstract test base class
 * - Call new Content::prepareSave from WikiPage::doEditContent.
 * - remove test for obsolete getModelName function
 * - determine getPageLanguage via ContentHandler
 * - [] string ids for content model and format.
 * - make ApiEditPage aware of content model and format.
 * - allow getParserOutput to be overwritten in DifferenceEngine
 * - merged master
 * - improved failure message for timing-dependant test case
 * - check for &lt;/revision&gt; only once. fix parameter list.
 * - remember to bump schema version and update xsd
 * - fix typo in error message
 * - fix php error
 * - support symbolic name for content models
 * - undo misguided changes to phpunit
 * - Fix indenting errors introduced in Wikidata branch
 * - fixed : permission errors running BaseDumpTest on Windows
 * - made DifferenceEngine::getRevisionHeader protected, so we can override it.
 * - use 'contentformat' instead of 'textformat' in result
 * - Use class-static var for storing ContentHandler singletons.
 * - Clean up comments and whitespace
 * - Added @group database to ContentHandlerTest.
 * - fixed LinksUpdateTest: must use transaction.
 * - make SqlDataUpdate connect to database only when starting the transaction, not in the constructor
 * - un-deprecate WikiPage::getAutoDeleteReason
 * - make ApiPurge use ContentHandler for parsing
 * - make revision api aware of content models
 * - use Message::content to get message content
 * - use Message::content to get message content
 * - fix indent, cleanup comments
 * - fix broken global reference
 * - apply preSaveTransform to script pages
 * - minor cleanup in comments in ContentHandler
 * - fix logic error
 * - some cleanup in WikiPage
 * - some cleanup in Title and WikiPage
 * - make sure page_content_model gets loaded where appropriate in Title and LinkCache
 * - make Message content available as Content object
 * - Moved redirect extraction from Title to WikitextContent.
 * - make getContentObject public for now, fix occurances later
 * - introduced ContentHandler::supportsSections
 * - use getWikitextForInclusion to get message text from MediaWiki namespace
 * - making Content an interface, introducing AbstractContent as a base class
 * - nicer phpunit
 * - get rid of nonsensical $text parameter in WikiText::isRedirect
 * - get rid of nonsensical $text parameter in WikiText::isRedirect
 * - cleanup for comments and edge cases
 * - generate links and other secondary data for RefreshLinks via ContentHandler
 * - comments and reminders for stuff not yet covered by ContentHandler
 * - generate links and other secondary data for RefreshLinks via ContentHandler
 * - render file description via ContentHandler
 * - use Content::getWikitextForTransclusion for message text
 * - use getSerializedData when compressing the text store.
 * - added some fixme reminders for providing preview text for content objects
 * - include serialized content in new pages feed
 * - use Content::getTextForSearchIndex
 * - use Content::getWikitextForTransclusion when fetching template text
 * - make isValidMoveTarget use content object instead of regular expressions
 * - getting rid of getRawText
 * - Added consistency checks to Revision.
 * - some cleanup and checks in the Revision class
 * - cleanup and fixes for secondary data updates
 * - always record content model and format in export/dumps
 * - include sha1 in export. this went missing somehow.
 * - moved rendering logic from Content class to ContentHandler class
 * - changed signature of ContentHandler::getDeletionUpdates ro remove cross-dependency with WikiPage
 * - fixing getAutoDeleteReason:
 * - comments and fixes from review session with tim.
 * - copyediting comments
 * - skip test for WikitextContentHandler::merge3 if $wgDiff3 isn't configured
 * - fix EditAction not to use ContentHandler
 * - fix EditAction not to use ContentHandler
 * - adding workaround for php in the autoloader
 * - make Wikidata the default branch for git-review
 * - B/C: making Article::getchContent public again
 * - removed Content::diff again. Don't need it for now, causes some pain
 * - content validation, global consistency check
 * - content diff
 * - Use Title, not IContextSource; remove createArticle, etc.
 * - introducing Content::getSecondaryDataUpdates
 * - fixing AutoLoader entry for ApiFormatNone which got lost during merge
 * - make sure content_model is an int
 * - fix usage of wgOut in Article
 * - fix: SecondaryDataUpdate -&gt; DataUpdate
 * - sync comments to master
 * - get deletion updates from content handler and hook
 * - no generic edit page
 * - poked at adding diff stuff but gave up and just left some todos
 * - Use integers for content_model and content_format.
 * - fixed from one error to another, clumsy me..
 * - Minor spelling correction
 * - nicify field declerations
 * - fix var name
 * - add since tags
 * - fix null check and compacted/calrified code
 * - implement feature switch for ContentHandler database integration, to allow for easy deployment
 * - spaces -&gt; tabs
 * - spaces -&gt; tabs
 * - fixing insertion into archive table upon delete
 * - adding sanity checks to find out why testDoRollback is failing on jenkins
 * - fixing method signature of serialize
 * - transactions for SecondaryDataUpdate
 * - using SecondaryDataUpdate to clean up after deletion
 * - spaces -&gt; tabs
 * - backporting changes made during review of core patch
 * - documented new hooks, deprecated old hooks
 * - spaces -&gt; tabs
 * - removed use of getNativeData from WikiPage
 * - spaces -&gt; tabs
 * - removed use of getNativeData from WikiPage
 * - docu cleanup; marked contenthandler stuff as @since 1.WD
 * - fix test: use text/x-wiki, not application/x-wiki
 * - spaces -&gt; tabs
 * - reset namespace caches when testing extra namespace handling
 * - explicitly define user objects for testing
 * - allow namespace caches to be reset for testing
 * - use text/x-wiki instead of application/x-wiki, as per brions comment on wikitech-l
 * - spaces -&gt; tabs
 * - documentation cleanup; rm unreachable code
 * - spaces -&gt; tabs
 * - type hinting
 * - spaces -&gt; tabs
 * - use application/x-wiki, not application/x-wikitext
 * - documentation and minor bugs
 * - introducing WikiPageTest
 * - minor bugs and docu
 * - replaceSection should replace entire content if the section id is the empty string.
 * - docu fix: declare param type
 * - use ContextSource in WikiPage::getParserOutput and PoolWorkArticleView
 * - in isCountable, take model and format from edit info. (also some documentation fixes)
 * - introducing ContentHandler::isParserCacheSupported
 * - fix doQuickEdit
 * - added tests for content model stuff to RevisionTest
 * - phpunit tests for JavascriptContent and CssContent
 * - phpunit tests for JavascriptContent and CssContent
 * - fix replaceSection: return null for content models that don't support sections
 * - added unit tests for WikitextContent
 * - fixing Content::equals: removing debug code, etc
 * - use ContextSource with isCountable
 * - test cases for WikitextContentHandler
 * - added todo
 * - fix redirect detection in getAutosummary
 * - preserve content model and format in xml dump, use in import
 * - make sure revisions are created consistently in case a content object is supplied
 * - fix page creation for non-wikitext system messages
 * - update page_content_model from revision
 * - fix handling of per-revision content model if different from title's default content model
 * - bugfix: provide context for getParserOutput
 * - test ContentHandler::getForTitle
 * - check content model in ContentHandler::merge3
 * - test ContentHandler::makeContent
 * - more tests for ContentHandler::getContentText
 * - tests for ContentHandler::getContentText
 * - more tests for Title
 * - some todo comments
 * - first test cases. found and fixed a bug in Title::isCssJsSubpage
 * - fix return value
 * - $context can't be null since we are later getting its title
 * - fixed size-checks on non-existing revisions
 * - fix incomplete rename of unserialize to unserializeContent
 * - renamed getDifferenceEngine to createDifferenceEngine
 * - added Content::copy
 * - renamed emptyContent to makeEmptyContent
 * - renamed serialize/unserialize to serializeContent/unserializeContent
 * - pass context instead of title to getParserOutput
 * - use ParserOutput::getSecondaryDataUpdates as the primary method of getting pending updates
 * - contextSource instead of Title
 * - fix typo
 * - another attempt to merge EditPage (untested)
 * - New API format 'none', used to minimize the response size when the output is not needed.
 * - merging incoming
 * - add fixme
 * - allow CotentHandler to override actions
 * - documenting Content class
 * - more documentation for ContentHandler
 * - some documentation for ContentHandler
 * - make html generation optional in Content::getParserOutput
 * - EditPage::getOriginalContent should not use Article::getContent
 * - make Article::getContentObject protected. Not a good way to get revision content\!
 * - minor cleanup
 * - minor cleanup, added todos and attempted (but aborted) refactoring to make stuff more sane
 * - attempt to fix issues due to incorrect merge conflict resolving, might have missed some, and solutions might introduce new issues on their own
 * - cleanup and conflict fix
 * - some cleanup
 * - Fix tabbing
 * - use ParserOutput::getLinksUpdateAndOtherUpdates in order to get all necessary update objects
 * - Added an array of SecondaryDataUpdate objects to ParserOutput
 * - make SecondaryDataUpdate even more abstract
 * - Introducing abstract base classes for LinksUpdate, so we can nicely handle updates to other kinds of secondary data.
 * - fix getAutosummary for cases where is empty
 * - Revert &quot;Introducing abstract base classes for LinksUpdate&quot;: wrong branch.
 * - Introducing abstract base classes for LinksUpdate, so we can nicely handle updates to other kinds of secondary data.
 * - fix effective content model for non-existing pages
 * - gitreview file for the Wikidata branch
 * - clean up comments &amp; hints
 * - clean up handling of JS/CSS pages
 * - reminder
 * - tabs
 * - trigger http error when non-text content is requested using action=raw
 * - handle parse errors sanely
 * - mark _DiffOf_XXX etc for refactoring
 * - catch exceptions while generating auto delete reason
 * - us isCssOrJsPage only for script pages actually used in the UI, not all pages containing CSS or JS
 * - minimize use of textual page content, clean up hooks for custom page rendering
 * - use factory method to get difference engine everywhere
 * - prepare DifferenceEngine for subclassing
 * - assert correct content model and format
 * - some fixes for data editing
 * - baby steps towards editing structured data
 * - $wgContentHandlerTextFallback
 * - use content-based diff
 * - EditPage to use Content objects
 * - reworking EditPage to use the content object - work in horrible progress
 * - doEdit, etc
 * - fix JS/CSS view
 * - getUndoContent
 * - auto-summary, auto-delete-reason
 * - isCountable
 * - avoid getNativeData
 * - getNativeData
 * - messing with wfMerge
 * - messing with replaceSection
 * - prep getSection, replaceSection
 * - create Article, EditPage and ExternalEdit via ContentHandler
 * - fixed bad calls
 * - fixed several bugs (this is still a mess)
 * - installer/updater
 * - replacing deprecated getText, etc
 * - adapted WikiPage and Article (work in progress)
 * - integration with Title and Revision (work in progress)
 * - first brain dump for ContentHandler interface

AbuseFilter

 * - Fix some errors on the main AbuseFilter page
 * - Maintenance for AbuseFilter extension.

CentralAuth

 * - Warn before deleting a global account
 * - Update User::addToDatabase for I1f6ef5e6319bfe692fb82a3fa50dc66c9fde8f15
 * - Make Special:GlobalGroupPermissions more readable in read only modus
 * - Make Special:GlobalUsers consistent with Special:ListUsers
 * - Make AbortAutoAccount useful for other extensions.

CodeReview

 * - Fix a couple of fatals
 * - Restore CodeRevision::makeStateMessageKey
 * - Maintenance for CodeReview extension.

CommunityHiring

 * - Deglobalize and replace deprecated calls.

CommunityVoice

 * - Minor extension maintenance.

ConfirmEdit

 * - Set READ_LATEST for Revision query.
 * - Added getMessage method

ContactPageFundraiser

 * - Use OutputPage::addWikiMsg instead addWikiText for a single messages
 * - Maintenance for ContactPageFundraiser extension.

ContributionTracking

 * - Maintenance for ContributionTracking extension.

DonationInterface

 * - Changing the setNormalizedAmount function to be less horrible.
 * - Unsetting alternate amount fields once we have normalized the amount
 * - Switching default city to None

DoubleWiki

 * - Maintenance for DoubleWiki extension.

E3Experiments

 * - Remove old PEF CSS

Echo

 * - Tweak description message.
 * - Tweak 'echo-no-title'
 * - Don't use hardcoded brackets
 * - Maintenance for Echo extension.

EmailCapture

 * - Replace deprecated methods and use context
 * - Maintenance for EmailCapture extension.

ExpandTemplates

 * - Break long lines, update whitespace and use __DIR__
 * - Fix for Ibfc5f681 (6ac3991): removed incorrect &lt;nowiki&gt;

ExtensionDistributor

 * - Maintenance for ExtensionDistributor extension.

FlaggedRevs

 * - Fixed review stats function for logged-in users (not used yet).
 * - Use READ_LATEST for some Revision queries.

FundraiserLandingPage

 * - Bumping the S:FLP cache time to 10 minutes from 5 minutes.

GeoData

 * - Work around PECL Sphinx connector bug

GlobalBlocking

 * - Whitespace and indentation update.
 * - Replace deprecated methods and deglobalize

InputBox

 * - Explicit dir attribute for input boxes

LiquidThreads

 * - Use only static Linker functions
 * - Uncaught ReferenceError: $thread is not defined
 * - Fix drag-and-drop and improve error handling
 * - Partial revert of Id5221b92: Don't use WikiPage::factory.
 * - More maintenance for LiquidThreads.
 * - Numerous method documentation parameter type additions
 * - Fix and

MWSearch

 * - Replace deprecated methods and remove unused local variables

Math

 * - Replace remaining wfMsg* call.

Narayam

 * - Remove beta status to probhat
 * - Remove the expensive event listeners

Nuke

 * - Added option to limit page selection by namespace

OggHandler

 * - Replace use of deprecated wfMsg.

Oversight

 * - Replace deprecated calls.

ParserFunctions

 * - ParserFunctions extension maintenance.
 * - Use Parser::incrementExpensiveFunctionCount direct for ifexist

PdfHandler

 * - Tidy up some documentation
 * - Display metadata from PDF files on image description page.

PostEdit

 * - Fix JS config var access; whitespace; unused globals
 * - change extension type to 'Other'
 * - Show PostEdit popup when saving redirects
 * - Prevent re-display of confirmation
 * - Don't rely on referrer to detect post-edit

ProofreadPage

 * - Actually, remove transactions, they're not rolling back on errors
 * - Fixup $dbw-&gt;commit with no $dbw-&gt;begin counterpart
 * - Replace deprecated wfMsg* calls.
 * - Delete translated text from qqq section.

Quiz

 * - Maintenance for Quiz extension.

RSS

 * - Maintenance for RSS extension.

Scribunto

 * - Replace remaining wfMsgExt calls.
 * - Reformat JavaScript and CSS code.
 * - Replace deprecated methods.
 * - Tweaks and fixes suggested by JSHint/JSLint.

ShortUrl

 * - Maintenance for ShortUrl extension.

SpamBlacklist

 * - Update User::addToDatabase call for I1f6ef5e6319bfe692fb82a3fa50dc66c9fde8f15

StrategyWiki

 * - Maintenance for StrategyWiki extension.

SubPageList3

 * - Replace deprecated wfMsg.

SwiftCloudFiles

 * - Set CURLOPT_TIMEOUT for sanity in some places.
 * - Fixed Content-Length handling for 0-sized objects.
 * - Detect 411 HTTP errors and fixed boolean error check.
 * - Reuse the curl_multi handle and fixed remove_handle call order.

TimedMediaHandler

 * - -- fixes the location of timed media hander sql file
 * - Fix for SQLite DBs.

Translate

 * - Remove obsolete check-blacklist.php.
 * - Partial revert of Id87f3922. This caused exporting of untranslated messages
 * - Add global for check blacklist, default disabled.
 * - Bump version.
 * - Use DifferenceEngine::$mNewText before 1.21, $mNewContent after
 * - Update check blacklist.
 * - Constant for contenthandler use
 * - Follow-up I186669a5 in core: Rename hooks
 * - Make tests pass after contenthandler merge
 * - Removing broken, unused script gathering dust
 * - Take inline editor out of beta status
 * - Less globals
 * - Some test cleanup
 * - JavaScript tweaks.
 * - Remove unused TranslationHelpers::doBox
 * - Deglobalize Translate
 * - I18n#1741 - Metadata handling in JsonFFS
 * - Fix exporting of untranslated messages
 * - Use correct function name
 * - Get rid of remaining wfMsgExt call in Translate
 * - Replace wfMsg with wfMessage in TPException
 * - Replace Array by array
 * - Renamed MessageGroupWorkflowStateUpdaterJob for consistency
 * - Refactored message group states
 * - Use Revision::READ_LATEST where needed.
 * - Remove superfluous newlines.
 * - Missing action-pagetranslation message
 * - Trivial cleanup
 * - Documentation and cleanup
 * - Added TranslateEventMessageGroupStateChange event
 * - Tests to make sure hooks.txt is up to date
 * - Introduce event concept
 * - Added missing existing hooks in Translate to hooks.txt
 * - Fixing a bug in API group review where state could not be changed.
 * - A little cleanup
 * - Move spyc under libs
 * - Move RcFilter to utils
 * - Enable page translation by default
 * - Avoid exporting files without translations
 * - Unify cli and web export to be more similar

TranslationNotifications

 * - Made it possible to specify language number

TrustedXFF

 * - Some fixes to the &quot;update&quot; script

UnicodeConverter

 * - Maintenance for UnicodeConverter extension.

UploadWizard

 * - Restore change-Id: I004ca4dba2569a9e7bb1e87c1d4b3474b6e63b44

UserThrottle

 * - Maintenance for UserThrottle extension.

VipsScaler

 * - Replace deprecated methods.

VisualEditor

 * - Ignore backspace keypress
 * - Ignore non-content keypresses
 * - Fix bold and italic key commands in surfaceView.
 * - Added support for Ime in IE. In IE when starting IME sequence 'compositionStart' is called to late, but fortunatelty we can do all necessary job in handler for 'keyDown'.
 * - Fix UI for annotation API changes
 * - Added multiple name registration to ve.Factory
 * - Reversed the default value of autoSelect in surface fragments
 * - Fix context icon in surfaceView
 * - Fix standalone demo.
 * - Add a missing reference to file ve.dm.SurfaceFragment.js inside index.php for standalone demo.
 * - New annotation API: update tests
 * - New annotation API: ve.ce.TextNode integration
 * - New annotation API: ve.dm.Converter integration
 * - New annotation API: convert existing annotations
 * - New annotation API: Annotation and AnnotationFactory classes
 * - Revert &quot;No longer create zero-length text nodes&quot;
 * - Refactored method ve.ce.Surface.handleInsertion. Now handling slug and insertion annotations is combined.
 * - Native cursor movement
 * - Added missing call to surfaceObserver.clear;
 * - Support for pre-unannotating test
 * - Added missing reference to SurfaceObserver in VisualEditor.php
 * - Introduce new method in ve.ce.Surface called handleInsertion that is responsible for the magic around inserting content with new annotation, or in a slug, or with IME.
 * - Add ve.getProp
 * - Support custom hashes in ve.getHash
 * - Add ve.getOpeningHtmlTag
 * - Add setDOMAttributes
 * - Added reversed boolean for translateOffset
 * - No longer create zero-length text nodes
 * - Created simple debug tool - that compares data between DOM and Model - very useful while working on SurfaceObserver and text insertion stuff.
 * - inheritClass: Implement inherited 'static' property for classes.
 * - Removing onKeyPress return statement
 * - ve.Factory: No need for a-b-c workaround, createObject and apply.
 * - Fix constructor names; remove redundant hasOwnProperty.
 * - Add missing return in ve.getDOMAttributes
 * - Update ve.ce.Surface to call SurfaceObserver.stop/start/clear instead of stopPolling/startPolling/clearPollData.
 * - Changed method name to setAutoSelect to avoid collision
 * - Small clean-up in ve.ce.Surface constructor.
 * - Created QUnit tests for ve.Document.selectNodes method (mode &quot;branches&quot;)
 * - Fix minor bug with incorrect usage of hasSlugAtOffset.
 * - Start using ve.ce.SurfaceObserver inside ve.ce.Surface. Moved methods getOffsetOfSlug, getOffsetFromElementNode, getOffsetFromTextNode and getOffset to ve.ce.js and made them static.
 * - Retire ve.ce.Surface.render variable and instead of it use variable &quot;locked&quot; via methods lock, unlock and isLocked.
 * - Initial import of ve.ce.SufaceObserver
 * - Setup variable ve.debug to true when ve.debug.js is loaded.
 * - Got tests working again
 * - Add 'branches' mode to ve.Document.selectNodes method. Tests TBD.
 * - Created method getSlugAtOffset in ve.ce.Document and ve.ce.BranchNode, refactored the way how slugs are added.
 * - Alter the target of the Feedback link to be the right page.
 * - Fix transaction bug with Roans help.
 * - Added surface model lock and unlock events
 * - Add utility function to get DOM attributes as a plain object
 * - Using getRelativeContentOffset for insertAnnotations
 * - Make getDomText return an empty string for slugs
 * - Add exception to getAnnotationsFromOffset for easier debugging
 * - Throw an error for bad offsets in getNodeFromOffset

WebFonts

 * - Various updates for WebFonts.

WikimediaMaintenance

 * - More logging
 * - Fixes that worked on WMF

WikimediaMessages

 * - These temporary messages aren't needed anymore
 * - Consistency tweak

ZeroRatedMobileAccess

 * - remove invalid 'align' attribute
 * - refactor banners to make use of generic classes
 * - Rephrase as a question. Makes more sense.

intersection

 * - Maintenance for intersection extension.

skins

 * - Updates for skins.