This document outlines the release process for the Mattermost Desktop App. It is drawn from the development process used by the [Mattermost core team](https://docs.mattermost.com/process/release-process.html).
## Release Timeline
Notes:
- All cut-off dates are based on 15:00 GMT (UTC-00) on the day stated.
- T-minus counts are measured in "working days" (weekdays other than major holidays concurrent in US and Canada) prior to release day.
### A. (Code complete date of previous release) Beginning of release
Pre-work for the current release begins at the code complete date of the previous release. See "Code Complete and Release Candidate Cut" section below for details.
- Create meta issue for release in GitHub to let contributors and users know about the upcoming release. See [example issue](https://github.com/mattermost/desktop/issues/271).
- Prepare JIRA tickets for the next release, with a corresponding vX.X prefix
- Cut the release candidate (RC1)
- Cut final release with code-signing for Windows and Mac builds
- Prioritize reviewing, testing, and merging of pull requests for current release until there are no more tickets in the [pull request queue](https://github.com/mattermost/desktop/pulls) marked for the current release
**Stabilization** period begins when all features for release have been committed. During this period, only **bugs** can be committed to the release branch. Non-bug pull requests are tagged for the next version.
1. PM:
- Post this checklist in Desktop App channel
- Verify all items in the last posted release checklist are complete
- Mail out mugs to any new contributors
- Coordinate testing:
- Update the RC Testing Spreadsheet to cover any changes or new features, confirm that known issues are listed in the relevant tests, and assign each area to a team member
- Post in Desktop App channel alerting community of upcoming release and to ask help with testing the release candidate
- Finish assigned areas of the Release Candidate Testing spreadsheet
- Continue triaging hotfix candidates and decide on whether and when to cut next RC or final
- If no blocking issues are found sign off on the release
3. Marketing:
- Finish drafts of art work for Twitter announcement and send to marketing lead for review
### F. (T-minus 2 working days) Release Build Cut
The final release is cut. If an urgent and important issue needs to be addressed between major releases, a bug fix release (e.g. 1.1.1) may be created.
1. PM:
- Post this checklist in Desktop App channel
- Verify all items in the last posted release checklist are complete
2. Build:
- Tag a new release (e.g. 1.1.0) and run an official build which should be essentially identical to the last RC
- Post in Desktop App channel with links to all supported distributions
3. PM:
- Update the links in [Mattermost download page](https://www.mattermost.org/download/) and [installation guides](https://docs.mattermost.com/install/desktop.html)
- Draft [Mattermost Security Updates](http://about.mattermost.com/security-updates/) if applicable, but do not post until seven days after official release
- Check Security Issues spreadsheet and confirm disclosure text
- Contact owners of [community installers](http://www.mattermost.org/installation/) to update install version number
- Close GitHub meta ticket for the release
- Finalize all documentation
4. Dev:
- Publish the release in [GitHub repository](https://github.com/mattermost/desktop/releases)
- Merge changes made to release branch into master
5. Marketing:
- Schedule Twitter announcement for 08:00 PST on the date of marketing announcement
If a bug fix release is required, run through the following steps again:
1. Build:
- Tag a new release (e.g. 1.1.1) and run an official build
- Verify all items in the last posted release checklist are complete
- Post and review [Mattermost Security Updates](https://about.mattermost.com/security-updates/) for the Desktop App
- Update Security Issues spreadsheet with issue number from posted update (e.g. v3.2.0.1)
- Confirm the Security Researchers list on the [Responsible Disclosure Policy](https://www.mattermost.org/responsible-disclosure-policy/) is up to date
- Review community installers for the Desktop App and update version numbers if there are any discrepencies https://www.mattermost.org/installation/