Contributing to free software hosted on

Source code is available on or on the mirrors.

The forge at uses the Mercurial version control system. If you are not familiar with the tool, check out this tutorial.

Sending Your Contribution

There are multiple options to send contribution.


The simplest way is to send a patch by email to Subscription to the list is highly recommended to avoid manual moderation.

Generate patch from mercurial changeset using hg export --git REV and send the resulting patch with your favorite email program.

You can also use the patchbomb extension to send email directly from mercurial.

Enable the extension in your ~/.hgrc:


method = smtp


Then use the email command to send patch:

$ hg email --rev REV

See the online documentation for details.

Pull request

If you are familiar with social coding sites, you can issue a pull request.

  1. Create an account on Bitbucket if you do not already have one
  2. Fork the project repository from
  3. Follow the basic instruction to create a pull request

Changeset Evolution

If you are a regular contributor or an experienced Mercurial user.

The preferred way to contribute is using the changeset evolution feature of Mercurial. You can use the evolve extension to turn the feature on. If need an evolution enabled public repository you can ask for an access on

Writing new code

  • Each changeset does just one atomic change and leaves the project in a working state.

  • Respective help sections should be updated.

  • Code should be tested (add a test alongside new feature and bug fix comes with their regression test.)

  • Style changes are welcome but should come separated from more complex ones.

  • Commit message should be on the form:

    [topic] short summary of changes (less than 80 chars)
    Describe the problem the commit solves or the use
    case for a new feature. Justify why you chose
    the particular solution.
    Closes #WXYZ

    The Closes #WXYZ part refers to the ticket this changeset would close (where applicable). This is used to automatically link the changeset relevant ticket on the forge.

Review Process

All changesets go through a peer review process. Changesets proposed for inclusion live in review repository at The review itself happens in the forge via in-line comments and tasks. Pending changesets are accessible through the "patches" tab of a project page. Everyone is welcome to contribute to this process!