Contributing

As you know Miraheze is a community-run wikifarm, operated by volunteers. And of course you can help too! If you want to help us please see below for possibilities to help.

Using our services
One of the easiest ways that any user can help Miraheze is by requesting a wiki and using it. Be active, develop your own sub community. Bring people you know to Miraheze. Also, feel free to look at our site matrix to find wikis you might be interested in.

Wiki creators
Wiki creators are volunteers who have learned a little bit more about the two interfaces that allow them to create wikis.

The more wiki creators we have, the faster we can process new wiki requests, which creates a better experience for the end user of our services.

To become a wikicreator you need to be trusted in the community, please ask for wikicreator rights at the Stewards' noticeboard and Stewards will allow discussion there before deciding to approve or decline the request.

For more information on wiki creators, please see Wiki creators.

Feature requests
We welcome any users to assist us with Feature requests. All of our configs and software used is available on our Github. When files are updated in any of the repositories hosted there, the changes are automatically deployed to the servers hosting Miraheze.

Anyone with a GitHub account (available for free) is able to propose file changes.

Easy start
One of the easiest ways to get started is to look at Feature requests and then editing the LocalSettings.php file in our Miraheze/mw-config repo. Most of this file (except for a little at the end) should be some of the easier stuff to understand. It uses nested arrays to apply settings to all wikis by default, or some wikis as coded.

The basic nesting layout is as follows:
 * Define namespace variables (close to the start, after includes)
 * wgConf (largest array)
 * Setting name (in the form of 'wgVariable' or 'wmgVariable')
 * Wiki's affected (in the form of 'dbname' or 'default' where dbname is the site's subdomain with "wiki" added to the end)
 * Setting value (the values to set. Can be a number, true/false, or an array, depending on the setting.)

Some of the easier stuff will be enabling extensions that are already installed (See the section of wgConf called extensions, which follows the format above where "Setting name" will be something like 'wmgUse Extension ' where Extension is the name of the extension to enable.

''Note that some extensions like Flow and VisualEditor require additional configuration.

Installing a new extension or skin
Anyone can propose changes to the Miraheze/mediawiki repo. To install a new extension or skin not already installed (not enable one on a wiki), please see this page.

Tweaking the servers
Miraheze purely runs on Debian 8 VPSs hosted by RamNode and 1 VPS hosted by Backupsy (storing backups) - mostly powered by OpenVZ, in very rare cases KVM. Our server configuration is managed by Puppet, and we work with various kinds of technologies. We use MediaWiki with Apache, GDNSD, MariaDB, nginx, and Varnish to power the web stack. If you are familiar with one or more of the software mentioned above, we would love to hear about your experience! Extra help is always welcome, and even the smallest improvements (fixed bugs/performance, etc.) for you, can be a big improvement for us. Please get in touch with John or Southparkfan if you would like to contribute in this area or simply make a Phabricator task for it.