Discussions happen in #bugbug on irc.mozilla.org.
- Issues marked as
good first issueare self-contained enough that a contributor should be able to work on them.
- Issues marked as
reserved-for-beginnersare reserved for people who have never contributed to the project before.
- Issues are to be considered as not assigned, until there is a PR linked to them.
bug vs feature - Bugs on Bugzilla aren't always bugs. Sometimes they are feature requests, refactorings, and so on. The aim of this classifier is to distinguish between bugs that are actually bugs and bugs that aren't. The dataset currently contains 2110 bugs, the accuracy of the current classifier is ~93% (precision ~95%, recall ~94%).
defect vs feature vs task - Extension of the previous classifier to detect differences also between feature requests and development tasks.
component - The aim of this classifier is to assign product/component to (untriaged) bugs.
regression vs non-regression - Bugzilla has a
regressionkeyword to identify bugs that are regressions. Unfortunately it isn't used consistently. The aim of this classifier is to detect bugs that are regressions.
tracking - The aim of this classifier is to detect bugs to track.
uplift - The aim of this classifier is to detect bugs for which uplift should be approved and bugs for which uplift should not be approved.
devdocneeded - The aim of this classifier is to detect bugs which should be documented for developers.
qaneeded - The aim of this classifier is to detect bugs that would need QA verification.
pip install -r requirements.txt and
pip install -r test-requirements.txt
If you update the bugs database, run
xz -v9 -k data/bugs.json.
If you update the commits database, run
xz -v9 -k data/commits.json.
run.py script to perform training / classification. The first time
run.py is executed, the
--train argument should be used to automatically download databases containing bugs and commits data.
Running the repository mining script
- Clone https://hg.mozilla.org/mozilla-central/.
./mach vcs-setupin the directory where you have cloned mozilla-central.
- Run the
repository.pyscript, with the only argument being the path to the mozilla-central repository.
Note: the script will take a long time to run (on my laptop more than 7 hours). If you want to test a simple change and you don't intend to actually mine the data, you can modify the repository.py script to limit the number of analyzed commits. Simply add
limit=1024 to the call to the
Structure of the project
bugbug/labelscontains manually collected labels;
bugbug/db.pyis an implementation of a really simple JSON database;
bugbug/bugzilla.pycontains the functions to retrieve bugs from the Bugzilla tracking system;
bugbug/repository.pycontains the functions to mine data from the mozilla-central (Firefox) repository;
bugbug/bug_features.pycontains functions to extract features from bug/commit data;
bugbug/model.pycontains the base class that all models derive from;
bugbug/modelscontains implementations of specific models;
bugbug/nn.pycontains utility functions to include Keras models into a scikit-learn pipeline;
bugbug/utils.pycontains misc utility functions;
bugbug/nlpcontains utility functions for NLP;
bugbug/labels.pycontains utility functions for handling labels;
bugbug/bug_snapshot.pycontains a module to play back the history of a bug.