Developer Area/Bug Status
From Mahara Wiki
< Developer AreaRevision as of 10:32, 18 October 2016 by Aaronw
The status, priority, milestone, tags in Launchpad are used by Mahara developers for effective bug management. This page describe the current use of these features.
The bug status reflects the current state of the bug. When the new bug is reported it obtains "New" status automatically (unless specified otherwise) and then usually goes through a number other statuses depending on developers actions and decisions. The list below describe each of the statuses and provides useful hints on status chnages.
- New - The status field is automatically set to "new" when a bug is created.
- Triaged - Once we've looked at a bug and decided on a priority and a milestone, it's changed to "triaged". Triaged is for bugs we haven't tried to reproduce.
- Confirmed - Status is changed to "confirmed" once we've been able to reproduce it, or to "incomplete" if we need more information to be able to reproduce it.
- Invalid , Wont fix, Opinion - are all statuses that effectively close the bug. "Invalid" is for things we don't really think are bugs at all, or maybe they're bugs but not bugs in Mahara. "Won't fix" is self-explanatory. "Opinion" is a softer version of "won't fix", and indicates to the reporter that there is reasonable disagreement about whether the bug is a bug or should be fixed (and invites more comments).
- In progress - is for bugs which are currently being worked on.
- Fix committed - is for when a fix is committed to git. Bugs which have been fixed only in the commit author's local branch or personal clone repository, or submitted for revision should not be marked as "Fix Committed" until they appear in the master (or stable) branch from which releases are created (which will happen when the change on revision system is marked as merged). Any time a bug is marked as "fix committed", the milestone field must also be updated to the next planned release milestone on the appropriate branch, and if the bug is still unassigned, it should be assigned to whoever provided the patch.
- Fix Released - Status is flipped to "Fix Released" once there is a stable release (i.e. a tarball) which includes the fix (alphas, betas and release candidates don't count).
Periodically the core development team will go through the open bugs, decide what should be fixed before the next release, and update the status and milestone fields accordingly.
The milestone is used for three main things:
- as a TODO list for an upcoming release
- as a record of when a bug was fixed
- as an extended changelog for a given release
Fix committed: When a bug is in the "fix committed" state, it needs a milestone (no exceptions) to indicate the first release it will be part of. For example:
- If you fix a bug in 1.4_STABLE and 1.5.0 is not released yet, then you'd use a milestone of 1.4.1 (that being the next stable release) because we assume that 1.5.0 will have everything that the other stable releases have.
- If you fix it in 1.3_STABLE and 1.4_STABLE, then it needs two milestones: 1.3.7 and 1.4.1.
- If you only fix it on the master branch, then use 1.5.0 as the milestone since it won't be in any releases until then.
Fix released: If a bug is in the "fix released" state then it usually has a milestone as described above in the "fix committed" section. The exception to this is when a bug moves from in progress to fix released because the bug has never affected any of the released versions of Mahara. In this case, it would be irrelevant to users of stable versions from a changelog point of view.
Triaged, confirmed, in progress: If a bug is not yet fixed but is in one of the intermediate states, then the milestone may or may not be set:
- if the release manager wants something to be fixed before a given release, the milestone will be set to that release
- if a developer volunteers to fix something before a given release, they can set the milestone accordingly
- otherwise, if it's just a bug, we leave the milestone unset to avoid putting too many tasks on the "release TODO list"
Importance is highly subjective, but here are some rough guidelines for how we use them in Mahara. A bug with the following importance might have some of these characteristics:
- Critical: Use only when we should drop everything and fix this ASAP
- Prevents Mahara from functioning entirely
- Causes data loss or other irreversible problems
- Likely to be encountered by many users
- Security flaw that doesn't require any user account on the site
- Something that must get done before the next release
- Obviously "broken" to end user. Visible error messages, wrong item being deleted, etc.
- Likely to be encountered by many users
- Security flaw that requires a logged-in user account on the site
- Usability problem that causes extreme inconvenience
- Incorrect behavior, but a workaround is possible
- Unlikely to be encountered by most users
- Security flaw that requires an admin account and/or has limited consequences
- Usability problem that causes major inconvenience
- Works correctly, but doesn't follow best practices
- Affects very few users
- Easy workaround is available
- Usability problem that causes moderate or minor inconvenience
- Not a bug
- Suggestions for new features & functionality
We encourage the use of tags to group bugs together! Some recommended tags:
- A bug with a trivial fix. We use these during training events, to introduce new developers to Mahara's development process.
- A bug that is slightly harder than bite-sized. We use these during more advanced Mahara development training events.
- ie9, ie10, ff, chrome, opera, safari, etc
- A tag that indicates a browser-specific bug
- Indicates a problem area in Mahara's user interface; i.e. things that are difficult for users to figure out, or tasks that are annoying or difficult to accomplish.
- ldap, note, blogs, tinymce, groups, etc
- Tags that indicate which plugin or part of Mahara a bug affects
- Functionality that used to work, but stopped working after a known code change.
- It's helpful to use git bisect to find the exact code change that introduced the bug, so that you can correct the underlying problem.
Milestone & "Affects"
The "Affects" column indicates which series' of Mahara the bug is present in. In most cases this will include the current development series. You should check to see whether the bug is also present in the current three supported releases.
This column indicates:
- For a fixed bug: The release the bug was included in
- For a not yet fixed bug: The release the bug will be included in, if it gets fixed right now.
- This is useful for creating a "to do" list for upcoming releases.
"Wishlist" bugs should not be given a Milestone until someone actively begins implementing them.
Bugs set to "Won't Fix" also should not be given a Milestone.
Due to limited support resources, we don't backport all bug fixes to all versions of Mahara. For the full details, see: "Supported Versions: Definition of support"
Here's how we record backporting decisions in Launchpad. If you know a bug is present in older Mahara release:
- Supported release, Will backport: Mark the series as "affected", and give it a Milestone
- Supported release, Won't backport: Mark as "affected", no Milestone, status "Won't Fix"
- Marking it as affected and "Won't fix" lets us know we already made a backporting decision, so we don't accidentally rehash the same discussion
- Unsupported release: These are never backported. Sometimes, for informational purposes, it can be useful to mark the most recent unsupported & non-fixed branch as affected and "Won't Fix". But it's entirely optional.
- The current stable release is 16.10. Older supported releases are 16.04 and 15.10.
- I find a bug that turns out to be a regression introduced in Mahara 1.6, and will be backported to 16.04 and 15.10.
- Result: I may mark the 15.04 release as affected and "Won't Fix", to let people know at a glance that the bug goes back earlier than 15.10.
- Ubuntu's similar rules for prioritizing bugs: https://wiki.ubuntu.com/Bugs/Importance