Table of Contents
Here are the prerequisites which you need to understand before you to get involved with Debian.
There are several types of people interacting around Debian with different roles:
Please note that you can’t become an official Debian Developer (DD) overnight, because it takes more than technical skill. Please do not be discouraged by this. If it is useful to others, you can still upload your package either as a maintainer through a sponsor or as a Debian Maintainer.
Please note that you do not need to create any new packages to become an official Debian Developer. Contributing to the existing packages can provide a path to becoming an official Debian Developer too. There are many packages waiting for good maintainers (see “"`Section 3.8, “Contribution approaches””`").
Please refer to the following to learn how to contribute to Debian:
Please understand Debian’s social dynamics to prepare yourself for interactions with Debian:
We all are volunteers.
Friendly cooperation is the driving force.
Debian is not your school where you get automatic attention of teachers.
Debian is constantly improving.
Since we focus only on the technical aspects of the packaging in the rest of this guide, please refer to the following to understand the social dynamics of Debian:
Here are some technical reminders to accommodate other maintainers to work on your package easily and effectively to maximize the output of Debian as a whole.
Make your package easy to debug.
Keep your package well-documented.
Note | |
---|---|
Debugging of software tends to consume more time than writing the initial working software. |
It is unwise to run your base system under the unstable suite even for the development system.
Note | |
---|---|
Advanced package development activities such as testing of full Desktop systems, network daemons, and system installer packages, should use unstable suite running under the “virtualization”. |
Please make yourself ready to read the pertinent part of the latest Debian documentation to generate perfect Debian packages:
“Debian Policy Manual”
“Debian Developer’s Reference”
“Guide for Debian Maintainers” — this guide
All these documents are published to https://www.debian.org using the unstable suite versions of corresponding Debian packages. If you wish to have local accesses to all these documents from your base system, please consider to use techniques such as “apt-pinning” and “chroot”.
If this guide contradicts the official Debian documentation, the official Debian documentation is correct. Please file a bug report on the debmake-doc package using the reportbug command.
Here are alternative tutorial documents, which you may read along with this guide:
“Debian Packaging Tutorial”
“Ubuntu Packaging Guide” (Ubuntu is Debian based.)
“Debian New Maintainers' Guide” (predecessor of this tutorial, deprecated)
Tip | |
---|---|
When reading these, you may consider using the debmake command in place of the dh_make command. |
Before you decide to ask your question in some public place, please do your part of the effort, i.e., read the fine documentation:
Your desired information can be found effectively by using a well-formed search string such as “keyword site:lists.debian.org” to limit the search domain of the web search engine.
Making a small test package is a good way to learn details of the packaging. Inspecting existing well maintained packages is the best way to learn how other people make packages.
If you still have questions about the packaging, you can ask them interactively:
Language-specific mailing lists.
The more experienced Debian developers will gladly help you, if you ask properly after making your required efforts.
Caution | |
---|---|
Debian development is a moving target. Some information found on the web may be outdated, incorrect, and non-applicable. Please use them carefully. |
Please realize the situation of the Debian archive.
Thus, contributions to packages already in the archive are far more appreciated (and more likely to receive sponsorship for uploading) by other maintainers.
Tip | |
---|---|
The wnpp-alert command from the devscripts package can check for installed packages up for adoption or orphaned. |
Tip | |
---|---|
The how-can-i-help package can show opportunities for contributing to Debian on packages installed locally. |
Here is pseudo-Python code for your contribution approaches to Debian with a program:
if exist_in_debian(program): if is_team_maintained(program): join_team(program) if is_orphaned(program): # maintainer: Debian QA Group adopt_it(program) elif is_RFA(program): # Request for Adoption adopt_it(program) else: if need_help(program): contact_maintainer(program) triaging_bugs(program) preparing_QA_or_NMU_uploads(program) else: leave_it(program) else: # new packages if not is_good_program(program): give_up_packaging(program) elif not is_distributable(program): give_up_packaging(program) else: # worth packaging if is_ITPed_by_others(program): if need_help(program): contact_ITPer_for_collaboration(program) else: leave_it_to_ITPer(program) else: # really new if is_applicable_team(program): join_team(program) if is_DFSG(program) and is_DFSG(dependency(program)): file_ITP(program, area="main") # This is Debian elif is_DFSG(program): file_ITP(program, area="contrib") # This is not Debian else: # non-DFSG file_ITP(program, area="non-free") # This is not Debian package_it_and_close_ITP(program)
Here:
For exist_in_debian(), and is_team_maintained(); check:
For is_orphaned(), is_RFA(), and is_ITPed_by_others(); check:
For is_good_program(), check:
For is_it_DFSG(), and is_its_dependency_DFSG(); check:
For is_it_distributable(), check:
You either need to file an ITP or adopt a package to start working on it. See the “Debian Developer’s Reference”:
The novice contributor and maintainer may wonder what to learn to start your contribution to Debian. Here are my suggestions depending on your focus:
Packaging
Translation
Documentation
The novice contributor and maintainer may wonder where to start your contribution to Debian. Here are my suggestions depending on your skills:
POSIX shell, Perl, and Python skills:
C and C++ skills:
Non-English skills:
Documentation skills:
These activities should give you good exposure to the other Debian people to establish your credibility.
The novice maintainer should avoid packaging programs with the high security exposure:
When you gain more experience in packaging, you’ll be able to package such programs.