Software deployment approaches
This page is under construction Please help review and edit this page. |
There are many approaches to deploying software, and this page describes some models used in the Wikimedia Foundation's environment.
Designing new functionalities
editA/B testing
editA/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.
Releasing new functionalities
editUser script | Gadget | Extension | Beta Feature | |
---|---|---|---|---|
Desc | Makes a product available to registered users. It is a way for anyone interested to test the new feature and give feedback. | |||
Pros |
|
|
|
|
Cons |
|
|||
|
|
|
|
* Regardless of the method of releasing, it's possible to run CentralNotice banners encouraging users to opt in. These may use JS and API queries, and allow for an instant reload of the page with new functionality enabled.
Feature flag
editAlso 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.
Deployment in phases
editSometimes 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
- DEI criteria: established and developing communities, LTR and RTL, 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.
Sometimes though, whether for technical or non-technical reasons, software is deployed everywhere all at once.
Regular weekly updates
editBug fixes, minor feature enhancements, and other non-emergency small changes tend to "ride the deployment train". This means that they follow the process in wikitech: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 deployment and feature configuration
editDeployment 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.