QA/Desktop Firefox/Automation/Commit Policy
Overview
The following document describes the commit policy for patches into the mozmill-tests repository and proposals for improvement of the policy.
Current Issues
1) Failure bug filed after first occurrence
- PROBLEM: Creates bug churn due to uncontrollable circumstances (ex. internet outage)
- SOLUTION: Only file a bug after 2 consecutive days of failure
2) Patch lands across all branches
- PROBLEM: Creates considerable work when a patch fails in the real-world
- SOLUTION: Land patch on default and let it prove itself. Once proven:
- a) Let it ride the train, merge every 6 weeks, or
- b) Port to all other branches, or
- c) Port to one branch at a time and let it prove itself each step of the way
3) Patch must pass through a gatekeeper before landing
- PROBLEM: Cost to quantity does not net a reciprocal benefit in quality
- SOLUTION: No more gatekeeper reviews. Patch lands as soon as it passes peer review.
4) Patch passes through a single gatekeeper
- PROBLEM: This does not scale at all
- SOLUTION: r+ patches go into a checkin-needed queue which anyone with commit access can check-in
5) Only a chosen few get commit access
- PROBLEM: This does not scale either and creates a huge barrier to contribution/responsibility/growth
- SOLUTION: Open committer access to those who have "proven" themselves -- need to determine that criteria
Proposal
1) File failures after second consecutive occurrence.
- WIN: Reduces bug churn due to glitches and uncontrollable circumstances, like internet connectivity.
2) Disable tests which are failing immediately upon filing the bug. In other words, file a bug with patch in hand to disable the test.
- WIN: Increased day-to-day stability in our tests
3) Remove the necessity of a gatekeeper-review before check-in
- WIN: Increase quantity, little decrease in quality
4) Only land patches on default initially. This will alleviate the problem of having to backout patches across multiple branches. Here are a couple of alternatives we can follow:
- a) Check-in on default, let it ride the train
- b) Check-in on default, port it up one channel per day
- c) Check-in on default, port to all branches
Draft Commit Policy v1
Based on peer feedback to the above
- Members with Commit Access
- Anthony Hughes (Lead)
- Vlad Maniac (Softvision Lead)
- Alex Lakatos (Softvision 2nd)
- Reviews
Every patch must pass one peer review meeting the following criteria:
- Meet style requirements of Styleguide for readability to newcomers
- Meet stability requirements given a full testrun on Windows, Mac, and Linux
- Endurance tests need pass 100 iteration / 10 entity testruns
- Meet coverage requirements of Litmus Test (new tests)
- Appropriate usage of APIs where available
- Check-in
Patches land on DEFAULT first (applies to new tests only)
- Once a patch passes review, land it on default
- RESOLVED FIXED if it passes the next daily testrun, backed-out if not
- Land patch on aurora, beta, and release once it passes
- VERIFIED FIXED if it passes the next daily testrun on all branches, backed-out if not
Check-in Responsibility
- If developer has commit access: peer reviews the patch, developer checks it in
- If developer has no commit access: peer reviews the patch, peer checks it in
- Landing Flags
- status-firefox<N>:?, unaffected, affected, wontfix, fixed
- ?: ask for triage for a specific branch
- unaffected: patch does not need to land for a specific branch
- affected: patch needs to land for a specific branch
- wontfix: patch will not be landed for a specific branch (bug won't be fixed)
- fixed: patch has landed for a specific branch and passes the daily testrun
- <N> based on whatever version is in the branch, as of Dec 12, 2011...
- status-firefox8 means mozilla-release branch
- status-firefox9 means mozilla-beta branch
- status-firefox10 means mozilla-aurora branch
- status-firefox11 means default branch
- Points
Use points to track development progress
- Every test/fail starts with 1 point
- Each blocker adds 1 point to the test/fail
- Each REOPENED bug adds 1 point to the test/fail
- Examples:
- bug 620538: 2 points (1 blocker, never reopened)
- bug 629102: 5 points (4 blockers, never reopened)
- bug 671476: 4 points (1 blocker, reopened twice)
- Could potentially be used as onramp to commit access (ie. 100 points)
- Shared Module Dependency
- file a dependency bug
- write patch for shared module needs
- reviews should go to Automation Services team