πŸ”¬ Triaging and prioritizing issues ΒΆ

This document captures how the Kubeapps team triages and prioritizes issues.

πŸ“ Issues ΒΆ

To guide and simplify the process, Kubeapps provides a set of issue templates to create new issues:

TemplateDescription
Bug reportFile a bug for something not working as expected.
Feature requestFile a request for a new feature.
Support requestFile a request for questions and support.
IssueFile an issue to describe work to be performed.

Kubeapps keeps a backlog of issues on GitHub submitted both by maintainers and contributors.

  • The backlog is completely open. The maintainer team, along with the entire Kubeapps community, files all feature enhancements, bugs, and potential future work into the open repository.
  • Issues are closed if solved, or outdated (meaning the issue does not apply anymore according to the evolution of Kubeapps or it was waiting for more information which was never received).

🏷 Labeling ¢

Kubeapps maintainers team operates with 4 groups of labels:

kind/* ΒΆ

The type of issue. kind powers our filtering to understand what qualifies as a bug, proposal, feature, enhancement, question or documentation.

LabelDescription
kind/bugAn issue that reports a defect in an existing feature
kind/documentationAn issue that reports an update related to project documentation
kind/enhancementAn issue that reports an enhancement for an implemented feature
kind/featureAn issue that reports a feature (approved) to be implemented
kind/proposalAn issue that reports a new feature proposal to be discussed
kind/questionAn issue that request for feedback or support to maintainers team

component/* ΒΆ

The relevant component(s) for the issue. Components are high level areas of the Kubeapps architecture. They are used to group issues together with other related issues.

LabelDescription
component/api-serverAn issue related to kubeapps api-server
component/apprepositoryAn issue related to kubeapps apprepository
component/asset-syncerAn issue related to kubeapps asset-syncer (to be deprecated)
component/authenticationAn issue related to kubeapps authentication
component/ciAn issue related to kubeapps ci system
component/kubeopsAn issue related to kubeops (deprecated)
component/multi-clusterAn issue related to Kubeapps configuration for multi-cluster support
component/packagesAn issue related to kubeapps packaging formats to be distributed (Helm chart and Carvel packages)
component/pinniped-proxyAn issue related to kubeapps integration with pinniped-proxy
component/plugin-carvelAn issue related to kubeapps plugin to manage Carvel packages
component/plugin-fluxAn issue related to kubeapps plugin to manage Flux packages
component/plugin-helmAn issue related to kubeapps plugin to manage Helm packages
component/plugin-operatorsAn issue related to kubeapps plugin to manage operators (to be implemented)
component/plugin-resourcesAn issue related to kubeapps plugin to manage resources
component/uiAn issue related to kubeapps UI
component/websiteAn issue related to kubeapps website

contribution labels ΒΆ

Specific labels for contributors. Contribution labels help to identify a relevant attribute of the issue.

LabelDescription
awaiting-more-evidenceNeed more info requested to actually get it done.
cla-notrequiredAutomatic label for CLA signature
cla-rejectedAutomatic label for CLA signature when rejected
dependenciesAutomatic label set to pull requests that update a dependency file
github_actionsLabel assigned to pull requests that update GitHub Actions code
goAutomatic label set to pull requests that update Go code
good first issueGood first issues to start contributing to Kubeapps.
help wantedThe maintainer team wants help on an issue or pull request.
javascriptAutomatic label set to pull requests that update javascript code
next-iterationLabel to mark issues to be discussed in the next planning session
rustAutomatic label set to pull requests that update rust code
securityIssues which relate to security concerns.
staleAutomatic label to stale issues due inactivity to be closed if no further action
wontfixIssue marked by the maintainers team as not fixable

Metadata ΒΆ

There is some metadata for Kubeapps project in GitHub to be added to the issues:

size/
‘XS’A task that can be done by a person in less than 1 full day
‘S’A story that can be done by a person in 1-3 days, with no uncertainty
‘M’A story that can be done by a person in 4-7 days, possibly with some uncertainty
‘L’A story that requires investigation and possibly will take a person a full 2-week iteration
‘XL’A story too big or with too many unknowns. Needs investigation and split into several ones
priority/Description
⛔️ P0Unbreak-now. Drop everything and fix it
πŸ”΄ P1Required to be done before other things
🟠 P2Ordinary flow of work
πŸ”΅ P3Nice to have, but not required to be tackled

⛳️ Milestones ΒΆ

Milestones are used by Kubeapps maintainers to map issues into EPICs. An EPIC represents a series of issues that share a broader strategic objective. An EPIC will typically require development work covering several iterations (in our case, EPICs must be defined to be covered in a quarter). Every triaged issue should have a milestone associated.

Kubeapps EPICs must include: title,description, acceptance criteria, end-date (the end of a quarter).

❔ Triaging process ΒΆ

Kubeapps new issues will be triaged by the maintainers team. The triage process will consist of:

  • At any moment:
    • Read the new issue:
      • If more information is requested, the issue must be labeled as awaiting-more-evidence and a comment requesting for information should be added.
      • Metadata for size and priority for the issue must be set as: Needs triage.
      • Check if it is an issue to be accomplished as soon as possible (P0) and move it to the To Do column.
      • If not, the issue must remain in the Backlog column.
  • During planning session:
    • Review issues marked as Needs triage.
    • Add labels and update metadata (required): kind, component, size and priority.
      • Check if it is a good-first-issue to start contributing to Kubeapps and label the issue as such.
      • Check if it is an issue to be discussed to be included in next iteration and label it as next-iteration.

πŸ—„ Stale issues ΒΆ

Automatically stalebot is checking inactive issues to label them as stale. An issue becomes stale after 15 days of inactivity and the bot will close it after 3 days of inactivity for stale issues. To be considered:

  • Issues labeled as kind/bug, kind/documentation, kind/enhancement or kind/feature, will never be labeled as stale.
  • Issues labeled as awaiting-more-evidence, kind/proposal or kin/question could be considered stale.
  • The label to use when marking an issue as stale is stale.

πŸ”’ Prioritizing process ΒΆ

This process mainly consists on checking issues in the Backlog and moving to the To Do column to be tackled during the following iteration.

Criteria:

  1. Issues marked as P0 β†’ Add to the iteration (To Do).

  2. Review issues to complete those milestones planned for the current quarter and add issues to be completed during next iteration by priority. To be considered for the capacity:

    • At least 1 issue labeled as kind/bug must be included for every single iteration.
    • At least 1 issue requested from the Kubeapps community must be included for every single iteration.
    • At least 1 issue labeled as component/ci must be included quarterly to make improvements in ci system.
  3. Then review issues labeled as next-iteration and discuss what issues should be included according to the maintainers team capacity, issues already added to the To Do column and uncompleted issues from previous iterations (In progress).