# Studio Release Strategy Proposal
### Introduction
Since we introduced monthly release strategy, we did a great job to our commitments. However there are serveral problems:
1. Release date is not clear.
2. Release always slip one week or two
1. Make next release tight
2. Drop the release
3. Finish developements 1/2 days before QA
1. QA need to test everything, a lot of pressure
2. QA completed 1 day before release
4. A lot of hotfixes
1. 3 for 2.8 release
5. Last minute code change, hotfix beforer release
6. Taging the release Image 1 hour before the release
7. Relase day 1 and delpoy the next day
To improve the overall release propose. We will propose **4 Phases** in our release cycle
1. **Release Justification - RJ**
2. **Features/Fixes Complete - FC**
3. **Code Freeze - CF**
4. **General Release - GR**
We will also propose a new branching strategy after we all confirm with the release strategy
---
### Release Justification (RJ)
##### When: Wednesday, Two weeks before GR week
##### Description
- Dev, QA will review each US and justify if it will be **qualified** as part of the release.
- An one hour meeting will be held to go over all items originally defined in the release.
- PdM needs to participate to be aware of any changes.
- If the US is **NOT qualified** , it will be dropped and added to next release.
- Need to communicated effectively with customers.
- If the US becomes a hard requirement (P0), it will be added back to release
##### Note
- Only **P0 tickets** will be added to release after RJ Phase.
- **Nothing** else shall be added to the current release, **NO EXCEPTION except P0 issues**.
- These new requests will be added to next release, and the US/priorties need to be revisited.
- Example of some new requests.
- Small bugs discovered by QAs/internal users.
- Small enhancement requests from internal users.
- ...
##### Definitions
###### Qualified:
- QA will be finished 100% before FC phase
- For big features (umbrella): test plan should be ready by RJ Phase
###### P0 tickets
- A P1 MIXSUPPORT ticket, or hard commitement created by external customers for some defects. The fix must be applied **ASAP**
Some examples
1. adding locking mechanism for reset endpoint
2. Quick improvement of stats generation of qws project
---
### Features/Fixes Complete
##### When: Wednesday before the GR week
##### Description
- All qualifed US should be
- 100% dev completed
- 100% QA completed
- It is acceptable to fix small bugs that may have slipped through QA that are found during this phase
- A release branch is created
- Additional fixes should be merged to release branch
- We update master with the fixes that are merged into the release branch during that phase
##### Note (anthing else needs to be covered?)
---
### Code Freeze
##### When: Tuesday of the GR week
##### Description
- No more code gets pushed to release branch
- release tag should be created
- any blocking bug fixes we want to do at this point have to be **approved by a manager**
if it happens, the release tag will be moved to the latest commit on the release branch
##### Definition
###### Approved:
(add definition)
---
### General Release
##### When: Last Thursday of the Months
##### Description
- Announce the release of the new version
- Review US for next release
**Note**
- The release date should be final and certain, unless there are unavoidable exceptions
- TODO: clearly define these exceptions
---
### Exception Case: P0 Request