In Ubuntu it's important to us to have a good relationship with our Upstream projects and an efficient workflow we both benefit from.
The Upstream namespace on the wiki is all about:
- Best practices for collaboration between Ubuntu and Upstream
- giving Upstreams better visibility into what's happening in Ubuntu
- Recommendations for engaging and working with an Upstream project
- Information for upstreams to help get their packages represented at the highest quality level in Ubuntu.
How Ubuntu Works
Overview of Ubuntu Development
Our Stable Release Policy - this is information handy if you have a fix that you would like to see shipped in a current stable release.
How we deal with Bug Reports
How we use Translations
How to Get In Ubuntu
If your existing software is not available in Ubuntu then here are some steps to get your package in there. This is the recommended method for getting your packages into the distribution. Once you're in Ubuntu and Debian, then maintenance of the package becomes just a matter of updating it.
Packaging Guide - Your software needs to be packaged in Debian source package format. From the source package, the Ubuntu build systems build and distribute installable binary packages which users see in the Software Center and Update Manager. This page has information for new packages that is important.
Getting Started - After you have packages you should contact a MOTU to peer review your work. Remember that this is done on a volunteer basis, so please have realistic expectations on how quickly your package will be reviewed. It helps tremendously if someone from your existing upstream community can help out with packaging, do bug workflow, and do general upstream contact work. If you are serious about maintaining your software in Ubuntu, then we recommend you just become an Ubuntu Developer by following Ubuntu development.
If your software is included in the main Ubuntu repository, there are some additional packaging considerations regarding translations.
- Most software lives in the universe component of Ubuntu, which, if possible, is synced from Debian on a regular basis. Getting your software packaged in Debian has many benefits.
Debian has a large developer community, and also more development teams. It is likely that you will be able to integrate an existing team, that will help you get your software packaged.
- Your software will be in both distros at once, available to more users. You avoid duplicating efforts.
- Your software will benefit from all the Quality Assurance efforts done in Debian, as well as from those in Ubuntu.
- Please note that if your software packaging has licensing issues or glaring flaws that skipping the Debian requirements will likely mean that it won't meet Ubuntu requirements.
How to Get Packages Out Fast (aka. quick and dirty)
Launchpad provides a service called Personal Package Archives(PPA). A Launchpad PPA can build packages for i386 and amd64 architectures and multiple Ubuntu releases. It's a great way to get your stuff "out there" quickly. The drawback is that since your PPA package isn't enabled in Ubuntu by default, each user who wants to install your package will first need to manually add a reference to your PPA repository to their system. You can also have multiple PPAs, so if you want to do something like have a stable one for your stable releases and a more experimental (or daily!) PPA builds for developers/testers then that's also available.
Documentation for PPAs - How to set them up.
Remember that PPAs are great for getting things out there, but getting your packages into Ubuntu in the long term will end up being less work and easier for users to find; however they are a great playground for risky branches or features you might want tested. You can also set up Launchpad to make daily builds of your software.
- Useful for getting feedback on the tip of trunk.
- Makes it easier for users to confirm when you've fixed a bug.
- Take advantage of the PPA build farm, building for multiple architectures and multiple releases of Ubuntu (Great for testing!)
If you miss a release
You can request to have your package backported to an older release if you've already got a package in the developmental release. This usually happens after the release and your package has gotten into Debian and it gets synced automatically.
Integration with Ubuntu
Generally speaking if you're a GNOME or KDE application then you should follow the conventions for those projects. However we have some useful things that you might want to consider integrating into your application:
A tour of our platform.
developer.ubuntu.com - Application Developer information, including APIs.
Launchpad integration is a library that adds an entry to the help menu so people can file bugs, translate and find out more information about a package. Here you'll find the technical details on how to use it.
Messaging Menu - The messaging menu provides quick access to messages that have queued up while the user was away.
Application Indicators - our plan to clean up the notification area.
Notify-OSD - slick-looking notification bubbles.
Ubuntu One APIs - if you want to integrate your application with the Ubuntu One syncing service for files, music, data, and account information.
Adopt an Upstream - if you are highly interested in some Upstream project and want work with them to improve it in Ubuntu - this is a good starting point if you want to start going through bugs.
Template to adopt a project.