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/feature-release.html).
Desktop App releases ship at the same time as the next server Feature release after the latest [Electron update](https://github.com/electron/electron/releases), which means approximately every 2-4 months. The Desktop App releases ship on the 16th of the month and follow the server release schedule.
In cases where there are requested features completed prior to the next upcoming Electron update, the next Desktop App release will be prepared at the same time as the next server Feature release regardless of whether a new Electron update has shipped.
A dot release will be prepared sooner if Electron releases a security update, or if other urgent bugs are found.
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.
No pull requests for features should be merged to the current release after this date. In special cases, exceptions can be made by the Release Manager.
- Ensure that feature PR reviews are prioritized, and post a list of outstanding feature PRs in the Desktop App channel
- After release branches are cut, ask dev to cut RC1 for QA testing
- Submit changelog with updates for improvements, bug fixes, known issues, and contributors
- Ask PMs if there are any notable breaking changes or deprecated features in the release
- Start posting a daily Zero Bug Balance query (posted until zero bugs or day of release)
- 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)
- 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
- Verify `version` in [package.json](https://github.com/mattermost/desktop/blob/master/package.json) and [src/package.json](https://github.com/mattermost/desktop/blob/master/src/package.json) are updated to the new release version
- Master is tagged and branched and "Release Candidate 1" is cut (e.g. 1.1.0-RC1)
**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.
- Prioritize reviewing, updating, and merging of pull requests for current release until there are no more tickets in the pull request queue marked for the current release
- 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
- 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.
- Update the links in [Mattermost download page](https://www.mattermost.org/download/) and [installation guides](https://docs.mattermost.com/install/desktop.html)
- Merge changelog PR after review is complete
- If there is a security fix, confirm the Changelog recommends upgrade, with a note mentioning the security level and thanking the security researcher
- 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
- Complete code-signing and confirm that it worked well by testing the download links and keeping an eye out for any warnings or issues. Also, use these commands to verify the signatures:
- Windows: On "Developer Command Prompt" (bundled in Visual Studio),
- 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
5. Marketing:
- Schedule Twitter announcement for 08:00 PST on the date of marketing announcement
- 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