Skip to content

Maintenance: labels strategy & automation for Issues and PRs #306

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

Closed
saragerion opened this issue Dec 14, 2021 · 11 comments · Fixed by #1167
Closed

Maintenance: labels strategy & automation for Issues and PRs #306

saragerion opened this issue Dec 14, 2021 · 11 comments · Fixed by #1167
Assignees
Labels
automation This item relates to automation completed This item is complete and has been merged/shipped documentation Improvements or additions to documentation internal PRs that introduce changes in governance, tech debt and chores (linting setup, baseline, etc.)

Comments

@saragerion
Copy link
Contributor

saragerion commented Dec 14, 2021

Description of the feature request

Minor feature but useful for governance of external contributions by the AWS community.
It would be good to review labels used for Github Issues and PR's.

  • Review the existing labels and add, edit, delete labels also based on other runtimes
  • When applicable, automate the assignment of labels based on specific criteria
  • Nice to have: make sure that there is consistency and labels convention (uppercase vs lower case, spaces, characters used, ...)

Problem statement

Inspired by this PR: aws-powertools/powertools-lambda-python#894
Without proper labelling the runtime maintainers and the AWS community can be confused about the current status of the item (issue or PR).

Summary of the feature

N/A

Code examples

See other runtimes:
https://github.com/awslabs/aws-lambda-powertools-python/labels
https://github.com/awslabs/aws-lambda-powertools-java/labels

Benefits for you and the wider AWS community

Improved transparency and governance.

Describe alternatives you've considered

N/A

Additional context

N/A

Related issues, RFCs

N/A

@saragerion saragerion added the all label Dec 14, 2021
@dreamorosi
Copy link
Contributor

Agree, additionally it'd be great if all issues could go by default in the "Issues" project as "Needs clarification or refinement (untriaged)" as well.

@dreamorosi
Copy link
Contributor

Related to #133

@ghost
Copy link

ghost commented Mar 17, 2022

As discussed with @ijemmy, I'd be happy to support with this one.

@dreamorosi dreamorosi assigned ghost Mar 17, 2022
@ghost
Copy link

ghost commented Mar 18, 2022

Here is my proposal how we could structure the labels for issues and pull requests. Please let me know if you'd like to change something!

Labels

General

Label Applies to Comment
good-first-issue Issues Something that is suitable for those who want to start contributing
help-wanted Issues We would really appreciate some support from community for this one
breaking-change Issues, PRs Introduces a breaking change
duplicate Issues This issue is a duplicate of an existing one; a reference is required in the comments

Scope

Applies to: Issues, PRs

Label Comment
scope/packages Affects one or multiple tools (packages)
scope/docs Affects documentation, README, CONTRIBUTING, and other similar docs
scope/tests Affects tests only; applies when there are no changes in the tools (packages)
scope/infrastructure Affects the repo infrastructure, including GitHub Actions, workflows, compiler settings, ...

Status

Applies to: Issues

These labels do not resemble the columns in the Issues project, but rather focus on the actual issue state. The label helps understand if any action is required by maintainers or by the author(s).

Label Comment
status/submitted A newly created issue, auto-assigned on creation
status/discussing The issue needs to be discussed, elaborated, or refined; applies to both external and internal ones
status/confirmed The scope is clear, ready for implementation
status/on-hold There are some blockers that prevent this from being implemented (technical or any others); needs to be periodically revised
status/rejected wontfix - this is something we will not be working on (at least, not in the measurable future); might be changed later though

Type

Identifies issues and PRs by their type. This label will be auto-assigned to all PRs linked to issues. For PRs without any issues (should be rarely the case), the label needs to be assigned manually.

Label Applies to Comment
type/rfc Issues Request for a new feature; to be discussed and confirmed
type/bug Issues, PRs Something isn't working
type/feature Issues, PRs A new feature linked to a type/rfc issue (e.g. partial implementation) or an enhancement for an existing feature
type/chore Issues, PRs Any non-functional change (docs, infrastructure, refactoring, ...)
type/dependency Issues, PRs Updates a dependency without any functional change (mostly dependabot's work)
type/question Issues Not really an issue, but a question posted as an issue; doesn't need to be implemented as a PR

Priority

Applies to: Issues, PRs

Identifies issues and PRs by their priority. Helps focus on things that really matter.
The PRs will get this label automatically from the issues they reference (if available).

Label Comment
priority/high Must Have
priority/medium Should Have
priority/low Could Have

Note: Won't Have is represented by status/rejected.

Source

Applies to: Issues, PRs

Identifies issues and PRs by their origin.
Helps keep track on the number of changes coming from the maintainers and from the community.

Label Comment
source/internal An issue or a PR created by maintainers
source/external An issue or a PR created by the community or by customers

Packages

Applies to: Issues, PRs

Classifies the issues and the pull requests according to the changes needed in the tools (packages).
For issues, these labels can be assigned manually. For PRs, they will be assigned automatically based on the paths of the changed files. For issues and PRs not related to packages (like e.g. docs, infrastructure), no package/* labels will be assigned.
The label makes easier to identify the scope and see the statistics.

Label Comment
package/common Not always obvious for issues
package/logger
package/metrics
package/tracer

Pull request size

Applies to: PRs

Classifies the pull requests according to the number of changed code lines.
The label makes it easier to see how much time is needed for reviewing the PR.

Label Number of changed code lines
size/XS 0-9
size/S 10-29
size/M 30-99
size/L 100-499
size/XL 500-999
size/XXL 1000+

Automation

Action Automation for labels
New issue submitted status/submitted and move to project Issues (1st column)
New issue submitted source/internal or source/external based on submitter
Issue moved to 2nd column in the project Issues remove status/submitted or status/discussing, add status/confirmed
Dependabot PR submitted type/dependency
New PR submitted package/* based on changed files
New PR submitted size/* based on changes
New PR submitted apply scope/*, priority/*, source/*, and type/* from referenced issue
Breaking change option selected in PR breaking-change

@dreamorosi
Copy link
Contributor

Thanks @AWSDB for the thorough proposal, I like it so far! Few notes/questions:

  • Do you think it would make sense to add a scope/examples label, or would these fall under scope/docs?
  • Would it be possible to try to label new issues with package/* & type/* based on the title? I know this won't work 100% of times but since we have templates in some cases it might work.
  • What would happen to all the existing issues? Is there any way of re-labeling them according to the new system or should we do it manually (which is fine, just asking)

@ghost
Copy link

ghost commented Mar 21, 2022

Happy to discuss the points you mentioned, @dreamorosi!

  • scope/examples: I think, we can decide what better suits our needs - scope/examples is more descriptive, but at the same time it adds a new label that doesn't much differ from scope/docs. Examples could be also seen as documentation, but they are of course somewhat different from the actual docs published. What would you prefer - a dedicated category or fewer labels?
  • Auto-labeling: While we could define some regex guesses or rules, I doubt we can make this reliable enough. That means, we will still need to inspect and review the assigned labels for every issue. Should we maybe start without that first, settle the new labeling schema, and then try to add auto-labeling for package/* and type/*?
  • Label migration: Some of the labels can be just replaced (e.g. bug with type/bug) - so old issues and PRs will automatically get the new labels instead of old ones. Not needed labels can be simply deleted. A script (manual workflow) can be created for automatically assigning new labels where possible (like size/* or package/*). Some labels will need to be assigned manually though.

@saragerion
Copy link
Contributor Author

Hi @AWSDB,
first of all thanks a lot for picking up this issue and detailing your proposal.
I noticed that the labels syntax has changes from key:value to key/value. I don't have a strong opinion about it, but do you find it more readable?

Scope

Are the possible values mutually exclusive? I am assuming not.
For PRs, it would be nice to add labels automatically based on changes happened on specific folders (docs, examples, .github). I would also add scope/cicd

Status

Looking at ways to reduce the manual tasks for maintainers, I think status/discussing is redundant. We acknowledge every open issue that is submitted, and then we politely reject it or agree on it.
Also, I am more keen on something like status/wontdo or similar rather than "status/rejected" as the latter feels more "confrontational" (in my opinion).

Type

It seems like this is a mix between our issue types and our semantic types.
Which one of the 2?

Pull request size

That's an interesting unit of measure. I normally look at PRs in terms of files.

@dreamorosi
Copy link
Contributor

Agree with @saragerion here, I think automation is key to this topic. This way we can create a mechanism, on which we can iterate to improve it overtime, instead of relying on good intentions.

Not saying it has to be part of a single PR, I'd be happy to have one to set up labels and later automation but I'd like to at least get the ball rolling on this area before considering the issue as completed.

@ghost
Copy link

ghost commented Apr 7, 2022

Thank you for the feedback @saragerion! Let me answer your questions.

key:value to key/value

It's rather category/value than key:value. E.g. compare with branch names like feature/something or bugfix/something. But we can surely use a colon instead of a forward slash keeping the key-value paradigm in mind - it's actually a matter of taste.

Scope
Are the possible values mutually exclusive?

I'd propose to keep them mutually exclusive (also for brevity). The scope label would describe the purpose, the main focus of the PR or issue. A packages PR can definitely contain tests (and actually should), as well as docs, but - from my point of view - labeling such PRs with all three labels (packages + docs + tests) adds not so much value. So I'd see the scope/* label not as "what's inside", but rather "what it's for".

Automated labeling for PRs is of course possible here (based on the changed content). scope/cicd fits into scope/infrastructure from my point of view. What do you think?

status/discussing

It's probably not the best naming. A better idea? My thoughts were: how would you tag issues that need some further input or clarification from the requester? "Feedback needed" or "On hold until clarified" etc. Do we want to distinguish such issues from the other ones? Otherwise, this label is redundant of course.

a mix between our issue types and our semantic types

Yes, it's a combination of both (a bit "condensed"). Do you feel like separating them would be beneficial? I tried to figure out the minimal number of types without being too verbose.


@dreamorosi, I agree - automation is key here. And I also believe some basic automation should be implemented right away, in the same PR - at least, the basic rules. This shouldn't bee too expensive to set up.

@saragerion
Copy link
Contributor Author

This is an important feature for governance and management, but this shouldn't be a show stopper for the upcoming release candidate so setting a lower priority.

@saragerion saragerion removed this from the production-ready-release milestone May 16, 2022
@dreamorosi dreamorosi unassigned ghost Nov 9, 2022
@dreamorosi dreamorosi added internal PRs that introduce changes in governance, tech debt and chores (linting setup, baseline, etc.) and removed priority:medium labels Nov 9, 2022
@dreamorosi dreamorosi added automation This item relates to automation documentation Improvements or additions to documentation confirmed The scope is clear, ready for implementation labels Nov 13, 2022
@dreamorosi dreamorosi self-assigned this Nov 14, 2022
@dreamorosi dreamorosi changed the title all: labels strategy & automation for Issues and PRs Maintenance: labels strategy & automation for Issues and PRs Nov 14, 2022
@dreamorosi dreamorosi moved this from Working on it to Pending review in AWS Lambda Powertools for TypeScript Nov 15, 2022
@dreamorosi dreamorosi linked a pull request Nov 15, 2022 that will close this issue
13 tasks
Repository owner moved this from Pending review to Coming soon in AWS Lambda Powertools for TypeScript Nov 19, 2022
@github-actions
Copy link
Contributor

⚠️ COMMENT VISIBILITY WARNING ⚠️

Comments on closed issues are hard for our team to see.
If you need more assistance, please either tag a team member or open a new issue that references this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.

@github-actions github-actions bot added the pending-release This item has been merged and will be released soon label Nov 19, 2022
@dreamorosi dreamorosi removed the confirmed The scope is clear, ready for implementation label Dec 21, 2022
@dreamorosi dreamorosi added completed This item is complete and has been merged/shipped and removed pending-release This item has been merged and will be released soon labels Jan 13, 2023
@dreamorosi dreamorosi moved this from Coming soon to Shipped in AWS Lambda Powertools for TypeScript Jan 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automation This item relates to automation completed This item is complete and has been merged/shipped documentation Improvements or additions to documentation internal PRs that introduce changes in governance, tech debt and chores (linting setup, baseline, etc.)
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants