Give something back: why you should report software bugs

Reporting bugs
Jono Bacon is Ubuntu's community manager and knows a thing or two about the open-source software process

All software has problems. You may have found what you consider to be the most reliable software ever, but I promise you that buried in there are some problems.

We see this in every-day appliances, such as cars being recalled to have their onboard software updated, as well as the slew of updates and improvements we see in computer, laptop, tablet and mobile phone software.

The anatomy of a bug

The distribution's developers resolve those issues where they see fit and fix them in the distribution (often contributing those fixes back to upstream). When the distribution is ready, it's released with a release number (eg, Ubuntu 12.04).

Here we have two different types of bugs: Bugs that occur in the upstream project. Bugs that could be introduced in the packaging and integration of the software in the downstream distribution. In a perfect world, bugs discovered in a distribution are reported by its users, and if they are found to be bugs that weren't introduced by the distribution's developers, they are reported upstream.

See the Bug linking boxout for more information on how these different bugs can be connected.

Our goal here is to ensure that upstreams know about bugs in which the source is in the upstream software, and that distributions know about bugs that are introduced in the packaging and integration of that software.

Pastebin

Before we can report a bug, we need to know what a bug looks like. In a nutshell, a bug is behaviour in software that is unexpected or inaccurate. Examples of this could include:

You click on a button in a program and the program crashes (this should never happen).

You add two numbers together in a calculator and the wrong result is presented (the calculator should provide accurate results).

A translation is incorrect and shows a culturally incorrect term (the correct definitions should be used for translations).

Each of these examples presumes you know what the correct behaviour should be and you can therefore identify when incorrect behaviour happens. Sometimes, this is more obvious than at others.

You should always remember that bugs are only for unexpected or inaccurate results, not necessarily for design or behaviour decisions that you might not like. For example, if the developers decide to change the icon of an application to a horrible lime green colour, you might hate the look, but it's not a bug. Don't clog up their bug lists with disagreements about direction… this is what other communication channels are for.

All bugs have two important attributes: The symptoms for example, if you click a button in an application and it crashes, the symptoms are pretty stark… you click the button and the application crashes. Other bugs may have more subtle symptoms, such as behaviour gradually degrading, or stability issues occurring.

The cause If you click a button in an application and it crashes, what was the button you clicked on, and did it try to load functionality that contained an issue that caused the crash? Most people who find bugs discover the symptoms first and then dig in to the issue to discover the causes.