Development:Getting Started

From OpenLP
Jump to: navigation, search

So you want to help out with the development, and your next question is, "How do I get started?"

Mandatory Requirements

If you are interested in contributing to OpenLP at all, including just bug fixes, these are all mandatory requirements. If you just want to look at the code, it is highly recommended that you join the developers in IRC.

Sign up to Launchpad (mandatory)

Launchpad logo.png

If you don't yet have a Launchpad username, you'll need to sign up for one. In order to commit code back into the main branch, you'll need to have a Launchpad username, and will need to apply to be added to the OpenLP Development team on Launchpad. Once you're on Launchpad, you can propose a merge.

Don't forget to upload your public SSH key, as shown on the pages for Windows and Linux/Mac OS X.

Why Bazaar/Why Launchpad

Folks often come into our IRC channel and ask why we chose Bazaar and Launchpad for development. The reality is that Launchpad was launched in January 2004, while Github was only launched in April 2008. At the time that OpenLP moved from (where it had been since 2004), Launchpad was the only other widely known online source code repository. Since Bazaar's workflow closely resembles that of Subversion, the version control system OpenLP was coming from, it seemed a natural progression. At the time, git was also extremely small and unsupported by most online source code repositories. After two repository moves and three version control moves, OpenLP is going to stay where it is.

Sign up to the Developer Mailing List (mandatory)

The OpenLP development team uses a mailing list for all important communication. To sign up for the mailing list, go to

Learn How We Do Things (mandatory)

All open source projects have their own way of doing things, and OpenLP is no different. We have standards around naming conventions, syntax and what text in various parts of the GUI should be like. We also have our own development workflow.

Coding and String Standards

Go and read the Coding Standards and the String Standards. If your code and your strings don't conform to the standards, then your merge proposals will be rejected and you may have to rewrite your code.

Development Workflow

We have our own unique workflow in OpenLP. If you're keen to help out, you'll need to learn our development workflow.

Hang out in the IRC channel with us (highly recommended)


Almost all of the developers are active in the OpenLP IRC channel. We discuss a lot of things in IRC that don't necessarily make it on to the mailing list or the wiki, so it is advantageous to hang out in IRC.

Network: Freenode (
Channel: #openlp

A few notes, with regards to IRC:

  • Most of the developers live in timezones close to UTC (GMT), and as such will not be around in the evening hours of the USA.
  • Don't private message people, this is regarded as rude
  • Don't use CAPITAL LETTERS, this is also regarded as rude
  • Multiple exclamations!!! or question marks??? are unnecessary
  • IRC is not private, don't post any information you don't want the general public reading
  • Use LodgeIt! for code, or anything else you want to paste which is longer than 3 lines
  • Relax, we're a friendly bunch and like to joke around. Don't take us too seriously.

The active core developers are superfly, TRB143, tgc and phill. Some of the other active developers are alisonken1/alisonken1home/alisonken1lap and thelinuxguy. Unit193 and wrst are often around at times when others aren't, and can usually point you in the right direction.

Most of the developers are in timezones from UTC to UTC+2.

Get your development environment up and running

OpenLP is written in Python 3 and Qt5, so you'll need to install Python 3 (3.4+), Qt5, and the PyQt5 Python bindings for Qt5. PyCharm is a great Python IDE with support for PyQt5 which most of the developers use. There is a community edition available for free. Developers who have proven their commitment are entitled to a license for the professional edition (decided by the core developers). You'll also need a Bazaar client in order to check out the latest code. Read more detailed instructions on the following pages:

Check out the latest code

Python code.png

OpenLP uses the Bazaar DVCS (read more about Bazaar) and the main branch is hosted at Do the following to set up your local branch:

  1. Identify yourself to Bazaar:
    $ bzr whoami "Raoul Snyman <>"
  2. Log in to Launchpad:
    $ bzr launchpad-login raoul-snyman
  3. Create a shared repository:
    $ bzr init-repo ~/openlp
  4. Checkout the latest code:
    $ bzr checkout lp:openlp ~/openlp/trunk

Firewall access

If you are behind a firewall with the bazaar port blocked, and you only want to download the code rather than push it, then you can check out the code using http. (However when you wish to submit changes you will need full access to bzr.)

bzr checkout ~/openlp/trunk


  1. If you get an invalid public key error when using bzr on Windows then make sure you have the BZR_SSH environment variable set:
    set BZR_SSH=paramiko
  2. If you get permission denied errors because bzr is trying to create a .ssh directory under the administrator's account when you are a normal user then check the %HOME% environment variable for correctness and remove if incorrect - it's not a standard environment variable so applications trying to depend on it are clearly insane.