Some background on issue tracking:
When Ember developers assist the core team with issue triage, the core team and contributors can spend more focused time on actionable results.
- Reduce signal to noise ratio
- Weekly (superficial) triage of issues, all up review of issues
- Core Team reviews triage spreadsheet and updates issue labels; can address actionable bugs
- Core team wants to know pain, so to prioritize issues
- Core team needs to be given the benefit of the doubt on the choice of prioritization
- Individuals can always scratch their own itch (this is key to all our success)
This last bit core team needs help with, its a tricky balance.
- Community: Group issues by actionable categories: bugs, not bugs, needs clarity
- Core team: Monitor collaboration on shared triage spreadsheet
- Spreadsheet: export issues list from Ember project on Github (JS snippet to scrape page)
Core team meets on Friday at 11am, so an all up review would be valueable for everyone's eyes then.
- Identify low hanging fruit
- Look for patterns in issues, common cause(s) for many bugs
- Combine duplicate issues
- Provide update for labelling issues, e.g. Documention, Bug, Question, etc.
- Issues for current release (e.g. 1.13.x) may be fixed
- Issues for older release may only be fixed if a security issue, or core team commits to backporting
- Filter out noise by diverting 'Questions' to discuss forum
- Redirect 'Feature Requests' to discussion on an RFC/issue (or even RFC doc, if idea is presented clearly)
Export the issues from Github into tab separated values to build a spreadsheet. Include issue: #, title, href, labels
Example: https://docs.google.com/spreadsheets/d/1LHxHaoT4P1MeBITEkbjKkaZhZmeKoYqSBkPiDiJ4u5g/edit#gid=0
- Browser console snippet to create tab separated values (It's useful, not pretty)
window.issueList = document.querySelectorAll('.table-list-issues li');
issueList.plainTexts = [];
Array.prototype.forEach.call(issueList, function(item) {
var issue = item.querySelector('.issue-meta .opened-by').innerText.trim().split(' ');
var title = item.querySelector('.issue-title-link').innerText.trim();
var href = 'https://github.com/' + item.querySelector('.issue-title a').getAttribute('href');
var labels = [];
var labelEls = item.querySelectorAll('.labels a');
if (labelEls && labelEls.length) {
Array.prototype.forEach.call(labelEls, function(elem) {
labels.push(elem.innerText.trim());
});
}
issueList.plainTexts.push([ issue[0].substr(1, issue[0].length), title, href, issue[issue.length - 1], labels.join(' / ') ].join('\t'));
});
issueList.plainTexts.join('\n');
And idea from @rwjblue…
I really want to be able to order issues by "least recently touched by team". Where the following rules determine when the "last touched by team member" flag is reset:
Date.now()
null
null
Then we would roughly be assured to cycle through things. ( see - ember triage app, https://github.com/danmcclain/emberage )