User:Mainframe98/Extension release checklist

Steps to take before releasing an extension (requesting a repository and creating a page in the extension namespace)

Steps

 * 1) Does the code run?
 * 2) Does the code meet the Coding conventions?
 * 3) Did you run a code sniffer to confirm the point above?
 * 4) Does the code run on different MediaWiki versions, and is it known which version do and do not work?
 * 5) Are all the necessary files included in the package?
 * 6) * LICENSE, containing the licensing (might also be named COPYING)
 * 7) * extension.json
 * 8) * README
 * 9) * Localization in /i18n
 * 10) * (Unit) tests (where applicable)
 * 11) * .gitignore
 * 12) * composer.json for any dependencies?
 * 13) * Gruntfile.js and package.json? (T94547)
 * 14) Do the (unit) tests (if any) succeed?
 * 15) Does the code work on the different environments MediaWiki supports?
 * 16) * Different PHP versions?
 * 17) * The different Database engines, such as MariaDB/MySQL vs Postgres vs SQLite
 * 18) * Different operating systems like Windows, non-Debian related Unix distributions (so Raspbian and Ubuntu do not count)
 * 19) ** Especially file and folder names! Realize that Windows is case-insensitive, while Linux/Unix is NOT! Ensure that all folders are lowercase OR ensure the path in extension.json is properly capitalized. (Don't do this, use lowercase, which saves on issues)
 * 20) Is it conflicting with other extensions? The most important (for Wikimedia at least) are found on Review queue.
 * 21) Are any Hacks documented and well reasoned?
 * 22) Is there documentation or notes available about edge cases, potential conflicts, expected issues? (Placing them on the Extension page is sufficient)
 * 23) Is the extension naming consistent throughout the extension?
 * 24) Are any dependencies expressed in the composer.json file?
 * 25) Similarly, are extension dependencies (which might not be available on packagist/with Composer) expressed in extension.json?
 * 26) Does the extension work in a different environment? (Think running MediaWiki on a separate device, like a Raspberry Pi or an offsite server)
 * 27) If the extension is UI related, does it work with RTL/LTR languages?
 * 28) Does the extension configuration make sense out of the box?
 * 29) Are any messages the extension used properly documented with the available templates in qqq.json?
 * 30) Is the code supported with constructive comments, and have the auto-generated comments and outdated TODO's been removed?
 * 31) Are rights added to the extension also made available to ?
 * 32) When namespaces are used, is the naming consistent and PSR-4 compatible?
 * 33) * MediaWiki\Extensions\EXTENSIONNAME for extensions
 * 34) * MediaWiki\Skins\SKINNAME for skins
 * 35) * And, is the manifest version appropriate for the targeted versions of MediaWiki? Remember: Manifest version 2 is for MediaWiki 1.29 and above.
 * 36) Do the test have coverage annotations?

Recommended reading:

 * p/highquality and its associated Phabricator task T172845.
 * Now also on MediaWiki.org: Best practices for extensions.