Translation(s): English - Italiano - Português (Brasil)

Contributing to Debian isn't as hard as it looks. There are many ways to make a difference, but it's sometimes difficult to find your way. This page tries to give directions.

Why should you contribute to Debian?

If you are reading this page, you are probably already using Debian, so you already know part of the answer. For a developer, Debian is really a fantastic project to work on. Debian gathers more than 500 active developers and many more contributors from all over the world (see this map), all dedicated to building a high-quality, free and universal operating system. Debian Developers are volunteers (the project is totally controlled by the Developers) and form a friendly and welcoming community (pictures from the past annual DebConfs are a good proof of that).

Inside Debian, it is possible to work on very different aspects (and to work on several of those at the same time). You could work on low-level stuff while helping porting Debian to exotic architectures (Debian supports more than 10 architectures), or package the next cool scripting language. You can work on server stuff, or desktop stuff. You can also work on things that are not stricto sensu programming, like translations (Debian's installer supports more than 60 languages). In short: join Debian, you can always find an interesting project inside it!

Is the Debian Project a home for my programming skills?

You should ask yourself this, while reading Why Debian for Developers?

I am not a programmer. How could I help?

See Is there a place for contributors other than developers ?

What do you want to do?

You want to work on a specific package (or some specific packages) already in Debian

Many packages are maintained by teams. There are teams for games, GNOME, KDE, Python, Ruby, fonts, ... Most teams are listed on the Teams wiki page. If the packages you are interested in are already maintained by a team, it's easy: just contact the team members and see how you can help. Teams usually welcome new contributors, and are very responsive.

Some packages can have a RFH (Request For Help) bug report open, you can see a list of them here and contact the maintainer or team in charge for that to verify current status.

If the package you are interested in is not maintained by a team, it might be harder. While many maintainers are very responsive, and will welcome your help, some maintainers might be too busy or inactive, and might ignore your help. Don't allow this to discourage you!

You want to package new software for Debian

You can maintain packages in Debian, even without being a Debian Developer (your uploads will be sponsored by a Debian Developer). You have to read the documentation (start with the Debian New Maintainers' Guide and the Debian Developers Reference), then prepare your package, and finally, to find a sponsor. Be aware that finding a sponsor is a very difficult step: this is a big bottleneck in Debian currently. So it is important to make your sponsor's task as easy as possible, by preparing a perfect package ;-)

If your package could be maintained by a team (list of teams on the Teams page), it is a very good idea to contact it. They could help you with specific problems, and it will probably be easier to find a sponsor inside the team.

You want to improve Debian in general, not focus on a specific package

There are many ways to help Debian without focusing on a specific package, like Quality Assurance (-> how to help the QA team), translations, documentation, ... but the easiest one is to help with bugs. Most newcomers in Debian don't understand how central the Bug Tracking System is. Actually, it's where most of the interesting stuff happens.

When looking for a bug to fix, there are several things to consider:

To help you, some lists of bugs are available:

You want to work on the Debian infrastructures and/or improve a Debian-specific program

This is a quite different task and requires advanced skills: it is generally intended for mature developers and possibly people with a long experience in Debian and development. Consider that contributing on those sub-projects is generally for brave hearts and there is not a defined roadmap for entering some teams and/or contributing on some projects. The general rule is coding before talking. Show us the code and you have some chance that your contribute could be considered. In many cases the starting point to contribute to some key software is fixing long due existing bugs of that software, for instance. The same rule applies to maintenance of infrastructures: admission to some managing teams is governed by rules established by the team themselves and you should contribute with very basic and annoying tasks before being officially admitted to contribute. That is the way it works.

We used to have a general TODO page on the main website, but including here interesting tasks by our teams should now be considered best practice. What follows is a list of possible contributing areas with references to starting points for working on them. It is neither exhaustive nor complete.