Tech:Adding a new extension

From Meta
Jump to navigation Jump to search

Any user can create a pull request to install and enable an extension, but it has to be merged by a sysadmin. If you want to add a new extension, request it here.

All of this stuff needs to be done before the steps above:

  1. Open a ticket for a Security Review
  2. Wait. We will review the extension following the MediaWiki extension developers' security checklist, among other things. If we notice a bug or a security vulnerability, we'll try to fix it or wait for the extension developers to fix it.
  3. On passing review, the extension needs to be added to the mediawiki repository: git submodule add -f -b <extension-branch> <extension-repo-url> extensions/<extension-name>. We generally use the branch for the current wiki version (e.g. REL1_36) if available, but if not you should use the master branch. Use the actual like to <extension-repo-url>, do NOT use the .git clone link as it will not work!
  4. edit .gitmodules to add ignore = dirty.

The above steps are for the mediawiki repository. The following are for the mw-config repository.

  1. LocalExtensions.php gets a $wmgUseFoo variable added.
  2. LocalSettings.php gets this setup:
    'wmgUseFoo' => [ 'default' => false, ],
  3. Add a line like the following to extension-list:
    $IP/extensions/Foo/extension.json
  4. ManageWikiExtensions.php gets a setting added as well. (Make sure to check if it requires another extension or if it should be restricted)
  5. If the extension has database tables, make sure to add them to the ManageWikiExtensions.php config!
  6. It is not required, but preferable that you also load it on test3wiki in order to make sure that everything works as intended
    Setup any other extension globals here.
  7. Then run the following script on mw11: deploy-mediawiki --world --config --l10n --gitinfo --servers=all

It should be noted that it is a good idea to add any configuration variable the extension adds to ManageWiki to save the effort of doing that at a later date and be user-friendly.