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, will soon be deployed to all Wikimedia sites in stages.

Deployment will start on Monday, October 15 and continue 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 three biggest changes

 * 1) The new ContentHandler might affect 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) "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

 * - optimize API query generator list
 * - 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.
 * - [] 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
 * - Fixed $wgSecureLogin after-login redirect.
 * - 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
 * - Merge branch 'Wikidata', remote-tracking branch 'origin/Wikidata' into Wikidata
 * - 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