|
|
| (One intermediate revision by the same user not shown) |
| Line 1: |
Line 1: |
| {{ DISPLAYTITLE:Autonag, our bugzilla automatic triage bot and alerting system }}
| | I started getting involved in Mozilla in 2000 heping end users on Usenet, then in 2001 as part of the Netscape Champions program creating documentation and ending our first end users with Netscape Communicator and Mozilla Suite via the creation of onlibne documentation. I later got involved in our early Web Compat initiative. |
|
| |
|
| <p style="font-size: larger; font-weight:bold;">
| | I was a Mozilla Europe not for profit founder and built European marketing and localization communities for Firefox in the early 2000s, around a website in 27 languages that generated 200,000 downloads per day for Firefox in Europe during 7 years. |
| This page lists all the actions done by the [https://github.com/mozilla/relman-auto-nag/ Autonag bot].</p>
| |
|
| |
|
| = Introduction =
| | I also was the Mozilla Spokesperson for Spain for a few years and helped organize our early participation to FOSDEM and dozen of open source events in France and Spain on a shoo-string budget. |
| Every day hundreds of tickets are opened in [https://bugzilla.mozilla.org Bugzilla] which track the tasks, defects and enhancements needed for the development of Firefox and other Mozilla projects.
| |
| Triaging and priotirizing these bugs are an essential part of our development process and we automate part of this process so as to increase our development turn around and improve the quality of our bugs metadata. The set of scripts we use to improve the quality of our bugs, decrease our triaging time and help Release Management ship better quality software is called '''Autonag'''.
| |
|
| |
|
| Initially created as an alerting system (by email) to our triagers, Autonag rules now also make changes to our bugs metadata on Bugzilla so as to fix inconsistencies.
| | I created or helped create several large-scale community websites for the French and Spanish communities (FrenchMozilla, MozFr, MozillaES, Mozilla-Hispano). I am still maintaining MozFr.org with French volunteers. |
|
| |
|
| Rules that change automatically some data in Bugzilla (change a priority, needinfo somebody, close a bug…) are called "Rules with Autofix" and those rules are applied once per hour. ''For now, security bugs aren't touched.''
| | From 2002 to 2016 I worked on creating a localization community from scratch as Mozilla websites and software were only available in English, first as a volunteer, then as a FTE in 2006 and later as one of the first European employees in 2008. I managed the localization of mozilla.org, multiple marketing sites and official extensions translated in 80+ languages with hundreds of volunteer translators. I was also the tech lead for a QA tool used by localizers called [https://transvision.mozfr.org/ Transvision] (an equivalent of searchfox but for translators). |
|
| |
|
| Rules that do not change data but have other results such as generate a report or send an email are called "Rules without Autofix". Rules without autofix are processed once a day (at 2PM CET).
| | In 2016, I created the Firefox Nightly channel Reboot program so as to improve our release quality from the earliest stages with the help of our core community. Follow us on: |
|
| |
|
| = Rules =
| | * https://x.com/FirefoxNightly |
| == With autofix ==
| | * https://blog.nightly.mozilla.org/ |
| | * https://mozilla.social/@FirefoxNightly |
|
| |
|
| {{AutonagRule
| | Since 2018 I am a Firefox Release Manager. As part of this role I created and maintain the [https://whattrainisitnow.com/ What Train Is It Now ?] website. |
| | Rule name = Bug assigned but marked as <code>UNCONFIRMED</code>
| |
| | Purpose = Mitigate an issue in Bugzilla (bugs reported by new users are not tagged as <code>NEW</code>
| |
| | Action = Change the status from <code>UNCONFIRMED</code> to <code>ASSIGNED</code> if there is an assignee
| |
| | Example = 1495908
| |
| | Source = assignee_but_unconfirmed.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Regression keyword is missing
| |
| | Purpose = Regression keyword is important to differentiate an actual defect
| |
| | Action = Sets the <code>regression</code> keyword on bugs with the <code>regression-range-wanted</code> keyword is set
| |
| | Example = 1461034
| |
| | Source = has_regression_range_no_keyword.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Remove <code>leave-open</code> keyword on closed bug
| |
| | Purpose = Clean up a mismatch in metadata
| |
| | Action = If a bug is closed but the <code>leave-open</code> keyword is still set, remove it
| |
| | Example = 1382185
| |
| | Source = leave_open.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = [meta] in title but not in keywords
| |
| | Purpose = Improve metedata quality
| |
| | Action = Adds the <code>meta</code> keyword if the bug title starts by [META]
| |
| | Example = 1435799
| |
| | Source = meta_summary_missing.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Update Firefox Status flags for bugs reopened during Nightly cycle
| |
| | Purpose = Avoids potential issues for sheriffs and release managers
| |
| | Action = Set <code>firefox-status</code> flag back from ''fixed'' to ''affected''
| |
| | Example = 1495962
| |
| | Source = nightly_reopened.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Bug with no assignee but a patch landed
| |
| | Purpose = Attribute unassigned bug to the developer that fixed it
| |
| | Action = The ASSIGNEE field on the bug is changed from nobody@mozilla.org to the author of the patch that landed in mozilla-central
| |
| | Example = 1514338
| |
| | Source = no_assignee.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Close crash bugs with no crashes over 12 weeks
| |
| | Purpose = Reduce the backlog of bugs to check for Release Managers
| |
| | Action = Crash bugs without any crash reports for more than 12 weeks
| |
| | Example = 1470864
| |
| | Source = no_crashes.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Remove <code>stalled</code> keyword on closed bugs
| |
| | Purpose = Fix inconsistency between metadata and bug status
| |
| | Action = If a bug is marked as <code>FIXED</code> and also has a <code>stalled</code> keyword set, the keyword is removed
| |
| | Example = 1491624
| |
| | Source = stalled.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Has meta keyword but not [meta] in the bug title
| |
| | Purpose = Having [meta] in the bug title helps with quick search results
| |
| | Action = If a bug has the meta keyword set, [meta] is added to the bug title
| |
| | Example = 1257692
| |
| | Source = summary_meta_missing.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Set a Firefox status flag for beta if there is one for nightly and release
| |
| | Purpose = Fix inconsistency in Firefox status flags that can lead to a bug going undetected by Release Managers during the beta cycle
| |
| | Action = If a status exist for Firefox N-1 and for Firefox N+1, guess a value for Firefox N
| |
| | Example = 1500273
| |
| | Source = missing_beta_status.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Increase priority of bugs tracked y Release Managers
| |
| | Purpose = Priotitizes bugs needing an action for shipping quality software
| |
| | Action = If a bug is tracked by a Release Manager, update the priority (P2 for nightly, P1 for the rest)
| |
| | Example = 1515946,1508277,1512493
| |
| | Source = mismatch_priority_tracking_release.py
| |
| | Note = There are multiple files mismatch-priority-tracking-*.py, one per channel
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Add <code>regression</code> keywords to bugs (uses Machine Learning)
| |
| | Purpose = Surface regressions not filed as such
| |
| | Action = If a bug is tracked by a Release Manager, update the priority (P2 for nightly, P1 for the rest)
| |
| | Example = 1529139
| |
| | Source = regression.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Move untriaged bug into the correct component (uses machine learning)
| |
| | Purpose = Decrease manual triagin time
| |
| | Action = Uses machine learning to mass move bugs in Firefox::Untriaged into a better component
| |
| | Example = 1530316
| |
| | Source = component.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Copy crash signature from duplicate bugs to main bugs
| |
| | Purpose = Crash bugs marked as duplicate of another one may have a different crash signature. We need to consolidate all signatures in the bug where a patch to fix them is being worked on, other wise we may not fix them all
| |
| | Action = If a crash bug is marked as a duplicate, the signatures it referenced are added to the new bug
| |
| | Example = 1517205
| |
| | Source = copy_duplicate_info.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Increase severity of bugs tracked by Release Managers
| |
| | Purpose = Fix inconsistency in metadata
| |
| | Action = If a bug is tracked for an upcoming release but it's severity field is low, the severity is increased
| |
| | Example = 1538966
| |
| | Source = tracked_bad_severity.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Nag triage owner to set priority on bugs
| |
| | Purpose = Bugs with no priority set are harder to prioritize for Release Managers with regards to the release
| |
| | Action = The triage owner is needinfoed in Bugzilla or nagged via email to set a priority on bugs
| |
| | Example = 1527818
| |
| | Source = workflow/no_priority.py
| |
| }}
| |
|
| |
|
| | | Late 2023 I restarted an initiative to rebuild a Spanish (Spain, not the language) community from scratch, join us on https://matrix.to/#/#spain:mozilla.org |
| == Without autofix ==
| |
| | |
| | |
| {{AutonagRule
| |
| | Rule name = Feature vs regression
| |
| | Purpose = Fix inconsistency in bugs with both the <code>regression</code> and <code>feature</code> keywords set
| |
| | Source = feature_regression.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Inactive bugs with the <code>leave-open</code> keyword set
| |
| | Purpose = Help identify dead/inactive bugs
| |
| | Action = Needinfo the triage owner if a bug is inactive but has the <code>leave-open</code> keyword set
| |
| | Example = 1367072
| |
| | Source = leave_open_no_activity.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Inactive Meta bugs
| |
| | Purpose = Help identify dead/inactive bugs
| |
| | Action = Needinfo the triage owner if a meta bug has no activity and no dependencies set
| |
| | Source = meta_no_deps_no_activity.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Low-severity bug but tracked by a release manager
| |
| | Purpose = Idenitfy mismatch in metadata, a tracked bug should not have a priotity lower than ''normal''
| |
| | Source = mismatch-priority-tracking.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Alert for lack of feedback in a bug
| |
| | Purpose = Increase reaction time on bugs prioritized by upper management or release managers
| |
| | Action = If a bug as an unanswered NeedInfo request from a release manager or a director, send a warning email
| |
| | Source = ni_from_manager.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Bugs with no priority and no activity
| |
| | Purpose = Triage owners need to process the backlog
| |
| | Action = Needinfo the triage owner (only :Overholt for now)
| |
| | Example = 1503461
| |
| | Source = ni_triage_owner.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Bugs with only one or two words in the summary
| |
| | Purpose = Make sure the bug is actually useful, a two-words summary often indicates a poor quality bug report
| |
| | Example = 1512823
| |
| | Source = one_two_word_summary.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Remind developers about tracked bugs
| |
| | Purpose = Make sure that bugs tracked for the next release are addressed
| |
| | Source = query_creator.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Reporter not answering to Needinfo request
| |
| | Purpose = identify bugs stalled because we need more information fron the reporter to reproduce it
| |
| | Source = reporter_with_ni.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Top crashers vs ''normal'' severity
| |
| | Purpose = Consistency and help getting traction on bugs
| |
| | Example = 1471692
| |
| | Source = topcrash_bad_severity.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Identify tracked bugs with a NeedInfo request
| |
| | Purpose = Make sure that bugs tracked for a release or nominated for tracking which also have a NeedInfo request do not get stuck
| |
| | Action = Send an email
| |
| | Source = tracked_needinfo.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Tracked bugs untouched for a week
| |
| | Purpose = Identify important bugs for a release which are not being acted upon
| |
| | Action = Send an email
| |
| | Source = tracking.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Regressed in upcoming release
| |
| | Purpose = Identify potential regression
| |
| | Action = Send an email with the list of bugs marked as non affecting a release but affecting the next one
| |
| | Source = unaffected_affected_no_reg.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Identify unlanded uplifts to Beta and ESR
| |
| | Purpose = Make sure that we ship with the bugs that we need
| |
| | Action = Send an email wih the list of bugs with uplift requests not landed on the affected branch
| |
| | Example = 1509394
| |
| | Source = unlanded.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Bugs with high severity in Firefox::Untriaged
| |
| | Purpose = Identify potentially important issues left untriaged
| |
| | Source = untriage_important_sev.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = <code>Version</code> set but not <code>status_firefox</code>
| |
| | Purpose = The <code>Version</code> value is set automatically by Bugzilla on landing a patch but not the <code>status_firefoxXX</code>
| |
| | Action = Send an email
| |
| | Source = version_affected.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Check release dates on the Wiki
| |
| | Purpose = Verify the consistency of our release dates on wiki.mozilla.org as we use them in automation
| |
| | Action = Send an email
| |
| | Source = ../next_release.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Information about bugs landed during Soft Code Freeze
| |
| | Purpose = List fixed bug with patches which landed in mozilla-central during the soft freeze week. The listing includes patch statistics.
| |
| | Action = Send an email
| |
| | Source = code_freeze_week.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Hightlight Fixed bugs in nightly we may want to uplift
| |
| | Purpose = Identify potentially upliftable bugs.
| |
| | Action = Send an email with the recent fixes, the affected branches and metadata for prioritization
| |
| | Source = missed_uplifts.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = New user with a Needinfo request
| |
| | Purpose = Help identify potentially unactionnable bugs per lack of information
| |
| | Action = Send an email
| |
| | Source = newbie_with_ni.py
| |
| }}
| |
| {{AutonagRule
| |
| | Rule name = Patch not landed
| |
| | Purpose = Identify bugs with an unlanded r+ patch. Maybe the patch is now obsolete or the bug needs to have a sheriff land the code with the <code>checkin-needed</code> keyword set.
| |
| | Action = Send an email
| |
| | Source = not_landed.py
| |
| }}
| |