Bug Gardening

Not only is it important to beta test point releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality. and bleeding edgebleeding edge The latest revision of the software, generally in development and often unstable. Also known as trunk. WordPress nightly builds, but it’s also important to test and confirm reported bugs, and test patches submitted for possible inclusion to WordPress before they ever makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). it into the nightly builds. This job is mostly handled by volunteers (such as yourself) that serve as bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. gardeners.

The bug tracker contains numerous, wildly different workflows through which all types of reported bugs, enhancements, new features, and various tasks are handled by reporters, gardeners, developers, and committers. It can be incredibly confusing trying to grasp the big picture all at once, but you don’t have to.

If you are new to the bug tracker and want to help out, here’s how you can get started with your first simple workflow. Once you have spent some time in this workflow, the rest of the tracker will become much more familiar, and you can feel confident in exploring other areas of TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. that also need help.

Keep an eye on upcoming WordPress meetings to join a bug scrub.

The Bugfix Review Workflow The Bugfix Review Workflow

In this workflow, we are only going to work on tickets categorized as bugs/defects, and also just the ones with patches attached that supposedly fix those bugs. Additionally, this workflow only involves tickets in the Awaiting Review or the Future ReleaseRelease A release is the distribution of the final version of an application. A software release may be either public or private and generally constitutes the initial or new generation of a new or upgraded application. A release is preceded by the distribution of alpha and then beta versions of the software. milestones, meaning that these are mostly reported bugs and patches that have not been reviewed or thoroughly tested yet. The Patches to Defects That Need Review report in Trac handles these filters for you already, so go ahead and open that now.

There are over 600 unique tickets in the report (at the time of this writing), so the first step is to choose one of those to start with. If you are just starting out as a bug gardener, we recommend avoiding any tickets more than 12 months old. Older tickets usually involve some controversial changes, or involve complex problems with complex solutions, requiring a heavier review process, which is usually why they have been stuck in the review process for more than a year.

You should try to work on tickets related to parts of WordPress that you are familiar with. The report is grouped by component, which makes the task of finding your first ticketticket Created for both bug reports and feature development on the bug tracker. to work on much easier.

Last, you should skip over any tickets with the reporter-feedback or dev-feedback keywords – you won’t be able to do anything with those tickets without more information from the reporter or a coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developer.

Once you have found a ticket you want to work on, continue reading the rest of the instructions here for how you should address the ticket you have picked out.

1. Ensure The Ticket Is A Bug 1. Ensure The Ticket Is A Bug

The first step required for any of the tickets in this report is to ensure that the ticket is in fact a bug, and not a feature requestfeature request A feature request should generally begin the process in the ideas forum, on a mailing list, as a plugin, or brought to the attention of the core team, such as through scope meetings held for each major release. Unsolicited tickets of this variety are typically, therefore, discouraged. or enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature..

Since new tickets are assigned to the Awaiting Review milestone by default, this report will include completely fresh issues, assuming the reporter attached a patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. and added the has-patch keyword properly upon submission. Some of these tickets have not been through an initial review to ensure it was submitted with the proper issue type, component, and keywords. The documentation on the ticket properties should help clarify exactly which values the ticket type and component should be set as, and what keywords the ticket should have.

Considering what is involved for new tickets to be included in this report, the reporters submitting tickets listed here usually have a fairly good feel for the ticket properties and how they should be set. However, this is one of those exceptions to the rule – you will need to be much more critical of this in other workflows.

The most common problem you need to watch for in this workflow are tickets that have been submitted as a defect, but in reality, the issue (and patch) is actually an enhancement or a feature request. If the ticket describes new functionality, or even a change to existing functionality that is working perfectly fine (but perhaps not in the most ideal way), then the ticket type needs to be set as an enhancement (in the case of a change/addition to an existing component), or as a feature request (in the case of entirely new features). If this happens, fix the ticket type, and move on to the next ticket.

If the ticket is actually a bug, you need to confirm that the reported bug is, in fact, one that can be reproduced.

Top ↑

2. Confirm The Bug 2. Confirm The Bug

You should always test for the bug using a SVN trunk checkout of WordPress. In the rare cases of critical bugs and regressions, then you should also test for the bug in the latest stable release of WordPress too.

Remember that it’s possible the bug only exhibits itself under specific versions of PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20, MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com/., browsers, and/or certain WordPress settings (i.e. multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site, roles/capabilities, different plugins/themes).

  • If the reporter wasn’t clear and you can’t reproduce it, ask for clarification from the reporter, and add the reporter-feedback keyword to the ticket.
  • If the reporter was very clear, and you still can’t reproduce the bug under their claimed conditions, leave a note that you tested it and couldn’t reproduce the bug.
  • If you are the second tester (besides the reporter) that can’t reproduce the bug, there’s a chance that something else could be wrong with the reporter’s installation/configuration. If this happens, add the dev-feedback keyword to the ticket, and move to the next ticket.

Top ↑

3. Confirm The Patch 3. Confirm The Patch

If you were able to reproduce the bug, then it is time to confirm the patch. Don’t worry too much about how the patch was written, unless you are a more experienced developer and can immediately spot problems with the way the patch was written.

Download and apply the suggested patch to the same installation you were able to confirm the bug on. Sometimes a ticket will have multiple patches attached, and, if so, usually only the latest suggested patch needs testing; however, you might need to test the other patches too, if they haven’t been tested.

If any of the following conditions apply, remove the has-patch keyword, and add the needs-patch keyword:

  • The patch does not apply cleanly, or does not follow the coding standards. Add the needs-refresh keyword for this case.
  • The patch does not fix the bug. This seems obvious, but some patches might not have been written for the development version of WordPress, yet still apply cleanly where things have changed. The patch might only fix the bug under a specific version of PHP and MySQL, or won’t fix the bug in multisite.
  • The patch introduces new errors or warning messages. Remember to test with debug turned on.
  • New unit tests fail with the patch applied.
  • The patch does not use appropriate data validation and output sanitization, or doesn’t make checks against user roles and capabilities when it should.
  • The patch is not adequate for any other reason not covered here. We strive for legible, efficient, and secure code in WordPress, so don’t be afraid to point out areas of a patch that should be improved, even if it does actually fix the bug.

Make sure you explain why the patch cannot be accepted in the ticket notes, in addition to removing the has-patch keyword and adding needs-patch. If, however, the patch looks good on all fronts, then you should explain what aspects of the patch you tested in the ticket notes, and triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. the ticket next.

Top ↑

4. Triage The Ticket 4. Triage The Ticket

With both the bug and patch confirmed, the priority of the ticket often still needs to be adjusted in this workflow. We also need to decide whether the patch should be applied in the next point release (x.x.x), the next major release (x.x), or if it should still be delayed farther into the future.

Note: New Trac users do not have the ability to adjust the priority of a ticket or move it to a different milestone by default, so until you feel comfortable with this workflow and Trac in general, this step will require you to simply add a note to the ticket explaining that the priority or milestone should be adjusted. One of the other bug gardeners will see the update, and adjust the ticket accordingly if it looks correct. When you feel comfortable making these adjustments yourself, you can request access on the Make WordPress Core blogblog (versus network, site).

Tickets related to regressions and critical bugs should be immediately set to the highest priority, and assigned to the next point release milestone. Regressions are broken features that were working perfectly fine in the latest release or the WordPress release before that, and we take these seriously. The same goes for critical bugs which may not be a regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5., but still involves an aspect of a major feature being broken for a majority of users. This mostly refers to bugs with high exposure, such as breaking the public-facing side of WordPress, or major breaks in the administration panel. This should be very rare, and should be used sparingly.

Tickets involving patches that fix simple typos, add inline documentation, or fix minor style/appearance issues, should be set to a lower priority.

All remaining tickets in this workflow should be triaged to the next major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope. milestone. This does not normally apply to all tickets in general, just confirmed defects with quality patches, which is all this workflow deals with. If the WordPress development cycle is in the middle of release candidates for the next major release, critical bug fixes should still be assigned to the Next Release milestone; however, everything else should be moved to the Future Release milestone, and should also be tagged with the keyword x.x-early (where x.x is the next major release after the one with a release candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). out). For example, during the 3.6 release candidate phase, confirmed fixes for non-critical bugs should be tagged with the 3.7-early keyword.

Top ↑

Learn More Learn More

Last updated: