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

  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 running phan succeed?
  5. Does the code run on different MediaWiki versions, and is it known which version do and do not work?
  6. 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)
  7. Do the (unit) tests (if any) succeed?
  8. 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!
  9. Is it conflicting with other extensions? The most important (for Wikimedia at least) are found on Review queue.
  10. Are any Hacks documented and well reasoned?
  11. Is there documentation or notes available about edge cases, potential conflicts, expected issues? (Placing them on the Extension page is sufficient)
  12. Is the extension naming consistent throughout the extension?
  13. Are any dependencies expressed in the composer.json file?
  14. Similarly, are extension dependencies (which might not be available on packagist/with Composer) expressed in extension.json?
  15. Does the extension work in a different environment? (Think running MediaWiki on a separate device, like a Raspberry Pi or an offsite server)
  16. If the extension is UI related, does it work with RTL/LTR languages?
  17. Does the extension configuration make sense out of the box?
  18. Are any messages the extension used properly documented with the available templates in qqq.json?
  19. Is the code supported with constructive comments, and have the auto-generated comments and outdated TODO's been removed?
  20. Are rights added to the extension also made available to $wgGrantPermissions ?
  21. 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.
  22. Do the tests have coverage annotations?

Recommended reading: edit