title | toc |
---|---|
Labels and Other Metadata for Issues and Pull Requests |
true |
This page describes how to use GitHub labels, milestones, and projects in a uniform way across W3C specifications.
Labels describe the kind of issue or specific work that's needed to advance an issue.
Those labels are there to facilitate horizontal reviews.
- Security
-
Affects the degree of resistance to, or protection from, harm of Web technologies.
- Privacy
-
Affects the collection, processing and publication of personal data in Web technologies.
- Accessibility
-
Affects the design of Web technologies for people with disabilities.
- Internationalization
-
Affects the adaptation of Web technologies to different languages or regional differences.
- Architecture
- Affects the underlying principles that should be adhered to by all Web technologies.
- Performance
- Affects the download and display speed of Web technologies.
- device independence
- Affects the ability of Web technologies to function on a wide variety of devices.
Those labels are meant to track testing and implementation status.
Milestones describe the scheduling of bug fixes and changes. Often an issue is labeled with a particular milestone as a way to postpone work on it until after work needed for an earlier milestone.
experiment : Resolve before experimenting with the new feature on general users.
migrate : Resolve before migrating the spec from the WICG to a Working Group.
FPWD : Resolve before creating a First Public Working Draft.
CR : Resolve before advancing the spec to Candidate Recommendation.
PR : Resolve before advancing the spec to Proposed Recommendation.
REC : Resolve before advancing the spec to Recommendation.
level-2 : Work on these issues after the level-1 spec is complete.
future-work : Work on these issues at an unspecified time in the future.
1- The WG processes the comment, and provides a resolution.
WR-open : Comment received, not yet processed by the WG
WR-pending : Discussed but pending WG resolution
WR-resolved : WG resolution, (approved by WG)
WR-spec-updated : WG resolution and spec updated
WR-resolved-partial : Partial WG resolution (partially approved by WG)
WR-spec-updated-partial : Partial WG resolution and spec updated
WR-rejected : Comment Rejected by WG
For each comment, please fill a "type" with above labels
2- Once the WG has processed all comments, the next steps are to get approval from the commenter
WR-response-drafted : Response to commenter drafted by WG
WR-response-sent : Response send to commenter
WR-commenter-rejected : Response rejected by commenter
WR-commenter-agreed : Response agreed by commenter
WR-commenter-agreed-partial : Response partially agreed by commenter (needs more discussion)
WR-commenter-no-response : No Response received from commenter within the stated period
For more information please refer to the TTWG wiki Wide Review page.
Note that groups may work on a level-2 spec concurrently with pushing the level-1 spec through the Recommendation process, so repositories may need milestones like "level-2-CR".
Projects describe separate features within a larger specification. Usually, prefer to create a new repository to track greenfield feature development, and take it through the incubation process instead of using a project within an existing spec repository. Even when used, project names are generally not shared between specifications, so we don't list samples here.
<script> // Expects an RRGGBB hex color without the '#'. function isDark(rgbColor) { const r = parseInt(rgbColor.slice(0,2), 16); const g = parseInt(rgbColor.slice(2,4), 16); const b = parseInt(rgbColor.slice(4,6), 16); // The threshold value is where the contrast against white (luminance 1) is the same as the // contrast against black (luminance 0): 1.05/(threshold+.05) == (threshold+.05)/.05. return luminance(r,g,b) < 0.18; } // From https://www.w3.org/TR/WCAG21/#dfn-relative-luminance. function linearize(component) { const fracComponent = component/255; if (fracComponent < 0.04045) return fracComponent/12.92; return Math.pow((fracComponent+0.055)/1.055, 2.4); } function luminance(r, g, b) { return .2126*linearize(r) + .7152*linearize(g) + .0722*linearize(b); } // Populate label descriptions. (async function() { /** @type {Array} */ const labels = await (await fetch("https://w3c.github.io/common-labels.json")).json(); // Populate simple labels. for (const dt of document.querySelectorAll("#testing-labels dt, #specifications-labels dt")) { const label = labels.find(l=>l.name === dt.dataset.label); if (!label) continue; dt.id = dt.dataset.label.replaceAll(/\W+/g, '-').toLowerCase(); dt.style.backgroundColor = `#${label.color}`; dt.classList.add('tag'); dt.classList.toggle('darkBg', isDark(label.color)); dt.textContent = label.name; const dd = document.createElement('dd'); if (label.longdesc) { dd.innerHTML = label.longdesc; } else { dd.textContent = label.description; } dt.insertAdjacentElement('afterend', dd); } // Populate horizontal reviews. for (const dt of document.querySelectorAll("#hr-labels dt")) { let labelGroup = dt.dataset.labelGroup; if (labelGroup) { let dd = dt.nextElementSibling; let entries = "- ";
labels.forEach(label => {
if (label.name.indexOf(labelGroup) === 0) {
let sublabel = label.name.substring(labelGroup.length+1);
entries+= `
- ${label.name}
${label.longdesc}
Color:
#${label.color}
`;
}
})
let div = document.createElement("div");
div.innerHTML = entries;
dd.appendChild(div);
}
}
})();
</script>
<style>
.darkBg { color: white; }
dl.labels dt {
border-radius: 1.5rem;
padding: 0.15rem 0.8rem;
}
</style>