This page tells you how to contribute code changes to Launchpad. Ask for help right away if you run into problems.
Submitting a Patch to Launchpad
Below we describe the process of getting a code change into Launchpad. You should already have the Launchpad sources, be able to build and run Launchpad, and be familiar with the coding style guidelines.
Note that by "patch", we just mean a code change, not an actual patch file meant for the patch program. In Launchpad, patches are typically delivered as Git branches hosted on Launchpad itself; see below for details.
Before making your change, you need to talk about it first to a Launchpad developer. The easiest way there is to ask the person listed as the on-call reviewer (OCR) in the #launchpad-dev IRC channel on irc.freenode.net. That "pre-implementation chat" will make sure that you have all things covered. If your proposal involves UI changes, you might even want to make screenshots or a screencast.
- Make sure your change is about one single thing (say, a specific bugfix), and that all the revisions for it are committed on your Bazaar branch.
Push the branch up to your Launchpad user account. Run this with your local copy of the branch as your current directory: git push <remote> <branch name>
Run tests on your branch. If the tests don't pass, go back to hacking, commit new changes, re-push, and re-test. Repeat until the branch passes.
Please send in your contributor agreement form now (it's an easy email process). We can't accept the change without a contributor agreement.
Propose your branch for merging, by going to https://code.launchpad.net/~<username>/launchpad/+git/launchpad/+ref/bugfix123 and click on Propose for merging into another branch. (The repository to merge into is lp:launchpad, the branch is master.) Fill in the field for requested reviewer with the name of the reviewer you found, and follow the guidelines for writing the merge cover letter.
- If there's a bug report for your branch, make sure the bug is linked to the branch. If there isn't, file a bug, and link that to the branch.
Find someone to review the branch. Usually, this would be the Launchpad developer with whom you had your "pre-implementation" chat about the change. If he or she is not available, you can ping the on-call reviewer in #launchpad-dev. See the Code Review page.
Once the reviewer approves the change, they'll take care of merging your changes (that's until we work out an automated process).
Once the branch lands and is deployed to qastaging (XXX - how do you find out if this is the case? do you receive an email? - jml), test the change on qastaging, verifying that the change works as expected and doesn't introduce any regressions. See PolicyAndProcess/QAProcess.