Caution

The Packaging and Development guide is currently undergoing a major overhaul to bring it up to date. The current state you are seeing now is a preview of this effort.

The current version is unstable (changing URLs can occur at any time) and most content is not in properly reviewed yet. Proceed with caution and be aware of technical inaccuracies.

If you are an experienced packager and would like to contribute, we would love for you to be involved! See our contribution page for details of how to join in.

Ubuntu Packaging Guide

Welcome to the Ubuntu Packaging and Development Guide!

This is the official place for learning all about Ubuntu Development and packaging. After reading this guide you will have:

  • Heard about the most important players, processes and tools in Ubuntu development,

  • Your development environment set up correctly,

  • A better idea of how to join our community,

  • Fixed an actual Ubuntu bug as part of the tutorials.

Ubuntu is not only a free and open source operating system, its platform is also open and developed in a transparent fashion. The source code for every single component can be obtained easily and every single change to the Ubuntu platform can be reviewed.

This means you can actively get involved in improving it and the community of Ubuntu platform developers is always interested in helping peers getting started.

Ubuntu is also a community of great people who believe in free software and that it should be accessible for everyone. Its members are welcoming and want you to be involved as well. We want you to get involved, to ask questions, to make Ubuntu better together with us.


In this documentation

Tutorial

Get started - a hands-on introduction to the Ubuntu Packaging Guide for new users

How-to guides

Step-by-step guides covering key operations and common tasks

Explanation

Discussion and clarification of key topics

Reference

Technical information - specifications, APIs, architecture

Project and community

The Ubuntu Packaging Guide is an open source project that warmly welcomes community projects, contributions, suggestions, fixes and constructive feedback. In a project where thousands of lines of code are changed, lots of decisions are made and hundreds of people interact every day, it is important to communicate effectively.

Read our Code of Conduct to get started. If you run into problems, don’t panic! The following communication channels are there to help you.

Tip

It is encouraged for you to use the same nickname (a known identity or your real name) across all the following communication channels, so that your Ubuntu developer colleagues will be able to get to know you better.

Launchpad:

Launchpad is the general development platform where Ubuntu itself and most of Ubuntu related software projects live. It is the place where bugs are tracked, source code is stored, tracked, get built, tested and much more.

We will go into more detail in the following articles. For now, you can think of Launchpad as a platforms like GitHub, GitLab or BitBucket.

IRC channels:

For real-time discussions, please connect to irc.libera.chat and join one or any of the IRC channels. You may find especially these channels useful in the beginning:

  • #ubuntu-devel, for general development discussion

  • #ubuntu-motu, for Masters of the Universe (MOTU) team discussion and generally getting help.

  • #ubuntu-meeting, meetings are held here by various Ubuntu teams and everyone is welcome to participate.

You can follow these instructions on how to connect to irc.libera.chat. Also, when you join irc.libera.chat for the first time, you should follow the instructions to register a nickname and register a nickname. If you don’t register it, someone else may end up registering the nickname you want/used.

Note

Certain channels even require you to register before you can write in them.

Discourse:

The Ubuntu Discourse instance is a meeting point for the Ubuntu community and a forum about general Ubuntu development where you can find discussions, announcements, team updates, documentation and much more.

Feel free to introduce yourself here.

Mailing lists:

For long-lived discussions or announcements you can subscribe/write to any of the Ubuntu mailing lists. You may find especially these Mailing Lists useful in the beginning:

Note

When you subscribe to Mailing Lists, expect to receive a lot of emails. A good way to manage these is to create email filters. For example, the bug mailing lists generate a high volume of emails and using the custom email headers to filter them can help.


We are always looking to improve this guide. If you find any problems or have some suggestions, use the Give feedback button at the top of any page to open a GitHub issue or directly contribute by submitting a pull request to the source repository.

Further reading

You can read this guide offline in different formats, if you install one of the binary packages.

If you want to learn more about building Debian packages, here are some Debian resources you may find useful: