summaryrefslogtreecommitdiffstats
path: root/doc/developer-guide/Bug-Triage.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/developer-guide/Bug-Triage.md')
-rw-r--r--doc/developer-guide/Bug-Triage.md400
1 files changed, 400 insertions, 0 deletions
diff --git a/doc/developer-guide/Bug-Triage.md b/doc/developer-guide/Bug-Triage.md
new file mode 100644
index 00000000000..bcd475e81fb
--- /dev/null
+++ b/doc/developer-guide/Bug-Triage.md
@@ -0,0 +1,400 @@
+Bug Triage Guidelines
+=====================
+
+- Triaging of bugs is an important task; when done correctly, it can
+ reduce the time between reporting a bug and the availability of a
+ fix enormously.
+
+- Triager should focus on new bugs, and try to define the problem
+ easily understandable and as accurate as possible. The goal of the
+ triagers is to reduce the time that developers need to solve the bug
+ report.
+
+- A triager is like an assistant that helps with the information
+ gathering and possibly the debugging of a new bug report. Because a
+ triager helps preparing a bug before a developer gets involved, it
+ can be a very nice role for new community members that are
+ interested in technical aspects of the software.
+
+- Triagers will stumble upon many different kind of issues, ranging
+ from reports about spelling mistakes, or unclear log messages to
+ memory leaks causing crashes or performance issues in environments
+ with several hundred storage servers.
+
+Nobody expects that triagers can prepare all bug reports. Therefore most
+developers will be able to assist the triagers, answer questions and
+suggest approaches to debug and data to gather. Over time, triagers get
+more experienced and will rely less on developers.
+
+**Bug triage can be summarised as below points:**
+
+- Is there enough information in the bug description?
+- Is it a duplicate bug?
+- Is it assigned to correct component of GlusterFS?
+- Are the Bugzilla fields correct?
+- Is the bug summary is correct?
+- Assigning bugs or Adding people to the "CC" list
+- Fix the Severity And Priority.
+- Todo, If the bug present in multiple GlusterFS versions.
+- Add appropriate Keywords to bug.
+
+The detailed discussion about the above points are below.
+
+Weekly meeting about Bug Triaging
+---------------------------------
+
+We try to meet every week in \#gluster-meeting on Freenode. The meeting
+date and time for the next meeting is normally updated in the
+[agenda](https://public.pad.fsfe.org/p/gluster-bug-triage).
+
+Getting Started: Find reports to triage
+---------------------------------------
+
+There are many different techniques and approaches to find reports to
+triage. One easy way is to use these pre-defined Bugzilla reports (a
+report is completely structured in the URL and can manually be
+modified):
+
+- New **bugs** that do not have the 'Triaged' keyword [Bugzilla
+ link](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&f1=keywords&keywords=Triaged%2CFutureFeature&keywords_type=nowords&list_id=3014117&o1=nowords&product=GlusterFS&query_format=advanced&v1=Triaged)
+- New **features** that do not have the 'Triaged' keyword (identified
+ by FutureFeature keyword, probably of interest only to project
+ leaders) [Bugzilla
+ link](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&f1=keywords&f2=keywords&list_id=3014699&o1=nowords&o2=allwords&product=GlusterFS&query_format=advanced&v1=Triaged&v2=FutureFeature)
+- New glusterd bugs: [Bugzilla
+ link](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&product=GlusterFS&f1=keywords&o1=nowords&v1=Triaged&component=glusterd)
+- New Replication(afr) bugs: [Bugzilla
+ link](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&component=replicate&f1=keywords&list_id=2816133&o1=nowords&product=GlusterFS&query_format=advanced&v1=Triaged)
+- New distribute(DHT) bugs: [Bugzilla
+ links](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&component=distribute&f1=keywords&list_id=2816148&o1=nowords&product=GlusterFS&query_format=advanced&v1=Triaged)
+
+- New bugs against version 3.6:
+ [<https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&product=GlusterFS&f1=keywords&f2=version&o1=nowords&o2=regexp&v1=Triaged&v2>=\^3.6
+ Bugzilla link]
+- New bugs against version 3.5:
+ [<https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&product=GlusterFS&f1=keywords&f2=version&o1=nowords&o2=regexp&v1=Triaged&v2>=\^3.5
+ Bugzilla link]
+- New bugs against version 3.4:
+ [<https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&product=GlusterFS&f1=keywords&f2=version&o1=nowords&o2=regexp&v1=Triaged&v2>=\^3.4
+ Bugzilla link]
+
+- [<https://bugzilla.redhat.com/page.cgi?id=browse.html&product=GlusterFS&product_version>=&bug\_status=all&tab=recents
+ bugzilla tracker] (can include already Triaged bugs)
+
+- [Untriaged NetBSD
+ bugs](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&keywords_type=nowords&op_sys=NetBSD&product=GlusterFS)
+- [Untriaged FreeBSD
+ bugs](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&keywords_type=nowords&op_sys=FreeBSD&product=GlusterFS)
+- [Untriaged Mac OS
+ bugs](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&keywords_type=nowords&op_sys=Mac%20OS&product=GlusterFS)
+
+In addition to manually checking Bugzilla for bugs to triage, it is also
+possible to receive emails when new
+bugs are filed or existing bugs get updated.
+
+If at any point you feel like you do not know what to do with a certain
+report, please first ask [irc or mailing
+lists](http://www.gluster.org/community/index.html) before changing
+something.
+
+Is there enough information?
+----------------------------
+
+To make a report useful, the same rules apply as for
+[bug reporting guidelines](./Bug Reporting Guidelines.md).
+
+It's hard to generalize what makes a good report. For "average"
+reporters is definitely often helpful to have good steps to reproduce,
+GlusterFS software version , and information about the test/production
+environment, Linux/GNU distribution.
+
+If the reporter is a developer, steps to reproduce can sometimes be
+omitted as context is obvious. *However, this can create a problem for
+contributors that need to find their way, hence it is strongly advised
+to list the steps to reproduce an issue.*
+
+Other tips:
+
+- There should be only one issue per report. Try not to mix related or
+ similar looking bugs per report.
+
+- It should be possible to call the described problem fixed at some
+ point. "Improve the documentation" or "It runs slow" could never be
+ called fixed, while "Documentation should cover the topic Embedding"
+ or "The page at <http://en.wikipedia.org/wiki/Example> should load
+ in less than five seconds" would have a criterion. A good summary of
+ the bug will also help others in finding existing bugs and prevent
+ filing of duplicates.
+
+- If the bug is a graphical problem, you may want to ask for a
+ screenshot to attach to the bug report. Make sure to ask that the
+ screenshot should not contain any confidential information.
+
+Is it a duplicate?
+------------------
+
+Some reports in Bugzilla have already been reported before so you can
+[search for an already existing
+report](https://bugzilla.redhat.com/query.cgi?format=advanced). We do
+not recommend to spend too much time on it; if a bug is filed twice,
+someone else will mark it as a duplicate later. If the bug is a
+duplicate, mark it as a duplicate in the resolution box below the
+comment field by setting the **CLOSED DUPLICATE** status, and shortly
+explain your action in a comment for the reporter. When marking a bug as
+a duplicate, it is required to reference the original bug.
+
+If you think that you have found a duplicate but you are not totally
+sure, just add a comment like "This bug looks related to bug XXXXX" (and
+replace XXXXX by the bug number) so somebody else can take a look and
+help judging.
+
+You can also take a look at
+https://bugzilla.redhat.com/page.cgi?id=browse.html&product=GlusterFS&product_version>=&bug\_status=all&tab=duplicates's
+list of existing duplicates
+
+Is it assigned to correct component of GlusterFS?
+-------------------------------------------------
+
+Make sure the bug is assigned on right component. Below are the list of
+GlusterFs components in bugzilla.
+
+- access control - Access control translator
+- BDB - Berkeley DB backend storage
+- booster - LD\_PRELOAD'able access client
+- build - Compiler, package management and platform specific warnings
+ and errors
+- cli -gluster command line
+- core - Core features of the filesystem
+- distribute - Distribute translator (previously DHT)
+- errorgen - Error Gen Translator
+- fuse -mount/fuse translator and patched fuse library
+- georeplication - Gluster Geo-Replication
+- glusterd - Management daemon
+- HDFS - Hadoop application support over GlusterFS
+- ib-verbs - Infiniband verbs transport
+- io-cache - IO buffer caching translator
+- io-threads - IO threads performance translator
+- libglusterfsclient- API interface to access glusterfs volumes
+ programatically
+- locks - POSIX and internal locks
+- logging - Centralized logging, log messages, log rotation etc
+- nfs- NFS component in GlusterFS
+- nufa- Non-Uniform Filesystem Scheduler Translator
+- object-storage - Object Storage
+- porting - Porting GlusterFS to different operating systems and
+ platforms
+- posix - POSIX (API) based backend storage
+- protocol -Client and Server protocol translators
+- quick-read- Quick Read Translator
+- quota - Volume & Directory quota translator
+- rdma- RDMA transport
+- read-ahead - Read ahead (file) performance translator
+- replicate- Replication translator (previously AFR)
+- rpc - RPC Layer
+- scripts - Build scripts, mount scripts, etc.
+- stat-prefetch - Stat prefetch translator
+- stripe - Striping (RAID-0) cluster translator
+- trace- Trace translator
+- transport - Socket (IPv4, IPv6, unix, ib-sdp) and generic transport
+ code
+- unclassified - Unclassified - to be reclassified as other components
+- unify - Unify translator and schedulers
+- write-behind- Write behind performance translator
+- libgfapi - APIs for GlusterFS
+- tests- GlusterFS Test Framework
+- gluster-hadoop - Hadoop support on GlusterFS
+- gluster-hadoop-install - Automated Gluster volume configuration for
+ Hadoop Environments
+- gluster-smb - gluster smb
+- puppet-gluster - A puppet module for GlusterFS
+
+Tips for searching:
+
+- As it is often hard for reporters to find the right place (product
+ and component) where to file a report, also search for duplicates
+ outside same product and component of the bug report you are
+ triaging.
+- Use common words and try several times with different combinations,
+ as there could be several ways to describe the same problem. If you
+ choose the proper and common words, and you try several times with
+ different combinations of those, you ensure to have matching
+ results.
+- Drop the ending of a verb (e.g. search for "delet" so you get
+ reports for both "delete" and "deleting"), and also try similar
+ words (e.g. search both for "delet" and "remov").
+- Search using the date range delimiter: Most of the bug reports are
+ recent, so you can try to increase the search speed using date
+ delimiters by going to "Search by Change History" on the [search
+ page](https://bugzilla.redhat.com/query.cgi?format=advanced).
+ Example: search from "2011-01-01" or "-730d" (to cover the last two
+ years) to "Now".
+
+Are the fields correct?
+-----------------------
+
+### Summary
+
+Sometimes the summary does not summarize the bug itself well. You may
+want to update the bug summary to make the report distinguishable. A
+good title may contain:
+
+- A brief explanation of the root cause (if it was found)
+- Some of the symptoms people are experiencing
+
+### Adding people to the "CC" or changing the "Assigned to" field
+
+Normally, developers and potential assignees of an area are already
+CC'ed by default, but sometimes reports describe general issues or are
+filed against common bugzilla products. Only if you know developers who
+work in the area covered by the bug report, and if you know that these
+developers accept getting CCed or assigned to certain reports, you can
+add that person to the CC field or even assign the bug report to
+her/him.
+
+To get an idea who works in which area, check To know component owners ,
+you can check the "MAINTAINERS" file in root of glusterfs code directory
+or querying changes in [Gerrit](http://review.gluster.org) (see
+[Simplified dev workflow](./Simplified Development Workflow.md))
+
+### Severity And Priority
+
+Please see below for information on the available values and their
+meanings.
+
+#### Severity
+
+This field is a pull-down of the external weighting of the bug report's
+importance and can have the following values:
+
+ Severity |Definition
+ -------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------
+ urgent |catastrophic issues which severely impact the mission-critical operations of an organization. This may mean that the operational servers, development systems or customer applications are down or not functioning and no procedural workaround exists.
+ high |high-impact issues in which the customer's operation is disrupted, but there is some capacity to produce
+ medium |partial non-critical functionality loss, or issues which impair some operations but allow the customer to perform their critical tasks. This may be a minor issue with limited loss or no loss of functionality and limited impact to the customer's functionality
+ low |general usage questions, recommendations for product enhancement, or development work
+ unspecified |importance not specified
+
+#### Priority
+
+This field is a pull-down of the internal weighting of the bug report's
+importance and can have the following values:
+
+ Priority |Definition
+ -------------|------------------------
+ urgent |extremely important
+ high |very important
+ medium |average importance
+ low |not very important
+ unspecified |importance not specified
+
+
+### Bugs present in multiple Versions
+
+During triaging you might come across a particular bug which is present
+across multiple version of GlusterFS. Here are the course of actions:
+
+- We should have separate bugs for each release (We should
+ clone bugs if required)
+- Bugs in released versions should be depended on bug for mainline
+ (master branch) if the bug is applicable for mainline.
+ - This will make sure that the fix would get merged in master
+ branch first then the fix can get ported to other stable
+ releases.
+
+*Note: When a bug depends on other bugs, that means the bug cannot be
+fixed unless other bugs are fixed (depends on), or this bug stops other
+bugs being fixed (blocks)*
+
+Here are some examples:
+
+- A bug is raised for GlusterFS 3.5 and the same issue is present in
+ mainline (master branch) and GlusterFS 3.6
+ - Clone the original bug for mainline.
+ - Clone another for 3.6.
+ - And have the GlusterFS 3.6 bug and GlusterFS 3.5 bug 'depend on'
+ the 'mainline' bug
+
+- A bug is already present for mainline, and the same issue is seen in
+ GlusterFS 3.5.
+ - Clone the original bug for GlusterFS 3.5.
+ - And have the cloned bug (for 3.5) 'depend on' the 'mainline'
+ bug.
+
+### Keywords
+
+Many predefined searches for Bugzilla include keywords. One example are
+the searches for the triaging. If the bug is 'NEW' and 'Triaged' is no
+set, you (as a triager) can pick it and use this page to triage it. When
+the bug is 'NEW' and 'Triaged' is in the list of keyword, the bug is
+ready to be picked up by a developer.
+
+**Triaged**
+: Once you are done with triage add the **Triaged** keyword to the
+ bug, so that others will know the triaged state of the bug. The
+ predefined search at the top of this page will then not list the
+ Triaged bug anymore. Instead, the bug should have moved to [this
+ list](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&product=GlusterFS).
+
+**EasyFix**
+: By adding the **EasyFix** keyword, the bug gets added to the [list
+ of bugs that should be simple to fix](./Easy Fix Bugs.md).
+ Adding this keyword is encouraged for simple and well defined bugs
+ or feature enhancements.
+
+**Patch**
+: When a patch for the problem has been attached or included inline,
+ add the **Patch** keyword so that it is clear that some preparation
+ for the development has been done already. If course, it would have
+ been nicer if the patch was sent to Gerrit for review, but not
+ everyone is ready to pass the Gerrit hurdle when they report a bug.
+
+You can also add the **Patch** keyword when a bug has been fixed in
+ mainline and the patch(es) has been identified. Add a link to the
+ Gerrit change(s) so that backporting to a stable release is made
+ simpler.
+
+**Documentation**
+: Add the **Documentation** keyword when a bug has been reported for
+ the documentation. This helps editors and writers in finding the
+ bugs that they can resolve.
+
+**Tracking**
+: This keyword is used for bugs which are used to track other bugs for
+ a particular release. For example [3.6 tracker
+ bug](https://bugzilla.redhat.com/showdependencytree.cgi?maxdepth=2&hide_resolved=1&id=glusterfs-3.6.0)
+
+**FutureFeature**
+: This keyword is used for bugs which are used to request for a
+ feature enhancement ( RFE - Requested Feature Enhancement) for
+ future releases of GlusterFS. If you open a bug by requesting a
+ feature which you would like to see in next versions of GlusterFS
+ please report with this keyword.
+
+Add yourself to the CC list
+---------------------------
+
+By adding yourself to the CC list of bug reports that you change, you
+will receive followup emails with all comments and changes by anybody on
+that individual report. This helps learning what further investigations
+others make. You can change the settings in Bugzilla on which actions
+you want to receive mail.
+
+Bugs For Group Triage
+---------------------
+
+If you come across a bug/ bugs or If you think any bug should to go
+thorough the bug triage group, please set NEEDINFO for bugs@gluster.org
+on the bug.
+
+Resolving bug reports
+---------------------
+
+See the [Bug report life cycle](./Bug report Life Cycle.md) for
+the meaning of the bug status and resolutions.
+
+Example of Triaged Bugs
+-----------------------
+
+This Bugzilla
+[filter](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&keywords_type=anywords&list_id=2739593&product=GlusterFS&query_format=advanced)
+will list NEW, Triaged Bugs