Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: basic backlog management #52

Closed
wants to merge 4 commits into from
Closed

WIP: basic backlog management #52

wants to merge 4 commits into from

Conversation

tedsuo
Copy link
Contributor

@tedsuo tedsuo commented May 16, 2019

This is based on @jparsana's excellent triage documentation from OC: https://github.com/census-instrumentation/opencensus-specs/blob/master/triage-process.md

The main change was to move from a table format to a format that allowed for more details about each stage. (open to other formatting options!) I also added more stages related to triaging discussions.

This is currently a WIP, I've added some questions as inline comments.


It's an important community goal for OpenTelemetry that our members find the backlogs to be responsive, and easy to take part in. Having a shared methodology for processing issues helps new members understand the current state of each project.

## Roles
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I took these roles from the OC doc, but perhaps we want to make them align more clearly with what is listed in https://github.com/open-telemetry/community/blob/master/community-membership.md.


* **Contributing Reviewer**: Person who provides feedback on an PR but whose Approval is not necessarily needed to merge the PR.

## SLAs
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another approach to SLAs would be to assign them them to each issue state, rather than each role. ¯_(ツ)_/¯

Copy link
Member

@SergeyKanzhelev SergeyKanzhelev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In a lack of automation of labeling some aspects of the process seems heavyweight. In general - correct, but excessive.

Also added some comments on label names and process

## Issue States

### New
label: `new`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need a label for new? Perhaps anything without the label is new

* `no-further-action` for issues which can be quickly resolved.

### Available
label: `available`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we use up-for-grabs?

* `P2` = Low (Work on it when no P1 are left or some one from community wants to contribute)

Work can also be classified into a number of categories, to make available issues easier to find. Common examples of work categories are:
* `feature-request`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the difference with enhancement?

### Stale
label: `stale`

When a ticket has violated an SLA, it becomes stale.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you envision some automation in place?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For SLAs, yes. But it should be possible to do by hand, or it is too complicated.

For next step, I suggest we try setting up project boards for java and c#, and model some of this workflow.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this SLA tag is clearly have some target in mind. You want to ensure "healthy" project with timely replies. If somebody will do it by hand - repo is already "healthy". Your issue will be read and classified.

So from my perspective SLA like this can mostly be used as a metric for transparency or reminder to the maintainer with suggested actions. This is how I read the proposal in your document.

Comment with the mention of maintainer and triager like this can be posted on the issue:

Like this isssue was untriaged for a long time. (at)poster - please make sure the ticket has enough details and, when possible, clear steps to repro. (at)repo-maintainers If you feel that some details are missing - add this "label". If it takes too much time to reproduce - please indicate that you are looking into it using this "label"., etc...

But this thing will only be useful with automation

### WIP
label: `wip`

Any ticket which has been assigned a lead contributor is considered work in progress.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you envision some automation?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also - non-members can declare that they are working on issue by mentioning themselves in comments. It is mentioned in CONTRIBUTING.md

### Needs Review
label: `needs-review`

Implementation work related to the ticket has been completed. Work related to a Review and/or any changes requested as part of the review is in progress. Issues with a PR associated with it will be considered as in ‘In Review’.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same question - "considered In Review" - is there manual step for this? If so - it sounds heavyweight process. If there is an automation - how it will understand issue to PR association?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel this is related to SLAs. Ideally, no state change from “wip” is needed. However, if an issue becomes blocked on review activity, it’s state should change.

I would like automation to track SLAs, and assign labels in response. But the task should be simple enough for a triager to manually.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so you want to solve the problem that the issue become "stale" in wip state? If there is an automation that will bug me to change the state - I will do it. Otherwise - it looks like too much to do to fix a simple bug (for instance).

### Completed
label: `completed`

Any issues which are resolved via a merged pull request can be closed with the `completed`. This extra label can be helpful when searching closed issues.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you please elaborate on it? So you want to differentiate in search wether issue was completed or closed with explanation of user error? Typically you don't care, just read comments and associated PRs should be enough

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mainly, this is here because, like “new,” completed is an important state.

I agree that we can use “closed with no label” to mean “completed” if it is too difficult to add a label.

As to why the label is an important category, when searching the past it is important to scope search to work that was incorporated into the project, versus off-topic discussions or rejected features.

Closed labels:

  • record of work. (completed)
  • record of non-work requests. (no-further-action)
  • record of issues closed without due process. (no label)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious what kind of a search do you have in mind? Looking for some exception from SDK, but only when it resulted in "completed" PR? I see how it can be useful for analytics. Perhaps we can identify what kind of analytics we need to run to inform what kind of additional work to impose on maintainers

It's an important community goal for OpenTelemetry that our members find the backlogs to be responsive, and easy to take part in. Having a shared methodology for processing issues helps new members understand the current state of each project.

## Roles
* **Triager**: Person who is triaging the issue by determining its workability. This person is responsible for getting the ticket to one of two stages - 1) ready-for-work 2) wontfix. They are responsible for triaging by working with the OP to get additional information as needed and analyzing the issue and adding relevant details/information/guidance that would be helpful to the resolution of the issue.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is one more category of issues - "should be defined in specs first". Typically when someone suggests new API surface

It's an important community goal for OpenTelemetry that our members find the backlogs to be responsive, and easy to take part in. Having a shared methodology for processing issues helps new members understand the current state of each project.

## Roles
* **Triager**: Person who is triaging the issue by determining its workability. This person is responsible for getting the ticket to one of two stages - 1) ready-for-work 2) wontfix. They are responsible for triaging by working with the OP to get additional information as needed and analyzing the issue and adding relevant details/information/guidance that would be helpful to the resolution of the issue.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no formal Triager in community membership document. My first reaction is that we should just make it maintainer's responsibility. However I can see cases when someone helping maintainers with triage. If you envision this situation - it will be good to mention it in community membership document

Copy link
Member

@c24t c24t left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great overall, but some of the labels are redundant (new is the same as unclassified, wip is open and assigned but not yet in review, etc.).

There are a few double spaces in the doc, you may want to search/replace before merging.


* If a PR is merged which resolves the issue, the ticket can be closed as `completed`.
* If work is blocked on review, the ticket transitions to `needs-review`.
* If work is abandoned, or the ocntributors otherwise change their minds, the ticket can be closed as `no-further-action`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: ocntributors

### Needs Review
label: `needs-review`

Implementation work related to the ticket has been completed. Work related to a Review and/or any changes requested as part of the review is in progress. Issues with a PR associated with it will be considered as in ‘In Review’.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was In Review removed as an issue state?


Implementation work related to the ticket has been completed. Work related to a Review and/or any changes requested as part of the review is in progress. Issues with a PR associated with it will be considered as in ‘In Review’.

* Move the issue back to `in-progess` if significant changes are needed.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: in-progess


Some issues are not directly related to a particular code change. This can often arise with tickets describing unclear edge cases, and situations where applying OpeTelemetry is proving to be difficult. If a ticket is worth considering in the issue backlog, but not scoped clearly enough to move to `wip`, then it `needs-discussion`.

* When possible, move the discussion forwards by using code examples.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: s/forwards/forward/

The most common next steps for new tickets:
* `available` for actionable work items.
* `needs-discussion` for issues which cannot be triaged quickly, but raise important points.
* `no-further-action` for issues which can be quickly resolved.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not wontfix?

### Available
label: `available`

For new work requests Once it has been classified, a ticket is up for grabs to be picked up to be worked on by a contributor.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: Once

Copy link
Member

@c24t c24t May 16, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Once a new work request has been classified any contributor may begin work on it" makes more sense than "... a ticket is up for grabs to be picked up to be worked on by a contributor" if we're not using up-for-grabs.

It's an important community goal for OpenTelemetry that our members find the backlogs to be responsive, and easy to take part in. Having a shared methodology for processing issues helps new members understand the current state of each project.

## Roles
* **Triager**: Person who is triaging the issue by determining its workability. This person is responsible for getting the ticket to one of two stages - 1) ready-for-work 2) wontfix. They are responsible for triaging by working with the OP to get additional information as needed and analyzing the issue and adding relevant details/information/guidance that would be helpful to the resolution of the issue.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These work stages don't match the issue states below, looks like separate docs glued together.

All work is labeled with a priority:
* `P0` = Critical (Drop everything and work on it.)
* `P1` = Important (Work on it if no P0 are present. Use judgment to prioritize items within a list of P1s)
* `P2` = Low (Work on it when no P1 are left or some one from community wants to contribute)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: periods are inconsistent here

@SergeyKanzhelev
Copy link
Member

For next step, I suggest we try setting up project boards for java and c#, and model some of this workflow.

@tedsuo as you are a maintainer of Go repo - perhaps you can start there and demonstrate how it may be working and benefits of using specific tags

@@ -0,0 +1,122 @@
# Backlog Structure for OpenTelemetry

It's an important community goal for OpenTelemetry that our members find the backlogs to be responsive, and easy to take part in. Having a shared methodology for processing issues helps new members understand the current state of each project.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it will be great to state the goals of the process. What we are optimizing for.

@tedsuo
Copy link
Contributor Author

tedsuo commented May 23, 2019

Hi all. After a number of discussions, I've re-written this as a simpler proposal. It focuses on two major flows - Code Changes and Discussions - and how to handle issues that get stuck.

I also switched to only using roles that appear in https://github.com/open-telemetry/community/blob/master/community-membership.md. Please think about what steps only a project Maintainers should do, vs what any community member should be allowed to do.

Please let me know if this more stream-lined proposal works as a starting point for a common backlog management procedure. We can always add more detail and process later, as the project grows.

@tedsuo tedsuo changed the title WIP: backlog documentation WIP: basic backlog management May 28, 2019
* A contributor assigns the ticket to themselves.
* A maintainer assigns the ticket to a contributor.

All tickets transition to `wip` once they have been assigned. If a PR is merged which resolves the issue, the issue can be closed. If work is abandoned, or the contributors otherwise change their minds, the ticket should be closed as `no-further-action`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't the ticket transition back to up-for-grabs if the work is abandoned?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a conflict here with the stale label?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, wip should go to up-for-grabs if the PR is abandoned. It should go to no-further-action only if the contributors change their mind about the value of the Issue itself.

What conflict with stale do you mean? Could you describe?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Work is abandoned" may manifest as exceeding SLA (contributors don't comment on PR for 3 days), so the issue should move to stale.

## New Issues

Flow:
* An issue is filed by a community member.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it have to be a community member? Anyone can file an issue, no?

Flow:
* A new issue is filed, proposing a code change.
* Maintainer labels the issue as `up-for-grabs`; reviewers are assigned.
* `up-for-grabs` becomes `wip` once a Collaborator is assigned.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about adding an assignee and then leveraging a Github project board? It can move the issue automatically to an in-progress section (concerned about process overhead here).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or people just mention themselves in comments. Not everybody is OpenTelemetry project member


Flow:
* An existing issue gets stuck due to a lack of response.
* The `stale` label is applied, and the appropriate members contacted.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are the plans to automatic this process?

* record the SLA details as comment on the ticket.
* @mention the person(s) who can resolve the SLA.

Sometimes, an issue cannot move forwards is due to an external reason or extenuating circumstances. For example, waiting on work to be finished in another project. In these cases, the `blocked` label is used instead. Preferably, issues should be closed, rather than be left for long periods in a `blocked` state.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are the plans to automatic this process?

@@ -0,0 +1,79 @@
# Issue Management for OpenTelemetry

It's an important community goal for OpenTelemetry that our members find the backlogs to be responsive, and easy to take part in. Having a shared methodology for processing issues helps new members understand the current state of each project.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a shared methodology for processing issues helps new members understand the current state of each project

I don't understand this goal:

  • Do you mean it will help contributors (members). Or it also will help end users?
  • Do you propose some metric that new member can evaluate? Or the project state will be expressed by number of stale issues?

Maybe just replace the entire sentence with "Shared practices will simplify collaboration and engagement as well as help standardize on automation and overall project management."


It's an important community goal for OpenTelemetry that our members find the backlogs to be responsive, and easy to take part in. Having a shared methodology for processing issues helps new members understand the current state of each project.

SIGs are encouraged to experiment with labels and backlog management procedures. This document only covers the bare bones of issue management which should work the same across all SIGs, to help maintain a responsive backlog and allow us to track work across all projects in a similar manner.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SIG is for group of people with similar interests. I think you need to use "repository" here instead

Flow:
* An issue is filed by a community member.
* A maintainer responds and asks clarifying questions.
* The maintainer processes the issue as a Code Change, a Discussion, or resolves it quickly.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

next sentence saying that it will be a triager, not maintainer role. Which one do you propose?

* A maintainer responds and asks clarifying questions.
* The maintainer processes the issue as a Code Change, a Discussion, or resolves it quickly.

Every new issue should be responded to quickly by a Maintainer, with a greeting and any needed clarifying questions. If assessing the issue requires more information, the Triager collaborates with the OP until workability is determined. If the ticket is a help request with an existing answer, please link to the answer before closing the ticket.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

define OP on a first use.


A ticket becomes `up-for-grabs` once a maintainer deems it is processed sufficiently that work can begin. Issues should be well scoped and have clear goals.

A ticket labeled `up-for-grabs` can be picked up by anyone in the community. Available work can be assigned in the following ways:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

by everyone really. Community membership has a requirement to send couple PRs =)


All tickets transition to `wip` once they have been assigned. If a PR is merged which resolves the issue, the issue can be closed. If work is abandoned, or the contributors otherwise change their minds, the ticket should be closed as `no-further-action`.

## Discussions
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please cover the case of spec-needed label like here: open-telemetry/opentelemetry-js#5


Flow:
* A new issue is filed, raising an important question.
* Maintainer labels the issue as `needs-discussion`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

github suggests to mark it as question. needs-discussion is OK.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question is better reserved for help tickets.


Every new issue should be responded to quickly by a Maintainer, with a greeting and any needed clarifying questions. If assessing the issue requires more information, the Triager collaborates with the OP until workability is determined. If the ticket is a help request with an existing answer, please link to the answer before closing the ticket.

## Code Changes
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

call it enhancement - this is the label GitHub created out of the box?

Sometimes, an issue cannot move forwards is due to an external reason or extenuating circumstances. For example, waiting on work to be finished in another project. In these cases, the `blocked` label is used instead. Preferably, issues should be closed, rather than be left for long periods in a `blocked` state.

## Closing an Issue
Any issues which are resolved via a merged pull request can simply be closed.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... or no reply from OP for a while

* `up-for-grabs` becomes `wip` once a Collaborator is assigned.
* Closed once all PRs are accepted.

A ticket becomes `up-for-grabs` once a maintainer deems it is processed sufficiently that work can begin. Issues should be well scoped and have clear goals.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Goals and exit criteria


Flow:
* A new issue is filed, raising an important question.
* Maintainer labels the issue as `needs-discussion`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question is better reserved for help tickets.

* If discussion happens elsewhere, record relevant meeting notes into the issue.
* When an agreement is made, clearly summarize the decision, and list any resulting action items which need to be addressed.

## When Issues get Stuck
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about issues that are asking for things not on the immediate roadmap? Ie yes we'd like to support this, but have already 6 month of work ahead of us.

@SergeyKanzhelev
Copy link
Member

Let's move this document discussion to the specification repository. Technical Committee will be deciding on this process. Please re-submit this doc there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants