Reflections and Projections

openlp.org 2.0 is cooking!

Over the last few months about 8 people have been quietly working on a new version of openlp.org: Version 2.0. This version is being written in Python, so that it will work on Windows, Linux and Mac OS X - a feature that has been requested many times.

In addition to being cross-platform, openlp.org 2.0 has a plugin system, where people can write their own plugins if they wish. These plugins hook into openlp.org and allow plugin developers to do the same things that the core system does. In fact, the core system (Songs, Bible verses, etc) are all plugins themselves.

One thing about writing these applications that is frustrating, is that when you start developing them you have to write a lot of code that doesn't appear on the user interface. You need to basically lay a base for the program, and only afterward when you get to the user interface part, can you see the fruits of your labour.

I'm pleased to say that we are starting to see the fruits of our labour! Last night I got the Songs plugin to show it's panel in the Media manager, and to show the song edit window when you click on the Edit button. It might not sound like much, but we've had to do a fair amount of coding just to get to that point.

Unfortunately we do still have a lot of work to do, but it's good to see that we're getting somewhere.

openlp.org on KDE 4

I recently completely re-installed Kubuntu on my computer, so that I could install the 64-bit version, and make use of my 64-bit processor. With the new version of Kubuntu came KDE 4, the Linux desktop environment that makes use of Qt4, the same User Interface toolkit we're using for openlp.org 2.0.

In customising my KDE, I found a really nice dark theme. To my delight I found that openlp.org uses the KDE look and feel, and so here below I've pasted a screenshot (click on it to view it full size):


The Future Of openlp.org: Version 2.0

As those who read this blog regularly will know, I've been looking for folks to help me out with developing openlp.org. A lot of folks have come forward and offered a range of different ways to help, including actual application development, but no one has Delphi 7, and therefore no one can help me with the development of openlp.org 1.2.

With this in mind, at the pitiful amount of progress I've made recently, I asked the developer mailing list to vote on possibly shelving version 1.2 and moving straight on to 2.0.

The reasons I cited for dropping 1.2 are as follows:

  • Only 1 person working on 1.2 (me)
  • An ever-increasing team of currently about 5 people working on 2.0 (the cross-platform python version)
  • A lot of work needs to go into 1.2, and about the same amount needs to go into 2.0
  • 2.0 is essentially going to be a copy of 1.2, just written in a totally open source environment

The response I got was unanimous. Everyone agreed that my time and effort would be better spent working on version 2.0 with everyone else, rather than duplicating effort on 1.2. This means I am officially shelving version 1.2, and we're moving ahead with 2.0.

Version 2.0 is being written in Python, using the Qt4 GUI Toolkit, and PyQt4 to glue Python and Qt4 together. If you're interested in helping out, please send me a private message.

I will be releasing another bugfix, version 1.0.2, as I mentioned in a previous post, in the near future, so if you're having any problems with 1.0.1, see the bug report thread in the forums.

Getting started on 2.0

A couple of us have started working on the forms in openlp.org, recreating the 1.0 forms in Qt Designer, the interface designer for the cross-platform Qt UI framework. I decided to take a couple of screenshots so that folks can get a taste of where we're going...

Please remember that this is not the final product. These are the first few drafts of *just* the interface. There's no functionality behind any of the windows yet. You can click on each image to download a full-sized version.

First up, here's a preview of the main form:

Here's the settings form so far:

And, just to show you that this works on other platforms, here is a earlier version of the main window on Mac OS X:

If you'd like to find out more about helping out with the development, please join us in IRC.

Version 1.0.2 on the cards

Over the last few months there have been a number of bug reports for version 1.0.1. So I'm going to be spending the next week or so tracking down the bugs and fixing them, and then releasing openlp.org 1.0.2. If you have found any bugs, please read up on how to submit a bug, and then check and add your bug to the 1.0.1 bug report thread in the forums.

On a side note, Martin Thompson has quietly been hacking away at openlp.org 2.0 (the cross platform python version), and has recently committed some code to the openlp-2 subversion repository. It's looking good so far. If you're interested in helping him out,  please join us in #openlp.org and chat to him about where you can help out.

I also want to just quickly highlight an application that Patrick Brueckner has been working on, which will clean up various things in your songs database file. You can download it from his website.

Effective Church Presentations

One of my pet peeves is those OpenOffice.org Impress or Microsoft PowerPoint presentations that folks do in churches. I've seen too many half-hearted efforts in the 28 years I've been in church.

This evening in church we had another presentation, and it got me to thinking about how to write an effective presentation. So this evening I wrote up a guide to effective church presentations and posted it to my personal blog. I hope this helps other folks who want to make their presentations effective.

Looking for help... as usual

I seem to have found myself the only one left on the openlp.org "team." All the folks who have been involved in openlp.org have had to bow out due to external commitments. In plain english (and through no fault of their own) they are too busy to help out.

So, I'm left asking for assistance again. If you're interested in helping out with openlp.org (not just development - things like support, etc), I'd really appreciate your help. You don't need to be a rocket scientist or a rock star, you just need a couple of free hours every week to lend a hand.

Things have been quiet here recently. About 2 weeks ago my computer's motherboard gave in, and I was without a computer for a couple of days while I went about ordering a new one. My computer was 5 years old, which meant that I couldn't just replace the motherboard, I had to replace EVERYTHING.

Otherwise, things are plodding on. I'm busy with a lot of behind-the-scenes work at the moment, which means that there's nothing new, just old stuff made better, but nothing really visible. This work is very necessary though. It builds the base for future features, for everything we want to accomplish with version 1.2. It also means fewer bugs in the system, and more reliable performance, something I'm sure everyone would appreciate.

That's all for now!

Is there hope for CCLI SongSelect integration?

As many folks know, the CCLI SongSelect importer in openlp.org has been disabled due to problems with the service. What many people don't know is that all the applications out there that interface with SongSelect are actually pretending to be web browsers, and are painstakingly pulling the information out of the SongSelect web pages.

The reason openlp.org (and many other presentation applications) stopped working with SongSelect was because CCLI was busy moving their systems from a ColdFusion-based setup to an ASP.NET-based setup (to be honest, I'm not sure if that's an improvement). I took a look at SongSelect again today, and it seems like they have finished the conversion and are now in full swing with the ASP.NET system.

This is both good news and bad news for us. The good news is that it means that we can integrate with SongSelect again. The bad news is that ASP.NET is a terrible system (for reasons I won't go into right now) and it's gonna take a very long time to get the SongSelect integration working again.

We're going to look into getting it going for release with openlp.org 1.2, but unfortunately we can't make any promises.

Cleaning things up...

The conflict merge went well last week, and I have a working copy of openlp.org again. I've started the code cleanup, renaming various components in the code, formatting the code to follow a certain standard (rather than 3 different ones), and rearranging a few things as well in the process. The goal behind the code cleanup is to make it easier and faster to work on openlp.org, and to make openlp.org more efficient.

What this all translates to at the end of the day is that you as the user will find openlp.org faster and more efficient, and when we need to make a change or an enhancement, it'll be faster too.

Once I've completed the code cleanup, I'm going to continue with my rewrite of the control component, which will enable us to do things like use the up and down cursor keys to change between slides.

On that note, I know a number of folks have asked me for the components so that they can make changes to openlp.org (I presume it's because development is not happening fast enough for them, and they want certain features for their church). Please chat with me and consider lending a helping hand with the development. If you want feature A, I'm sure that there are a number of other churches who also want feature A, and it would be beneficial to them if you contributed that back to the project. There are also a number of things you can and can't do with the current codebase, and unless you chat with me and ask, you won't know and you'll struggle unnecessarily (for instance, using the up and down cursor key will only be possible after a rewrite of the control component).

In short, if you contribute back to openlp.org, not only do you benefit, but others will too. You won't need to make changes to your version each time a new version of openlp.org comes out, development will happen faster, and others will benefit from your changes as well.

Getting started with 1.2

This evening I merged the bugfixes from openlp.org 1.0.1 into the main code. My next move will be to clean up the conflicts that arose in the merge (the version control software can't always do a perfect merge, so it lets me "resolve" some of those "conflicts"). Once I've done that, I'll be continuing with the code cleanup that is necessary to implement some of the more advanced things.

The next step, after the cleanup, will be to rewrite the control component, which will allow a large number of usability improvements (like pressing the down key to go to the next slide!). Once I've done that, I'll start migrating the songs to the new database format necessary to add more features requested (like verse ordering). These first 3 things are the biggest changes, and once they're done, we will most probably start releasing development versions of openlp.org 1.1 (which will become 1.2).

I'm looking forward to a number of the improvements being introduced, and I hope you'll bear with me while they are being worked on. Thanks to all the folks who have posted feature requests, they have been noted, and will be sorted into various categories and decided upon once I've finished the code cleanup.

If you're keen to help developing this next version of openlp.org, please drop me an e-mail. To those folks who have already sent me e-mails about the components, please just drop me yet another mail - my e-mail is in a bit of a state of flux at the moment, and I can't access your e-mails.

God bless!