Software deployment approaches

There are many approaches to deploying software, and this page describes some models used in the Wikimedia Foundation's environment.

Feature deployment and feature configuration
Deployment and configuration are two different concepts.

A feature can be deployed but not visible to users. In that case, a configuration change may be needed to make the software available for use. The configuration can be different for each wiki.

Certain features (Growth features mainly) can be locally configurable by communities.

Regular weekly updates
Bug fixes, minor feature enhancements, and other non-emergency small changes tend to "ride the deployment train". This means that they follow the process in Deployments. The deployment train uses containerized continuous delivery, which is a model that is mostly automated. In most cases, this means that routine software patches approved before the cutoff time will be deployed to different groups of wikis on Tuesday, Wednesday, and Thursday.

Backport windows are used for urgent updates, and also for configuration changes.

Feature flag
Also known as "snippet deployment" or "shadow deployment".

New products and features can be deployed but hidden behind a feature flag. This means that only people with a special URL (or other access method) will be able to see the feature.

Beta features
Offering a product as a new option in Beta Features makes a product available to registered users. It is a way for anyone interested to test the new feature and give feedback.

A/B testing
A/B testing usually results in a product being deployed default-on for half of the users at a given site. This is used to understand if the new features have the intended impact.

Deployment in phases
Sometimes called waves or phases, this approach usually involves choosing wikis for several groups, and deploying to each group in turn, until the software is available at all relevant wikis. Product Analytics/Comparison datasets may be useful in identifying similar wikis.

Groups of wikis include:


 * Big, medium, and small wikis
 * Wikipedias and non-Wikipedias
 * Mobile-heavy and desktop-oriented wikis
 * Wikis with many newcomers and wikis with fewer newcomers

Wikis that have agreed to be involved in early deployment phases early are sometimes called pilot wikis or partner wikis. Sometimes pilot wikis are chosen for diversity. For example, a pilot group might include a Latin script language, an Arabic script language, and an Asian script language, or it might include wikis of different sizes.

Alternatively, a product may be offered initially only to certain subsets of users. Groups of editors include:


 * Registered editors (but not IP or temporary users)
 * Editors with certain user rights or similar characteristics
 * Randomized based on user account number (e.g., all user account numbers ending with a 1)

Phases can also be by alphabetical order of the wiki's ISO 639 code.

All wikis
Sometimes, whether for technical or non-technical reasons, software is deployed everywhere all at once.