Sunday, July 13, 2008

Bug Reporting

If you use open source software...its your duty.

As I have become more involved with open source, one of the largest revelations I've had is the usefulness of bug reporting. When I first started contributing, I was very nervous about opening a new bug...often neglecting to do so and sometime forgetting the problem altogether until I hit it the next time. For bugs which occur frequently, these annoyances tend to build up and significantly detract from my overall experience with the product.

I think there were a number of factors for this apprehension,
  • I assumed all the problems I hit were probably already reported
  • I didn't want to sound stupid for reporting something that wasn't really a bug, or had been dealt with in the past
  • I felt that opening a bug was like asking the developers for a favor
  • I assumed the amount of time it would take me to properly research the topic and investigate all similar problems would probably outweigh the limited loss of time/productivity from the bug in question
I realize that this issue likely varies by personality (I tend to be a bit shy before I have established relationships), but from talking with friends and coworkers I think that my feelings are shared by many.

One of the things which helped me most is the leadership I've received from coworkers at IBM. In particular, I recall one such coworker speaking with me on the importance of bug reporting...this was the first I had heard of this referred to as my duty. You are not asking for a favor when you open a bug, you are documenting a known limitation or problem and helping to make a better product for everyone.

Another important factor in my progress has been the ease with which I can produce high quality bug reports. For this reason, the Mylyn bug reporting feature (since Eclipse 3.3) has long been one of my favorites. I am not sure when they started including this in the main Eclipse Packages, but I am very happy to report it is included with at least the Ganymede JEE and RCP/Plug-in packages (I feel it should be in every Eclipse IDE package). If it isn't included in your build, you can get it from the Ganymede update site by installing Mylyn Connector: Bugzilla and Mylyn Bridge: Eclipse IDE.
When installed, the dialog can be found at Help->Report Bug or Enhancement...

Included with Ganymede, Mylyn 3.0 provides a nice improvement on this feature. Namely, when you create a new bug report, it will automatically be placed in the "Unsubmitted" category in your task list. This simple feature drastically improves my productivity and effectively lowers the barrier to bug submission (in older releases I don't think it was possible to save working drafts of bugs). In an open source community, I feel this 'lowering of the walls' is one of the most important keys to success. After all, this user involvement is one of the keys to cultivating a strong community (active users beget contributors beget committers).

With the latest feature I can open a new report every time I encounter a problem or think of a neat enhancement. If I do not have the time to investigate at present, the issue is at least documented for me so that I can finish my investigation when I do have the time. For me, this process usually looks something like:
  1. Hit a bug or think of a cool enhancement and open a new report
  2. Forget about it for a while
  3. Come back to my list of bugs/enhancements
  4. Try to reproduce the problem and document the steps in the bug
  5. Perform a google search for others with the same problem/workarounds
  6. Perform a bugzilla search on all open bugs for that component/project
  7. Search the list and open all related bugs in tabs
  8. Browse throught the tabs and copy the most relevent ones to my bug report
  9. Finish filling in the details and submit the report
  10. Respond to addition questions/responses on the bug report

Now that I have been able to get beyond my initial fears, I have been most impressed with the speed and quality with which most Eclipse projects (and most other high-quality open source projects for that matter) respond to my issues. This level of involvement has helped me to feel included in the Eclipse community and greatly improved my experience with the Eclipse Platform.

There certainly is a delicate balance between properly researching a suspected bug and blindly submitting every subtlety you find (otherwise committers would be hit with endless streams of duplicates and low-quality bugs). For me, this balance has trended toward submitting reports early and often...what process do you use to submit high quality bugs with minimal investment?

1 comment: