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.
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
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.
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
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 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.
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