Development:Getting Started

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 )
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.

The OpenLP Development team on Launchpad has a mailing list attached to it, which you will be subscribed to automatically. Important matters should be discussed on the mailing list.

The old mailing lists on SourceForge.net have been discontinued.

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

Hang out in the IRC channel with us ( mandatory )
Almost all of the developers are active in the OpenLP IRC channel. We discuss a lot of things in IRC that don't ever make it on to the mailing list or the wiki, so being in IRC is more than just essential, it is required.

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 pastebin.com 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 and TRB143. Some of the other active developers are tgc, springermac, phill and ElderP. Unit193 is 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 2.x is being written in Python 3 and Qt4, so you'll need to install Python 3 (3.3+), Qt4, and the PyQt4 Python bindings for Qt4. PyCharm is a great Python IDE with support for PyQt4 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:


 * Linux Development Environment
 * Mac OS X Development Environment
 * Windows Development Environment

Check out the latest code
OpenLP uses the Bazaar DVCS (read more about Bazaar) and the main branch is hosted at Launchpad.net. 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 --2a ~/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 http://bazaar.launchpad.net/~openlp-core/openlp/trunk ~/openlp/trunk

Read the Coding Standards ( mandatory )
Go and read the Coding Standards and the String Standards before writing a single line of code!

Notes:

 * 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.