What features are vital for good bug tracking software and why are they important? What in particular is necessary for you to consider these features done right?
Simplicity. If it's too complicated or too long to enter or sort bugs, nobody will want to use it.
Integration with SCM, so that any fixes can be traced back to the code, and code changes can be traced back to an issue. This does require vigilance to check in only code related to the issue being promoted/checked in against. i.e. no "Added feature xyz, and fixed random bugs in 4 different locations and a quick refactor of feature zyx".
Another good feature is workflow management, so that the business process is followed with the code. For example, may have a workflow path that goes something like this: Bug reported -> Triaged for priority and validity -> assigned to dev -> worked on -> assign to QA -> pass testing -> mark as closed.
Enforced ownership of bugs. It shouldn't be possible to have an open issue that is not somebody's responsibility. Other than that, simple is better.
Good/fast reporting capabilities. Management wants to track the bug trend.
API for automation,automated email notification, integration with source control, etc.
- custom reports: ability to quickly create and save queries of tickets, by all users not just admins. everyone likes their own view of the bugs. if this is done right, there's no need for notifications, just log in to your fave view of 'tickets on my plate'
- tie in to version control: should be easy to find the code changes associated with a ticket.
- flow intelligence: the system should not allow tickets to be in states where they'll fall through the cracks - so if status changes to 'Rejected', it should enforce assigning to someone in dev
- customizable: every project is different, every team is different. some teams need 8 different statuses, some just need 3. but, the GUI should remain
- simple: keep the key elements of the ticket big and upfront and simple. version, headline, description, status, owner
- history: this really stands out when it's done wrong (i'm looking at you, Unfuddle); so it should be pointed out. the history of changes to the ticket need to be visible in a nice chronological log.
I find it quite important to be able to link issues (and specify a link type, e.g. Depends on). Apart from that the usual suspects of version that the bug was found in, what version we're aiming to fix it (so we can drive road maps), an estimation field is good for project/agile planning.
Nice to haves for me are voting from the public, the ability to notify users of changes to the issue and having a fairly flexible system of categorizing the issues.
In fact pretty much everything that JIRA supports out of the box :)
Any feature that does a task for the programmer. Shouldn't it really be part of the IDE? There's the list of bugs. Pick one to work on and all of the status and time stamps are taken care of. The code changes are linked. Required tests are associated. Check it as fixed, update the status and let everyone else know about it.
Hability to identify similarities on tickets that already closed.
Could be used data mining algoritms, perhaps.
The bug tracking software should help to manage the projects by enforcing rigorous development process at each stage of issue resolution.