# Contributing

XO is an Open Source project released under the AGPL v3 (opens new window) license, contributions are therefore very welcome.

# Bug reports

You can open bug reports here (opens new window) (issues, enhancements, ideas etc.).


Before creating an issue, please take a look into this section for more details.

# Documentation / Code

Using the GitHub fork/pull-request feature, you may send us fixes or enhancements.

Please, do explain:

  • what you are fixing (issue number if available);
  • how you did it.

# Pull requests

The best way to propose a change to the documentation or code is to create a GitHub pull request (opens new window).


Your pull request should always be against the master branch and not against stable which is the stable branch!

  1. Create a branch for your work
  2. Add a summary of your changes to CHANGELOG.md under the next section, if your changes do not relate to an existing changelog item
  3. Create a pull request for this branch against the master branch
  4. Push into the branch until the pull request is ready to merge
  5. Avoid unnecessary merges: keep you branch up to date by regularly rebasing git rebase origin/master
  6. When ready to merge, clean up the history (reorder commits, squash some of them together, rephrase messages): git rebase -i origin/master

# Issue triage

# Labels


  • bug
  • cleanup: should be taken care of to avoid technical debt
  • enhancement
  • meta: points to other issues and is used to manage long term goals (similar but orthogonal to milestones)
  • question


All issues MUST have one of these labels!



This helps new people to contribute.

  1. easy
  2. medium


  • backup
  • GUI
  • upstream: not a XO issue → link to the upstream issue and monitor progress


  1. low: will be fixed when possible
  2. medium
  3. high: should be fixed for the next release
  4. critical: should be fixed ASAP and a patch release is done once fixed


A new version MUST NOT be released with a high or critical issue.


For all issues:

  • duplicate: issue is a duplicate → SHOULD be closed
  • in progress: issue has been assigned and some work is going on

For bugs:

  • confirmed: bug is confirmed → SHOULD be assigned to someone
  • invalid: bug cannot be confirmed → SHOULD be closed

For enhancements:

  • draft: proposal is not finished and work should not be started yet
  • wontfix: not a real enhancement → SHOULD be closed