User:Mainframe98/Extension release checklist
Steps to take before releasing an extension (requesting a repository and creating a page in the extension namespace)
Steps
edit- Does the code run?
- Does the code meet the Coding conventions?
- Did you run a code sniffer to confirm the point above?
- Does running phan succeed?
- Does the code run on different MediaWiki versions, and is it known which version do and do not work?
- Are all the necessary files included in the package?
- LICENSE, containing the licensing (might also be named COPYING)
- extension.json
- README
- Localization in /i18n
- (Unit) tests (where applicable)
- .gitignore
- composer.json for any dependencies?
- package.json? (T94547)
- Do the (unit) tests (if any) succeed?
- Does the code work on the different environments MediaWiki supports?
- Different PHP versions?
- The different Database engines, such as MariaDB/MySQL vs Postgres vs SQLite
- Different operating systems like Windows, non-Debian related Unix distributions (so Raspbian and Ubuntu do not count)
- Especially file and folder names! Realize that Windows is case-insensitive, while Linux/Unix is NOT!
- Is it conflicting with other extensions? The most important (for Wikimedia at least) are found on Review queue.
- Are any Hacks documented and well reasoned?
- Is there documentation or notes available about edge cases, potential conflicts, expected issues? (Placing them on the Extension page is sufficient)
- Is the extension naming consistent throughout the extension?
- Are any dependencies expressed in the composer.json file?
- Similarly, are extension dependencies (which might not be available on packagist/with Composer) expressed in extension.json?
- Does the extension work in a different environment? (Think running MediaWiki on a separate device, like a Raspberry Pi or an offsite server)
- If the extension is UI related, does it work with RTL/LTR languages?
- Does the extension configuration make sense out of the box?
- Are any messages the extension used properly documented with the available templates in qqq.json?
- Is the code supported with constructive comments, and have the auto-generated comments and outdated TODO's been removed?
- Are rights added to the extension also made available to
$wgGrantPermissions
? - When namespaces are used, is the naming consistent and PSR-4 compatible?
- MediaWiki\Extensions\EXTENSIONNAME for extensions
- MediaWiki\Skins\SKINNAME for skins
- And, is the manifest version appropriate for the targeted versions of MediaWiki? Remember: Manifest version 2 is for MediaWiki 1.29 and above.
- Do the tests have coverage annotations?
Recommended reading:
edit- etherpad:p/highquality and its associated Phabricator task T172845.
- Now also on MediaWiki.org: Best practices for extensions.