Development:Cleanup

Code Cleanups
When 2.0 development began, most of the developers were new to both Python and Qt4 so we were learning as we went along. Now we've more experience we can see that there are areas where we could improve things. In addition there are python tools such as pylint which suggest improvements.

In addition as we were trying to get 2.0 out of the door as quick as possible, we chose not to write any unit or functional tests.

Looking forward we will also want to move to both Python 3 and Qt5. Whilst this may or may not happen for 2.2, we may want to make changes that will make the transition easier in the future.

Therefore before we start throwing too many new features into 2.2 we would like to take time to look at the code base and perform cleanups. Here we will list those things we should do, and also those people who will volunteer to do, or head up those jobs.

We need to set a deadline to stop focusing on tidying and focus on new features. Not that this should stop tests being written of course, but if someone wants to add a significant new feature it would be easier if the entire code base isn't being refactored underneath them. 1st July 2013?

Design
List here those places where the OpenLP code design isn't as it should be. I.e. modules functions or classes are in the wrong place, or we've done some things just plain wrong.


 * Media tidy (TRB143)
 * Registry (TRB143)
 * Settings (o123hallo)
 * sip (o123hallo)

Code standards
Where we want to change some coding standards.


 * 80 -> 120 columns (TRB143)
 * camelCaseInQtClasses -> underscores_everywhere_regardless
 * class properties

Unit Testing
See: Writing Unit Tests

We need unit tests everywhere, however are some places more important than others? It might be also a good idea to split up areas, so two people don't start writing the same tests. List here those that you are working on, or particularly want to do yourself.

pylint
Jenkins shows the PyLint violations here

The "High" issues should probably be tackled first. Again we'll want to split these up to ensure two developers don't tackle the same items, list here those items you are working on, or those you consider most important to tackle first.

Functional Testing
Some examples exist

Interface Testing
Two dialogs have basic tests so they can be used as an example. Dock style windows have not yet been attempted.

Python 3
Is there anything we can/want to do that is python 2 compatible that will make a future transition to python 3 less painful?

PyQt5
OK Qt5 is released, but PyQt5 isn't yet. However is there anything we can/want to do that is PyQt4 compatible that will make a future transition to PyQt5 less painful?