Contribute to Software Development

Development in the Ubuntu ecosystem can take many forms: You can help in the maintenance of packages in the repositories, work on the Ubuntu operating system itself or even create new software that runs on Ubuntu.

Learning the Fundamentals

Before diving into development, it’s important to understand how the many systems and mechanisms by which Ubuntu software is used, created and distributed.

The Ubuntu Debian Connection

Every Debian developer is also an Ubuntu developer, because one way to contribute to Ubuntu is to contribute to Debian”. - Mark Shuttleworth

Ubuntu is proudly based on Debian and the developers from both projects work closely together. Anyone looking to contribute should learn about the long and symbiotic relationship they share.
Ubuntu and Debian

The Ubuntu Repositories

Ubuntu’s software repositories are split into four main components - Main, Restricted, Universe, and Multiverse. Knowing the differences between them is important for contributing to Ubuntu easily and efficiently.
An overview of Ubuntu Repositories

Ubuntu Packaging Guide

The Ubuntu Packaging Guide is the defacto guide on Ubuntu Development and packaging. Within you will learn the important players, processes and tools needed for Ubuntu development. The guide is made available to the community in a number of formats and languages.
Read the Ubuntu Packaging Guide

Maintaining Ubuntu Software

Ubuntu, like other Linux distributions, relies on a vast collection of software packages in storage locations called repositories. The majority of these packages are maintained by members of the community who dedicate their time to ensuring they stay updated and available for all to use.

Package Maintenance

Ubuntu software is distributed in the form of “packages”, that all work together to provide the software our users interact with on a daily basis. These packages need regular maintenance to remain useful. Helping maintain and update outdated or buggy packages is one of the best ways to sharpen your packaging skills.
Find packages that need help with Merge-O-Matic
Get your work into Ubuntu with the help of sponsors
Becoming an Ubuntu Developer

Building Ubuntu

Ubuntu is a complex operating system, and as such, relies on teams of developers working together to ensure its stability and sustainability. This process is transparent to the public, and open to any contributor who demonstrates the necessary skills and commitment to the project.
Explore Ubuntu Development

Making Software for Ubuntu

As the developers’ choice of operating systems, Ubuntu provides numerous avenues for creating new software. Developers can pursue traditional debian package development, build universal and sandboxed Snap applications or even create JuJu Charms for container orchestration.

Debian Packages

The majority of source packages in Ubuntu are copied unmodified from Debian, therefore the best route for getting packages into Ubuntu is through Debian. Not only will this help ensure your application is available to Ubuntu users, but to those using Debian and the many Ubuntu flavors, remixes and derivatives.
Debian Packaging Tutorial
Ubuntu New Package Process

Snap Packages

Snaps are app packages for desktop, cloud and IoT that are easy to install, secure, cross‐platform and dependency‐free. Snaps are discoverable and installable from the Snap Store, the app store for Linux with an audience of millions.
Official Snap documentation

Juju Charms

Juju charms are deployment and service orchestration scripts that enable people to deploy services onto Ubuntu clouds on EC2, HP Cloud, and OpenStack (among others). Since Juju charms can be written in any language, it’s a good way for the devops experts to share deployment and management scripts with the community.
JuJu Tutorials

Software Development IRC Channels

#ubuntu-devel IRC Channel
#ubuntu-app-devel IRC Channel
#ubuntu-packaging IRC Channel
#kubuntu-devel IRC Channel
#lubuntu-devel IRC Channel
#ubuntustudio-devel IRC Channel
#xubuntu-devel IRC Channel

Software Development Mailing Lists

Ubuntu Development Mailing List
Ubuntu Development Discussion Mailing List
Ubuntu App Development Mailing List
Ubuntu Accessibility Development Mailing List
Kubuntu Development Mailing List
Lubuntu Development Mailing List
Ubuntu Kylin Development Mailing List
Ubuntu Studio Development Mailing List
Xubuntu Development Mailing List