Sounds like you're getting to the fun stuff :).
One of the things which I can see helping get this right is getting the bug lifecycle right. I'd suggest having the following states;
1) Reported
2) Verified / Closed (Can not reproduce) / Closed (Duplicate) / Closed (Issue resolved in later release) / Closed (Issue made irrelevant by later release)
3) In progress / Blocked (Resoluion dependant on other issue) / Blocked (Resolution dependant on non-AOSP component)
4) Resolution available
5) Fix Verified
6) Closed (Fix merged)
The typical flow would be;
- User reports issue; Issue is marked as Reported (Stage 1)
- Issue is triaged to determine which of the Stage 2 states it should go into.
- An appropriate developer makes the choice to move an issue from stage 2 to 3 and assign it an appropriate Stage 3 state.
- The issue then either goes to stage 4 when the developer uploads a patch to Gerrit, or, if the issue has been marked as "In Progress" for over a week and no patch is uploaded the issue drops back to its' previous stage 2 state. Issues can stay in the Blocked state indefinately.
- Once the patch has been approved in Gerrit the issue goes to stage 5.
- Once the patch has been merged the issue goes to stage 6.
This would address the issues you've mentioned in the following way;
- Non relevant issues would go into a blocked state until the fault was fixed in the 3rd party component (or remain blocked if the 3rd party component doesn't get fixed).
- Issues which have already been fixed or made irrelevant by changes in a later release get caught at stage 2
- Code would only become visible after something has gone to stage 3, and would be merged into the codebase between stages 5 & 6.
- Public issue trackers which maintain relevance need moderators. The default view should be bugs which are stage 2 and later, moderators would be required to move bugs from stage 1 to stage 2.
- Bugs with AOSP and 3rd party change dependancies could go into stage 3, if the AOSP component is finished before the non-AOSP one it stays at Stage 3 moving from "In Progress" to "Blocked (Resolution dependant on non-AOSP component)", if the non-AOSP part is fixed first the bug moves from stage 3 to 4 with a note about the dependancy.
- People need to be encouraged to report issues to OEMs for components they can work to ensure a that OEMs are aware of the issue. Non-AOSP resolvable issues can be moved to Stage 3 - Blocked (Fault identified within non-AOSP component) which should be enough to signify that the issue is known, but a fix won't come solely from the AOSP.
Does this sound reasonable?
Al.
--
Al Sutton
The views expressed in this email are those of the author and not necessarily those of Funky Android Limited, it's associates, or it's subsidiaries.