RELEASE-NOTES-1.30: Add upgraded, added libraries based on git history
[mediawiki.git] / RELEASE-NOTES-1.30
blobd92c38c1e0eb149d92f8a02e5130b63aeff18475
1 == MediaWiki 1.30 ==
3 THIS IS NOT A RELEASE YET
5 MediaWiki 1.30 is an alpha-quality branch and is not recommended for use in
6 production.
8 === MySQL version requirement in 1.30 ===
9 As of 1.30, MediaWiki now requires MySQL 5.5.8 or higher (see Compatibility
10 section).
12 === Configuration changes in 1.30 ===
13 * The "C.UTF-8" locale should be used for $wgShellLocale, if available, to avoid
14   unexpected behavior when code uses locale-sensitive string comparisons. For
15   example, the Scribunto extension considers "bar" < "Foo" in most locales
16   since it ignores case.
17 * $wgShellLocale now affects LC_ALL rather than only LC_CTYPE. See
18   documentation of $wgShellLocale for details.
19 * $wgShellLocale is now applied for all requests. wfInitShellLocale() is
20   deprecated and a no-op, as it is no longer needed.
21 * $wgJobClasses may now specify callback functions as an alternative to plain
22   class names. This is intended for extensions that want control over the
23   instantiation of their jobs, to allow for proper dependency injection.
24 * $wgResourceModules may now specify callback functions as an alternative
25   to plain class names, using the 'factory' key in the module description
26   array. This allows dependency injection to be used for ResourceLoader modules.
27 * $wgExceptionHooks has been removed.
28 * (T163562) $wgRangeContributionsCIDRLimit was introduced to control the size
29   of IP ranges that can be queried at Special:Contributions.
30 * (T45547) $wgUsePigLatinVariant added (off by default).
31 * (T152540) MediaWiki now supports a section ID escaping style that allows to display
32   non-Latin characters verbatim on many modern browsers. This is controlled by the
33   new configuration setting, $wgFragmentMode.
34 * $wgExperimentalHtmlIds is now deprecated and will be removed in a future version,
35   use $wgFragmentMode to migrate off it to a modern alternative.
36 * $wgExternalInterwikiFragmentMode was introduced to control how fragments in
37   sinterwikis going outside of current wiki farm are encoded.
38 * (T120333) Soft-deprecated the use of PHP extension 'mysql' in favor of 'mysqli'.
39   This PHP extension was deprecated in PHP 5.5 and removed in PHP 7.0. MediaWiki
40   auto-selects the 'mysqli' driver since MediaWiki 1.22, except if explicitly
41   requested through the configuration parameter $wgDBservers.
42 * $wgOOUIEditPage was removed, as it is now the default. This was documented as a
43   temporary variable during the migration period.
45 === New features in 1.30 ===
46 * (T37247) Output from Parser::parse() will now be wrapped in a div with
47   class="mw-parser-output" by default. This may be changed or disabled using
48   ParserOptions::setWrapOutputClass().
49 * (T163562) Added ability to search for contributions within an IP ranges
50   at Special:Contributions.
51 * Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software-
52   specific tags to be added by users.
53 * Added a 'ParserOptionsRegister' hook to allow extensions to register
54   additional parser options.
55 * (T45547) Included Pig Latin, a language game in English, as a
56   LanguageConverter variant.  This allows English-speaking developers
57   to develop and test LanguageConverter more easily.  Pig Latin can be
58   enabled by setting $wgUsePigLatinVariant to true.
59 * Added RecentChangesPurgeRows hook to allow extensions to purge data that
60   depends on the recentchanges table.
61 * Added JS config values wgDiffOldId/wgDiffNewId to the output of diff pages.
62 * (T2424) Added direct unwatch links to entries in Special:Watchlist (if the
63   'watchlistunwatchlinks' preference option is enabled). With JavaScript
64   enabled, these links toggle so the user can also re-watch pages that have
65   just been unwatched.
66 * Added $wgParserTestMediaHandlers, where mock media handlers can be passed to
67   MediaHandlerFactory for parser tests.
68 * Edit summaries, block reasons, and other "comments" are now stored in a
69   separate database table. Use the CommentFormatter class to access them.
70 ** This is currently gated by $wgCommentTableSchemaMigrationStage. Most wikis
71    can set this to MIGRATION_NEW and run maintenance/migrateComments.php as
72    soon as any necessary extensions are updated.
73 * (T138166) Added ability for users to prohibit other users from sending them
74   emails with Special:Emailuser. Can be enabled by setting
75   $wgEnableUserEmailBlacklist to true.
76 * (T67297) $wgBrowserBlacklist is deprecated, and changing it will have no effect.
77   Instead, users using browsers that do not support Unicode will be unable to edit
78   and should upgrade to a modern browser instead.
80 === External library changes in 1.30 ===
82 ==== Upgraded external libraries ====
83 * Updated justinrainbow/json-schema from v3.0 to v5.2.
84 * Updated mediawiki/mediawiki-codesniffer from v0.7.2 to v0.12.0.
85 * Updated wikimedia/composer-merge-plugin from v1.4.0 to v1.4.1.
86 * Updated wikimedia/relpath from v1.0.3 to v2.0.0.
87 * Updated OOjs from v2.0.0 to v2.1.0.
88 * Updated OOUI from v0.21.1 to v0.23.0.
89 * Updated QUnit from v1.23.1 to v2.4.0.
91 ==== New external libraries ====
92 * The class \TestingAccessWrapper has been moved to the external library
93   wikimedia/testing-access-wrapper and renamed \Wikimedia\TestingAccessWrapper.
94 * Purtle, a fast, lightweight RDF generator.
96 ==== Removed and replaced external libraries ====
97 * …
99 === Bug fixes in 1.30 ===
100 * (T151633) Ordered list items use now Devanagari digits in Nepalese
101   (thanks to Sfic)
103 === Action API changes in 1.30 ===
104 * (T37247) action=parse output will be wrapped in a div with
105   class="mw-parser-output" by default. This may be changed or disabled using
106   the new 'wrapoutputclass' parameter.
107 * When errorformat is not 'bc', abort reasons from action=login will be
108   formatted as specified by the error formatter parameters.
109 * action=compare can now handle arbitrary text, deleted revisions, and
110   returning users and edit comments.
111 * (T164106) The 'rvdifftotext', 'rvdifftotextpst', 'rvdiffto',
112   'rvexpandtemplates', 'rvgeneratexml', 'rvparse', and 'rvprop=parsetree'
113   parameters to prop=revisions are deprecated, as are the similarly named
114   parameters to prop=deletedrevisions, list=allrevisions, and
115   list=alldeletedrevisions. Use action=compare, action=parse, or
116   action=expandtemplates instead.
118 === Action API internal changes in 1.30 ===
119 * ApiBase::getDescriptionMessage() and the "apihelp-*-description" messages are
120   deprecated. The existing message should be split between "apihelp-*-summary"
121   and "apihelp-*-extended-description".
122 * (T123931) Individual values of multi-valued parameters can now be marked as
123   deprecated.
125 === Languages updated in 1.30 ===
126 MediaWiki supports over 350 languages. Many localisations are updated
127 regularly. Below only new and removed languages are listed, as well as
128 changes to languages because of Phabricator reports.
130 * Added: kbp (Kabɩyɛ / Kabiyè)
131 * Added: skr (Saraiki, سرائیکی)
132 * Added: tay (Tayal / Atayal)
133 * Removed: tokipona (Toki Pona)
135 ==== Pig Latin added ====
136 * (T45547) Added Pig Latin, a made-up English variant (en-x-piglatin),
137   for easier variant development and testing. Disabled by default. It can be
138   enabled by setting $wgUsePigLatinVariant to true.
140 === Other changes in 1.30 ===
141 * The use of an associative array for $wgProxyList, where the IP address is in
142   the key instead of the value, is deprecated (e.g. [ '127.0.0.1' => 'value' ]).
143   Please convert these arrays to indexed/sequential ones (e.g. [ '127.0.0.1' ]).
144 * mw.user.bucket (deprecated in 1.23) was removed.
145 * LoadBalancer::getServerInfo() and LoadBalancer::setServerInfo() are
146   deprecated. There are no known callers.
147 * File::getStreamHeaders() was deprecated.
148 * MediaHandler::getStreamHeaders() was deprecated.
149 * Title::canTalk() was deprecated. The new Title::canHaveTalkPage() should be
150   used instead.
151 * MWNamespace::canTalk() was deprecated. The new MWNamespace::hasTalkNamespace()
152   should be used instead.
153 * The ExtractThumbParameters hook (deprecated in 1.21) was removed.
154 * The OutputPage::addParserOutputNoText and ::getHeadLinks methods (both
155   deprecated in 1.24) were removed.
156 * wfMemcKey() and wfGlobalCacheKey() were deprecated. BagOStuff::makeKey() and
157   BagOStuff::makeGlobalKey() should be used instead.
158 * (T146304) Preprocessor handling of LanguageConverter markup has been improved.
159   As a result of the new uniform handling, '-{' may need to be escaped
160   (for example, as '-<nowiki/>{') where it occurs inside template arguments
161   or wikilinks.
162 * (T163966) Page moves are now counted as edits for the purposes of
163   autopromotion, i.e., they increment the user_editcount field in the database.
164 * Two new hooks, LogEventsListLineEnding and NewPagesLineEnding, were added for
165   manipulating Special:Log and Special:NewPages lines.
166 * The OldChangesListRecentChangesLine, EnhancedChangesListModifyLineData,
167   PageHistoryLineEnding, ContributionsLineEnding and DeletedContributionsLineEnding
168   hooks have an additional parameter, for manipulating HTML data attributes of
169   RC/history lines. EnhancedChangesListModifyBlockLineData can do that via the
170   $data['attribs'] subarray.
171 * (T130632) The OutputPage::enableTOC() method was removed.
172 * WikiPage::getParserOutput() will now throw an exception if passed
173   ParserOptions that would pollute the parser cache. Callers should use
174   WikiPage::makeParserOptions() to create the ParserOptions object and only
175   change options that affect the parser cache key.
176 * Article::viewRedirect() is deprecated.
177 * IP::isValidBlock() was deprecated. Use the equivalent IP::isValidRange().
178 * DeprecatedGlobal no longer supports passing in a direct value, it requires a
179   callable factory function or a class name.
180 * The $parserMemc global, wfGetParserCacheStorage(), and ParserCache::singleton()
181   are all deprecated. The main ParserCache instance should be obtained from
182   MediaWikiServices instead. Access to the underlying BagOStuff is possible
183   through the new ParserCache::getCacheStorage() method.
184 * .mw-ui-constructive CSS class (deprecated in 1.27) was removed.
185 * Sanitizer::escapeId() was deprecated, use escapeIdForAttribute(),
186   escapeIdForLink() or escapeIdForExternalInterwiki() instead.
187 * Title::escapeFragmentForURL() was deprecated, use one of the aforementioned
188   Sanitizer functions or, if possible, Title::getFragmentForURL().
189 * Second parameter to Sanitizer::escapeIdReferenceList() ($options) now does
190   nothing and is deprecated.
191 * mw.util.escapeId() was deprecated, use escapeIdForAttribute() or
192   escapeIdForLink().
193 * MagicWord::replaceMultiple() (deprecated in 1.25) was removed.
194 * WikiImporter now requires the second parameter to be an instance of the Config,
195   class. Prior to that, the Config parameter was optional (a behavior deprecated in
196   1.25).
197 * Removed 'jquery.mwExtension' module. (deprecated since 1.26)
198 * mediawiki.ui: Deprecate greys, which are not part of WikimediaUI color palette
199   any more.
200 * CdbReader, CdbWriter, CdbException classes (deprecated in 1.25) were removed.
201   The namespaced classes in the Cdb namespace should be used instead.
202 * IPSet class (deprecated in 1.26) was removed. The namespaced IPSet\IPSet
203   should be used instead.
204 * RunningStat class (deprecated in 1.27) was removed. The namespaced
205   RunningStat\RunningStat should be used instead.
206 * MWMemcached and MemCachedClientforWiki classes (deprecated in 1.27) were removed.
207   The MemcachedClient class should be used instead.
208 * EditPage underwent some refactoring and deprecations:
209   * EditPage::isOouiEnabled() is deprecated and will always return true.
210   * EditPage::getSummaryInput() and ::getSummaryInputOOUI() are deprecated. Please
211     use ::getSummaryInputWidget() instead.
212   * EditPage::getCheckboxes() and ::getCheckboxesOOUI() are deprecated. Please
213     use ::getCheckboxesWidget() instead.
214   * Creating an EditPage instance without calling EditPage::setContextTitle() should
215     be avoided and will be deprecated in a future release.
216   * EditPage::safeUnicodeInput() and ::safeUnicodeOutput() are deprecated and no-ops.
217   * EditPage::$isCssJsSubpage, ::$isCssSubpage, and ::$isJsSubpage are deprecated. The
218     corresponding methods from Title should be used instead.
219   * EditPage::$isWrongCaseCssJsPage is deprecated. There is no replacement.
220   * EditPage::$mArticle and ::$mTitle are deprecated for public usage. The getters
221     ::getArticle() and ::getTitle() should be used instead.
222   * Trying to control or fake EditPage context by overriding $wgUser, $wgRequest, $wgOut,
223     and $wgLang is no longer supported and won't work. The IContextSource returned from
224     EditPage::getContext() must be modified instead.
225 * Parser::getRandomString() (deprecated in 1.26) was removed.
226 * Parser::uniqPrefix() (deprecated in 1.26) was removed.
227 * Parser::extractTagsAndParams() now only accepts three arguments. The fourth,
228   $uniq_prefix was deprecated in 1.26 and has now been removed.
229 * (T172514) The following tables have had their UNIQUE indexes turned into proper
230   PRIMARY KEYs for increased maintainability: categorylinks, imagelinks, iwlinks,
231   langlinks, log_search, module_deps, objectcache, pagelinks, query_cache, site_stats,
232   templatelinks, text, transcache, user_former_groups, user_properties.
233 * IDatabase::nextSequenceValue() is no longer needed by any database backends
234   (formerly it was needed by PostgreSQL and Oracle), and is now deprecated.
235 * (T146591) The lc_lang_key index on the l10n_cache table has been changed into a
236   PRIMARY KEY.
237 * (T157227) bot_password.bp_user, change_tag.ct_log_id, change_tag.ct_rev_id,
238   page_restrictions.pr_user, tag_summary.ts_log_id, tag_summary.ts_rev_id and
239   user_properties.up_user have all been made unsigned on MySQL.
240 * DB_SLAVE is deprecated. DB_REPLICA should be used instead.
241 * wfUsePHP() is deprecated.
242 * wfFixSessionID() was removed.
243 * wfShellExec() and related functions are deprecated, use Shell::command(). This also
244   slightly changes the behavior of how execution time limits are calculated when only
245   some of defaults are overridden per-call. When in doubt, always override both wall
246   clock and CPU time.
247 * (T138166) SpecialEmailUser::getTarget() now requires a second argument, the sending
248   user object. Using the method without the second argument is deprecated.
249 * (T67297) Browsers that don't support Unicode will have their edits rejected.
250 * (T178450) The module 'jquery.badge' is deprecated and will be removed in a future
251   release. For notifying the user of an event, the Notifications ("Echo") system
252   should be used instead.
254 == Compatibility ==
255 MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
256 HHVM 3.6.5 or later.
258 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
259 but support for them is somewhat less mature. There is experimental support for
260 Oracle and Microsoft SQL Server.
262 The supported versions are:
264 * MySQL 5.5.8 or later
265 * PostgreSQL 8.3 or later
266 * SQLite 3.3.7 or later
267 * Oracle 9.0.1 or later
268 * Microsoft SQL Server 2005 (9.00.1399)
270 == Upgrading ==
271 1.30 has several database changes since 1.29, and will not work without schema
272 updates. Note that due to changes to some very large tables like the revision
273 table, the schema update may take a long time (minutes on a medium sized site,
274 many hours on a large site).
276 Don't forget to always back up your database before upgrading!
278 See the file UPGRADE for more detailed upgrade instructions, including
279 important information when upgrading from versions prior to 1.11.
281 For notes on 1.29.x and older releases, see HISTORY.
283 == Online documentation ==
284 Documentation for both end-users and site administrators is available on
285 MediaWiki.org, and is covered under the GNU Free Documentation License (except
286 for pages that explicitly state that their contents are in the public domain):
288        https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
290 == Mailing list ==
291 A mailing list is available for MediaWiki user support and discussion:
293        https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
295 A low-traffic announcements-only list is also available:
297        https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
299 It's highly recommended that you sign up for one of these lists if you're
300 going to run a public MediaWiki, so you can be notified of security fixes.
302 == IRC help ==
303 There's usually someone online in #mediawiki on irc.freenode.net.