Helping out with Ubuntu
There are many ways that you can help out with Ubuntu. And the best is that you don't need to be a software specialist, a web developer or a communications expert!
The starting point for helping out in Ubuntu is the same no matter if you are an experienced developer, if you're a casual user that would like to help with bug reporting, if you're a technical writer, a web developer, or a geek who would like to help package software for Ubuntu. No matter what kind of Ubuntu enthusiast you are, this is the place to start!
This guide will help you get started helping out quickly and easy. If you get stuck at any point, the best place to get help is on one of the Internet Relay Chat (IRC) channels or Mailing Lists. After working through this guide you will be well equipped for helping out in Ubuntu.
There are a number of exercises that you can perform on the way. We recommend that you do the exercises as they appear, but you can of course skip them and do them later if you prefer. You can also skip an exercise if you've already done that step and know it well.
You probably know by now that Ubuntu distributes software in packages, these are the ones you install on your system using apt-get, synaptic or aptitude. More technically, they are called binary packages. However, most bugs are associated with source packages containing the source code and the instructions for how to compile and build the binary packages.
Source packages is something that ordinary Ubuntu users never need to be concerned about, and it is sometimes not obvious what name the source package has, since it is not always related to the name of the binary packages. For example, the package libupsclient1 (which contains libraries for controlling an UPS power supply) is created from the nut source package.
A source package consists of three files:
A copy of the upstream source code, contained in a compressed tar archive, and with a name ending in .orig.tar.gz.
A file containing the developer's additions. This is a patch file, with a name ending in .diff.gz.
A file describing the above, including checksum data, in a .dsc file.
A binary package consists of a single file, with a name ending in .deb.
A good place to find information about packages is on http://packages.ubuntu.com. Near the top of that web page, there's a search section with multiple options to customize your search.
In addition, every package, binary and source, has a page on Launchpad. On http://launchpad.net/ubuntu there's a search option, but it has the drawback that it only works with exact package names, not search patterns.
Duration ~2 minutes.
- A very popular binary package is XXXX. Find what source package it belongs to.
- Bugs are normally filed towards the Source Package
Internet Relay Chat (IRC)
A lot of the communication in the Ubuntu community takes place on IRC. We want to teach you this important tool at this point in the guide so you may use IRC if you need help completing the exercises later on.
If you've never used IRC before, it takes some time getting used to. New IRC users often find the atmosphere on the IRC channels tactless, because you may experience that your questions apparently are ignored.
This is not the case, however, rather it means that there is no one present who knows the answer to your question, or if they do, they are engaged in something else or otherwis busy. And if ten people were to answer you "I don't know", it would just create unnecessary noise on the channel!
Most commonly, people will see your question, and eventually get around to answering it when they have time. Sometimes you just have to ask again later.
IRC is a great place to get help, but it requires a bit of patience and a friendly approach. Rude and discourteous communications will almost certainly be ignored. On the other hand, there is no need to be overly polite. You don't need to say "can I ask a question?"; just state your question accurately and with adequate detail. And be patient!
From time to time, experienced developers and contributors will have hands-on tutorials and Q&A sessions in #ubuntu-classroom. Watch out for events in the Fridge and in the weekly newsletter. Sessions are logged and are available for reviewing.
Duration ~ 30 minutes.
Using your favourite IRC client, connect to IRC-server irc.freenode.net
Join the #ubuntu channel (some clients need the command /join #ubuntu). Perhaps someone will ask a question that you can answer!
Join the #ubuntu-bugs channel. Strike up a conversation. For example, you can tell people that your are doing this execise :-). Perhaps you can help with a bug!?
Duration ~30 minutes.
Duration 30 seconds.
Go to The Ubuntu Fridge to see if anything is going on in the near future of interest to you.
Launchpad is the hub of development and interaction of the Ubuntu community. Launcpad is a very large system developed and sponsored by Canonical, the company that also sponsors a number of the Ubuntu Main developers. Launchpad is a project hosting platform for free software, kind of like Sourceforge and GNU Savannah. Ubuntu is just one of 5432 projects hosted on Launchpad.
If you haven't registered with Launchpad, do that now, then come back here and continue. Click here. The next sections will not work correctly unless you are logged on to your Launchpad account.
When you've registered, you'll get your own personal home, that you can personalize with your hackergotchi, a description of who you are, and what your interests are. There are several tabs on your Launchpad home. One of them is Bugs which is in fact your personal &ldquot;To Do&rdquot; list in your Ubuntu work. Each of the bugs you work on will be summarized here along with the status of the bug. When the bug is closed, it will disappear from your To Do list. This page will help you organize the workflow of things you do in Launchpad.
Your personal home will also keep track of your karma which increases as you do work. Perhaps you'll get more karma than your buddies?
A very nice feature of Launchpad is the staging version, a huge playground with a copy of the master database. Here you are free to experiment with the different functions of Launchpad without doing things that may upset the developers.
Launchpad developers and experts hang out on the #launchpad IRC channel on irc.freenode.net. Ask there if you have special questions.
Working with bugs is an excellent place to start helping out with Ubuntu! If you are inexperienced, there are lots of things for you to do. Even ff you are an experienced developer or packager with huge ambitions, you need to learn the Ubuntu workflow, and there are also many hard-core, critical bugs that could use your expertice!
Hint! Bugs tagged with the bitesize tag are meant to be easy bugs!
In the Ubuntu community, everybody works with bugs! In your experience with computers, you've probably met bugs in programs or webpages. Things that don't work as supposed. But actually, in Ubuntu a bug is not always a Bug!?
That's because we use Launchpad's bug tracker system for everything. If a program is missing in Ubuntu, you can create a needs-packaging bug. If a newer version of an application is available from the upstream developer, you can create a needs-update bug. These are not “bugs” in the traditional sense, but they are bugs in Ubuntu.
A really good place to start work for Ubuntu is to help process the wealth of bug reports streaming in from users all over the world. The first thing to do is to see if you can reproduce the bug. Is the report something actually wrong with the package, or is it perhaps a local problem in that user's setup?
When users report bugs, they often lack crucial information. You can help enormously by trying to get more complete information attached to the bug. You do that via the comment system associated with each bug. Launchpad will automatically notify the original bug reporter that there is activity on the bug.
We call this process triaging and there's a whole Ubuntu team dedicated to this important work! The BugSquad team meets on the IRC channel #ubuntu-bugsquad and #ubuntu-bugs, and these are good places to go when you are working with a bug and you need some help on what to do. You too can become a member of the BugSquad team, by joining up on the teams Launchpad page!
While you are working on a bug, you may assign yourself to it, by clicking on the little arrow in the task bar. This signals to others that you are working on the bug, so there aren't two people wasting time doing the same task. You may also set the bug status to “In Progress”.
You cannot delete bugs, but you can set their status to “Invalid”, which has (almost) the same effect. An invalid bug will not show up on your personal Bugs page.
HugDays are special days when the Ubuntu Community comes together with a shared goal of triaging a specific package or set of packages. Working together allows us to share knowledge and give some much needed assistance to the Ubuntu Developers.
If you are more technically inclined, you can also look at Contributing and the stuff it links to.
Duration ~20 minutes.
Open another browser window with the staging version of Launchpad.
- Make a comment in a bug of your choice. Try setting the status of the bug to something else.
- Try assigning yourself to the bug, then go to your personal To Do list (the Bug tab) and see it appear there.
- Create a new bug in the staging version of Launchpad. Be sure to include the Ubuntu version you are running, and the version of the source package where the bug was found.
Linking to other bug trackers
One really useful thing you can do to help the developers and to squash bugs in Ubuntu is to make links between bugs in Launchpad and bugs in other bug trackers.
On every bug page in Launchpad there's an option where you can tell the system that the bug also affects another project or distribution. If you enter an URL to the other projects bug page, Launchpad will be able to monitor the progress of that bug in the foreign bug tracker system! Thus, you can see how the bug affects different communities, whether they're tracking the bug in Launchpad, Bugzilla, Trac, Sourceforge, or elsewhere. You can even share a comment history across project-boundaries, bringing everyone together to find a fix.
Duration ~1 hour.
The Debian bug tracking system (BTS) is important to Ubuntu because approximately 75% of all Ubuntu packages are imported directly from Debian. Therefore, all bugs reported in Debian's bug tracker affect us too. BTS is similar to Launchpads bug tracking system (whose real name is Malone), except it works via an email interface. You can use your normal email client to communicate with BTS.
Become aquainted with Debian's bug tracking system, HERE.
Find a bug in BTS in your favourite package. Next, in Launchpad's staging area file a new bug similar to the one you chose in BTS. Finally, in your new bug, make a link to the same bug in Debian's BTS.
Subscribing to bugs
Every bug page gives you the possibility to subscribe other persons or teams to the bug. When this happens, the bug will appear on the receivers To Do list (their Bug page). The different Ubuntu teams use this mechanism in their workflow. When a team is done processing a bug, they will assign the next team in the pipeline and unsubscribe themselves. Sometimes, a bug can ping-pong back and forth between different teams and individuals before it is closed (status ”Fix Released”).
If you are especially interested in a bug, you can subscribe yourself to it, but please don't subscribe others except if you know exactly what you are doing.
Duration ~ 2 minutes.
Check the "To Do" list of the MOTU team HERE.
Check the "To Do" list of the Ubuntu Archive team HERE. Examine the comments of a few bugs and get an impression of its history.
The Bug Sqad Team specializes in triaging bugs. The members are primarily volunteers from around the world and the come together with a common cause of making Ubuntu better for eveyone. No special knowledge or training is required, just a desire to help. Currently there are about 1400 registered members. You can join too!
The Bug Squad also deals with the automatically submitted Apport bugs, that contain coredumps and other crucial debugging information, and assign them to the appropriate developers.
If #ubuntu-bugsquad is silent, /join #ubuntu-bugs where there is usually some level of activity, and ask questions there.
Duration ~5 minutes.
The bug squad team has produced a page with standard replies to use in the communication with the original bug reporter.
Look over the contents of the canned replies page and get an impression of the different types of problems the Bug Squad handles.
- /join #ubuntu-bugsquad and say hello. Introduce yourself and ask if there is something you can help with.
Easy, but very useful bug triaging:
- Check if a bug can be reproduced
- Ensure all relevant information is reported, f.ex. package version and Ubuntu version.
- Create links from other bug trackers to Launchpad
Attach Bugsquad tags to bugs (list of tags Bugs/Tags).
In a bugs task bar, you can assign it to yourself to "claim" it. You can also set the status of the bug to In progress.
- Be sure you know what you're doing when you subscribe someone else to a bug.
You cannot delete bugs, but you can set their status to Invalid, which has (almost)
the same effect.
If you're native language is other than english, translations is a great place to help out with Ubuntu. Launchpad contains a wonderful tool called Rosetta, it's really easy to use and you immediately feel you are being useful. Also, this is a great place for non-technical skills to contribute to Ubuntu.
Rosetta contains a database of thousands of strings from applications in Ubuntu along with their translations in 198 different languages including the extreterrestrial Klingon language. This database is used to create language packages enabling language localizations.
Duration ~5-30 minutes. Especially for readers with an extensive knowledge of a language other than English.
Enter Rosetta, choose an application and start translating!
There are many mailing lists for Ubuntu, and you should join at least some of them. Some mailing lists, like xxx and yyy, have quite high level of traffic, others very low. Some mailing lists are open to all, and other mailing lists are only open for team members.
Duration: ~ 5 minutes.
Browse the archives of one or more mailing lists. Click HERE.
- Join one or more Ubuntu mailing list of your choise.
- (Optional) Set up your mail program to filter the mailing list messages into a special mailbox.
The Team Wiki
The Team Wiki is what you are reading now. It is an important tool for the various teams in Ubuntu, that use it for tutorials, howtos, meeting agenda and minutes, policy statements etc.
Kubuntu, tracks the latest and greatest software for the KDE desktop and works on integrating KDE with Ubuntu
Edubuntu, develops a system targeted towards schools and other education environments,
Xubuntu, a team dedicated with the development and promotion of the Xfce desktop on Ubuntu, suitable for older, less powerful hardware
UbuntuStudio, provides an installable disk for multimedia production machines and work on better maintenance of those apps in Ubuntu
MOTU, team of developers focused on Ubuntu Universe, a community maintained repository of xxxxx packages
DocumentationTeam Writes and maintains the core documentation for Ubuntu, including the system documentation and the help wiki
Artwork, a team working on artwork and graphics for many different parts of the Ubuntu project
In addition, on your Launchpad user's home page you can display a link to your personal wiki place. You can use your wiki page to tell the world what kind of work you are doing in Ubuntu. Many users use their wiki page as a diary that can later document what they have been working on, if they wish to apply for membership in one of the Ubuntu teams.
Duration ~20 minutes.
- On your Launchpad home page, locate the URL of your wiki page.
- Create your personal wiki page.
Check out the complete list of Ubuntu teams.
You need to know a littlebit about how the Ubuntu developers are organized.
Ubuntu Contributors (UCs) are enthusiasts like yourself, who have required a high level of knowledge and experience with how Ubuntu's developement and debugging procedures work. UCs are especially interested in package maintenance, they know how to use the tools for package building and quality control and are familiar with the tool chain used to compile and link applications and libraries.
To become a UC, you need to send an application to the MOTU council, describing your qualifications and motivation for joining the team. Becoming a UC is typically the first step of becoming an Ubuntu Developer.
UCs often work with the merging of packages that have local Ubuntu modifications, and many are interested in creating packages from scratch.
MOTUs – Masters Of The Universe – is a team of Ubuntu Developers who are responsible for the Ubuntu Universe, an archive of xxxx packages of additional software that are not among the core packages. The Universe contains packages that most users really want on their machine like XXX and YYY and ZZZ. The MOTUs have a high level of experience in package maintenance and programming, and have qualifications that allow them to fix bugs.
MOTUs have the priviledge that they can upload software to Ubuntu's archive for Universe, and they can sponsor packages from contributors such as yourself. If you are interested in getting a package into Ubuntu, you need to get in touch with the MOTU, who tend to hang out on the IRC channel #ubuntu-motu and the mailing list firstname.lastname@example.org.
Ubuntu core developers are responsible for the core packages of Ubuntu. These include everything that is needed to boot up a working system, the Linux kernel, X-windows, the installer, the Live CD and in general, everything that's shipped on the CD.
The core developers are allowed to upload packages to Ubuntu's main archive.
- Review NEW packages, and assign them to Universe or Multiverse
Duration ~5 minutes.
The MOTU use a external site called REVU to review and comment on new packages that people want to submit to Ubuntu. Visit REVU and check out a few of the submissions to see the work going on there. Click HERE to start.
Ubuntu Release Model
You now have an idea of the Ubuntu system works. You know a bit about how the different pieces fit together, and hopefully you have an idea of how YOU can help out with Ubuntu!