Skip to content

Latest commit

 

History

History
225 lines (178 loc) · 8.24 KB

issue-metadata.md

File metadata and controls

225 lines (178 loc) · 8.24 KB
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 {#labels}

Labels describe the kind of issue or specific work that's needed to advance an issue.

Horizontal Reviews {#horizontal-reviews}

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.

Testing and Implementations {#testing}

Those labels are meant to track testing and implementation status.

Specifications {#specifications}

Milestones {#milestones}

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.

Wide Review {#wide-review}

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 {#projects}

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>