Friday, 30 August 2013

A rant about QT for the Raspberry Pi and the danger of community projects

I am playing around with a Raspberry Pi. Actually, it is my friend's Pi but anyway, I want to write some programs on it. Python is all very well but I don't know anything about it really and the few things I've tried haven't failed in a very obvious manner so I wanted to look at something else.

I wondered about Qt (apparently pronounced cute) since it is a very well designed language based on C++. It compiles, it's fast, it's well featured etc. A quick look around and I found a site ( which has various wiki entries and one in particular looked like it might get me going:

It seems good. The basic story is that the packages aren't available yet from the repositories but you can compile it on a desktop and add it to a Pi image which you can then boot from. The first thing I noticed was the "do everything script". After downloading a few dependencies (like git and unzip) you run the script and it does everything needed to compile. Well, that failed. Couldn't find the init-repository script which is supposed to live in qt5 (and which is present if you follow the manual steps). So that was a bummer and I had to turn to the manual steps.

Some of the manual steps are slightly different in location/name from the script so I had to delete everything and start again, which wasn't so bad except I had just downloaded a 400Mb Pi image!

Anyway, I start the manual steps and there are various things that don't work. One of the git download links is broken (but they provide a mirror site to use fortunately) and then another step gets some source code from qt-project, rather than gitorious and this causes some code conflicts. I'm not sure why and since it wasn't mentioned in the instructions, I thought it might not be a problem. Carrying on, qtbase builds in about 25 minutes and then qtimageformats builds fine. I then got to qtjsbackend and it errored - it was the conflicted files from earlier and I then realised what had happened but then haven't gone back to find out why the conflict has occurred.

Without the super script, building all the modules is pretty time consuming since they have to be done one at a time in each respective directory but now, I've put it on hold because it's too messy.

Obviously this is some kind of open-source/community project and, of course, there is a lot of scope for these to do really well but they need leadership, direction and ownership. Often, these things start well but lack funds or personnel but what that means is that people like me who are pretty tech savvy cannot easily do something that is supposed to be easy and means that I'll probably skip Qt on the Pi altogether. If you are basing a set of beginner instructions on code that is not static, everytime a change is made to the code, the instructions need to be re-tested to avoid problems like this. Otherwise, download only static releases, which you know will work, and then you can test each time a major release is done. In the same way, having some specific commit that is not part of the core code is undesirable since it might be an accident waiting to happen and as with anything this low-level, the knock-on effect might be obvious or really subtle!

Rant over.
Post a Comment