Each package you install in Ubuntu gets built from a Source Package. Each source package has a page devoted to its bugs.
For instance, the bug page for the hello package is at: https://launchpad.net/ubuntu/+source/hello/+bugs.
You don't have to know how to program to fix bugs, but it certainly helps! There are some simple things that anyone can do. For starters, many bugs involve typos or documentation problems, which anyone can fix. If you can write in another language, there are plenty of translation errors you can solve. For functionality problems, you can try to track down a fix by the upstream authors of a package. Or find a fix that was included in another distribution.
Before trying to fix a bug, please be sure that you can replicate the bug on your local system. If you cannot demonstrate the bug, it is not a good candidate for a fix. If you need more information to replicate the bug, request the information from the submitter in a bug comment.
Using Ubuntu Merge Proposals
Consult the Release Schedule
Getting it included in Ubuntu
Testing the fixes
Once you have a patch, reenter the source directory, and build the package.
cd hello-2.2 sudo apt-get build-dep hello debuild -us -uc
If the build fails, please review your changes to verify that they are not the cause of the failure. You can regenerate your patched version of the source with the following commands:
rm -rf hello-2.2 dpkg-source -x hello_2.2-1.dsc patch -p0 < hello.patch
If the build succeeds, install the package and make sure you can no longer replicate the bug. The local package can be installed with the following command:
sudo dpkg -i hello_2.2-1_*.deb
If your fix doesn't work, or you cannot fix the bug, remember to update the bug, assigning "Nobody", and changing the status to "Confirmed". You may wish to add a comment describing your experience to assist others trying to fix the bug.
The traditional process
Below find the traditional process to fix bugs, including patches and source packages as opposed to branches and merge proposals.
Installing useful tools
A number of useful scripts have been developed to assist with working with debian packages and patches. To install these, run the following command:
sudo aptitude install devscripts ubuntu-dev-tools cdbs
Generating a patch
Here's an example of how you can create a patch:
Uploading the patch
If your patch fixes the bug, please add a comment to the bug, and attach your patch. Be sure to check the patch checkbox when uploading your patch. Assign the bug to "Nobody", and the status to "Confirmed". At this point, seek out a developer to review your patch for inclusion in the next upload of the package. Check out SponsorshipProcess. If you have any other questions, ask on #ubuntu-motu on InternetRelayChat.
N.B. If you are familiar with debian packaging, and would be willing to prepare a new revision candidate including the patches to fix the bug, please review MOTU/Contributing for some pointers on creating a new revision.
Check out MOTU/GettingStarted to see how to get more involved with packaging and the Ubuntu Development team.
Fixing bugs in stable releases
The major focus of development and changes is on the current Ubuntu development release. Once we do a stable Ubuntu release, millions of users out there work with it every day and depend on its stability, thus we restrict changes to stable releases to a minimum, for two reasons:
- A regression in a stable release is a catastrophe. It is much better to keep a stable set of known bugs which people learned to live with and work around, than to break existing functionality.
- Even some bug fixes might cause confusion, if they disrupt the way users previously worked with the software. This particularly affects user interface and string changes, API/ABI breaks, etc.
Nevertheless we do want to provide fixes for critical/data loss/security bugs, and in a lot of cases also trivial bugs which have a near-zero regression potential. Every developer is welcome and invited to provide these updates. The procedure is explained at the SecurityTeam/UpdateProcedures and StableReleaseUpdates pages.
Besides that, a lot of users also need a newer version of a particular piece of software, without generally updating their entire distribution. For those we provide a "backports" repository, which is not enabled by default and thus is allowed to receive much more intrusive changes. The procedure for this is documented at https://help.ubuntu.com/community/UbuntuBackports.