Outline how upstream issues are triaged and explain what the states of the issue means. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
7.4 KiB
Handling of gitlab issues
This document describes the life cycle and handling of upstream gitlab issues. Issue is an aggregate term for bug reports, feature requests, user questions and discussions.
For members of the project this is a guideline how to handle issues and how to transition them between states based on the interaction with the reporter.
It is imperative we collaboratively keep the issues organized and labeled, otherwise we'll end up creating an unnecessary maintenance burden for us.
For others, this article should only server as an outline what to expect when filing an issue.
Types of issues
Every issue in our GitLab tracker bears the kind::
namespace prefix. Once triaged, each issue will have one of the following types assigned to it.
Note that issues can be moved freely between the different issue kinds if needed.
Bugs - kind::bug
This issue describes a flaw in the functionality. The user is expected to describe how to reproduce the issue and add debug logs or a backtrace of all daemon threads in case any of the components crashed.
Feature requests - kind::enhancement
This issue type describes non-existing functionality the user would like to add to libvirt. Generally the issue should first focus on what the user wants to achieve rather than any form of technical detail so that it's obvious what the end goal is.
Detailed technical aspects can be described later but should not be the main focus of the initial report. With a clear end-goal it's sometimes possible to recommend another solution with the same impact.
User support queries - kind::support
This label is used with issues which don't directly correspond to a flaw or a missing feature in the project like usage-related queries.
Discussions - kind::discussion
Any form of discussion which isn't related to any existing bug or feature request.
States of issues
States allow project maintainers filtering out issues which need attention, so please keep the issue state updated at all times.
Confirmed issues - state::confirmed
In case of kind::bug
issues the confirmed state means that there is a real problem with the functionality and there is (seemingly) enough information to figure out where the problem is and fix it.
kind::enhancement
issues should be marked as confirmed as long as the general idea of the required functionality makes sense and would be in line of the project strategy.
Note: Unless the issue is assigned to a specific person, the confirmed state does not necessarily mean that anybody is actively looking to implement the functionality or fix the problem. See the disclaimer.
Unconfirmed issues - state::unconfirmed
kind::bug
issues are considered unconfirmed when there is seemingly enough information describing the problem, but the triager is not sure whether the problem would be considered a bug.
In case of kind::enhancement
issues the unconfirmed state is similarly used for feature requests which might not make sense.
In general use of the unconfirmed state should be avoided if possible, although if the initial triager requests all necessary information from the reporter, but is not sure about the issue itself it's okay to defer it to somebody else by setting the state::unconfirmed
label and thus deferring it to somebody with more knowledge about the code.
Issues needing additional information from reporter - state::needinfo
If additional information is requested from the reporter of the issue the state:needinfo
label should be added, so that the issues can be easily filtered.
If the reporter doesn't respond to the request in a timely manner (~2 weeks) the issue should be closed prompting the reporter to reopen once they provide the required information.
Triage process
The following steps should be applied to any new issue reported.
- Set the labels categorrizing the area of the issue, e.g.
driver-qemu
,virsh
,xml
etc. If an appropriate label is not available, add it.- Check whether the reporter described the issue sufficiently. If something is missing or unclear, ask for additional data and set
state::needinfo
.
- Once all requested information is provided set the appropriate state:
state::confirmed
if you are certain where the bug is or that the feature request makes sensestate::unconfirmed
to defer the investigation to somebody else
Issues needing attention
The following gitlab search queries provide lists of issues which require attention from the upstream community.
- Untriaged issues
Issues which haven't undergone the Triage process yet.
- Unconfirmed bugs
Bugs which should have all the information needed but the initial triager couldn't determine nor confirm the problem.
- Unconfirmed features
Feature requests having the proper description of the request but it's not yet clear whether the feature makes sense.
Assigning issues
When you plan to address an issue please assign it to yourself to indicate that there's somebody working on it and thus prevent duplicated work.
Contribution possibility for non-members of the project
Anyone is very welcome to assist in handling and triage of issues.
Even though non-members don't have permissions to set the labels mentioned above, you can always post a comment to the issue, describing your findings or prompt the reporter to provide more information (obviously adhering to the code of conduct) or even analyze where the problem lies followed by submitting a patch to the mailing list.
Someone from the project members will then take care of applying the correct label to the issue.
Disclaimer
Please note that libvirt, like most open source projects, relies on contributors who have motivation, skills and available time to work on implementing particular features or fixing bugs as well as assisting the upstream community.
Reporting an issue can be helpful for determining demand and interest or reporting a problem, but doing so is not a guarantee that a contributor will volunteer to implement or fix it.
We even welcome and encourage draft patches implementing a feature to be sent to the mailing list where they can be discussed and further improved by the community.