How to get my software into Ubuntu?

There are a number of paths that a package can take to enter Ubuntu. The overview of Ubuntu development targeted at "upstream" developers like yourself might be a useful place to start, but I'll try to give you some pointers as well.

Through Debian

Generally, if you are publishing free and open source software going through Debian first is the best path. This way ensures that your package will have a dedicated maintainer. It also will reach the largest number of users as it will be available in not just Debian and Ubuntu but all of their derivatives as well. Some useful links for requesting/providing new packages in Debian:

  • Work-Needing and Prospective Packages - Information on how to file "Intent to Package" and "Request for Package" bugs as well as list of open ITPs and RFPs.

  • Debian Mentors FAQ - debian-mentors is for the mentoring of new and prospective Debian Developers. It is where you can find a sponsor to upload your package to the archive.

  • Debian Developer's Reference - Debian Developer's Reference's section on new packages. The entire document is invaluable for both Ubuntu and Debian packagers.

Directly into Ubuntu

In some cases, it might make sense to go directly into Ubuntu first. Some helpful links:

  • The Ubuntu App Developer site - for lightweight desktop applications, you can submit them directly on the My Apps section of developer.ubuntu.com, the App Review Board will review them and they will be published in the Software Center.

  • Packaging Guide - an introduction to how to package for Ubuntu.

  • REVU - a web-based tool to which Ubuntu contributors can upload new packages for review by Ubuntu Developers for inclusion into Ubuntu.

  • Sponsorship Process - After entering Ubuntu, you can maintain your package through the sponsorship process.

Personal Package Archives

Beyond the official Ubuntu and Debian channels, Launchpad offers you the ability to distribute Debian packages directly to your users through its Personal Package Archives or PPAs for short. One particularly useful aspect of a PPA is that you can provide daily builds of your software for testing purposes.


https://wiki.ubuntu.com/UbuntuDevelopment/NewPackages details the normal process for including packages into Ubuntu.

There are often a lot of packages awaiting review on the REVU site, which is a reason why we suggest that packages are uploaded to Debian, where they can benefit even more people. https://wiki.ubuntu.com/Debian/ForUbuntuDevelopers#Getting_new_software_in_Debian explains how this can be done.

For Ubuntu, you can ask people for reviews on #ubuntu-motu on irc.ubuntu.com, and for Debian there is a #debian-mentors channel on irc.oftc.net.

Alternatively, there is a developer.ubuntu.com page which details a separate process of getting applications reviewed & published for stable releases.


Background

Ubuntu doesn't allow upload of binary packages, but only source packages which are build by build servers.

Getting your packages directly in Ubuntu repositories is not so easy. It is recommended to have it first in Debian and get it synced from there. So for now you can put it there in your PPA. You can create a PPA with your Launchpad account.

Uploading to PPA

If you used debuild to build the package, then your work is a bit more easier. debuild generates many files including .dsc and .changes

You might have used .dsc file with pbuilder-dist to create the deb file, so now all you need to do is to publish it to a PPA for now. Use

dput ppa:yourlaunchpadusername/ppaname foo.changes

You will need to sign the package before upload with the same key as you have uploaded in your Launchpad Account

Pushing in Debian/Ubuntu

The pushing of your package in Ubuntu/Debian repositories includes a review from the maintainer and the ftp masters at Debian. The license has to be very clear with no ambiguity. You might need a sponsor for uploading to Debian

Filing an ITP

You might need to file an ITP (Intend to package) to get it packaged in Debian. This is just a formal procedure.

When the package is available in experimental/unstable then you can use requestsync tool to file a sync request on LP. For getting requestsync working you need to run manage-credentials to login to Launchpad

Both of these tools are in package ubuntu-dev-tools