Its been two weeks now since I returned from the QGIS Hackfest in Lyond, France, but I haven't had the time to write up my experiences yet....until now. Read on for more!
It was the first time that the hackfest (which is a twice yearly event) has been held in France. Lyon is a lovely city with good transport links from the airport and a modern inner city transport network. The venue for the hackfest was a university hospital (Université de Médecine et de Pharmacie Grange Blanche et Lyon Nord) and it was a short walk from our accommodation which was great. Yves Jacolin (OSGeo-fr president, camptocamp), Jean-Roc Morreale (QGis translation team, CG62), Hugo Mercier (Oslandia) and Vincent Picavet (Oslandia, OSGeo-fr treasurer) of the francophone OSGEO local chapter kindly organised the event. It is a HUGE amount of running around to organise such an event, so we really extend our heartfelt thanks to them for all the effort they put into the event.
We had four event sponsors:
- 3Liz (http://www.3liz.com)
- Camptocamp (http://www.camptocamp.com)
- Oslandia (http://www.oslandia.com)
- Services geographiques (http://servicesgeographiques.com)
As well as the sponsors, many people and organisations around the world regularly donate to the QGIS project. These funds are used to defray the costs of holding the event, for the most part in covering transportation and accommodation costs of the attendees. These contributions of our sponsors and our donors really make a HUGE difference to the project, so we are deeply indepted to you all!
The four day event followed our usual 'unmeeting' format - a format which works well since it keeps things informal and lets us intersperse discussions and talks into moments when they will have the best traction with the attendees. There was so much going on that I probably will miss some important things, but hopefully other attendees will add appropriate comments to this article as needed.
I spent some time discussing the QGIS unit test suite with various people since I came to the Hackfest with a particular goal of getting the test framework 'on the road' again. One of the problems with the test suite is that we have discovered that QGIS may render (and do other things) quite differently from system to system. QGIS is a loose coupling of numerous libraries, library versions, operating systems and so on. All of these permutations can make for quite a bit of variance in test results. For example different versions of Qt4 may render graphics slightly differently, different versions of the proj4 EPSG database may result in small rounding differences in CRS parameters and so on. Making sense of all of these interrelations can be quite a headache - especially if you are trying to produce a consistent, cross platform test suite. After disucssing various options, we decided there isn't really any elegant way to deal with these permutations and that a better approach would be simply to annotate the anomalies encountered and use them as a basis for deciding whether a test has passed or not. The anomaly implementation was carried out with particular reference to image rendering where we have some code in our testing infrastructure that will compare a test render against a control image. What the anomaly implementation does is evaluation deviations between the control and the test render and decide if they are acceptible or not - based on a library of know differences.
Of course this approach is probably not sustainable for storing anomalies from every single user out there, but it does allow us to build up a profile of working tests which can be run on a nightly basis for different operating systems and identify early if things are getting broken by upstream code changes. One other great thing about the hackfest was that while I was working on all this testing stuff, I happened to have a chat to Julien Malik (of Orpheo Toolbox fame) who mentioned that he had a lot of experience using CDash - the online testing dashboard system that complements CMake's CTest framework. Since we are already using CTest and I had tried and failed dismally to get QGIS working with the CMake public Dash server, I seized the moment to get some help from Julien. Julien very kindly donated some space on the OTB test server and a few hours later after a great run through on using Dash from Julien we were up and running.
With dash in place and our test suite now in a pretty good state (== lots of green in the above picture) we are in a much better position to start building out our test suite and encouraging a more Test Driven Development ethos within the project - and ultimately creating a more robust application for our end-users. You can submit your own test results to the QGIS Dash simply by typing 'make Experimental' (note that is a capital 'E') when compiling QGIS. You can view the QGIS dashboard online here.
Probably causing the most buzz at the hackfest was SEXTANTE, a processing framework which has been a popular add on to GVSIG for some time and has now arrived in QGIS Land courtesy of Victor Olaya. Victor gave a great presentation about SEXTANTE which I recorded with my cell phone - you can watch it below (with apologies for the camerawork).
[advanced_iframe securitykey="da39a3ee5e6b4b0d3255bfef95601890afd80709" src="http://www.youtube.com/embed/D-FzwJPPcDc" height="315" width="560"]
Pirmin Kalberer also gave a short demo showing how you can easily write a new plugin for SEXTANTE in python (yes thats right a plugin for a plugin):
[advanced_iframe securitykey="da39a3ee5e6b4b0d3255bfef95601890afd80709" src="http://www.youtube.com/embed/LP0UhYZvuVc" height="315" width="560"]
Victor has funding to work on SEXTANTE through to years end and has already set a frenetic development pace, so we are anticipating great things from SEXTANTE over the coming months. After 1.8 has been released, moves are afoot to incorporate SEXTANTE directly into QGIS as a 'core plugin' so it will be available out of the box for all users.
There were probably six or seven people working on various aspects of the documentation. A massive rework of all of our documentation is underway in order to port it to Sphinx (and away from LaTeX). The project is part of an ongoing effort to normalise our project infrastructure (to reduce the number of moving parts we have to contend with) and to make it easier for contributors to take part in the documentation effort.
Michael Duchin of 3Liz.com gave a great presentation on the work they have been doing for Lizmap . Lizmap is an alternative client for QGIS web server and a backend layer to help you to have a more flexible map publishing environment.
[advanced_iframe securitykey="da39a3ee5e6b4b0d3255bfef95601890afd80709" src="http://www.youtube.com/embed/drz284X87S8" height="315" width="560"]
There was a lot of other activity going on - bug fixing, translation updates, working on the Android port of QGIS, applying patches and generally trying to get things ship-shape for QGIS 1.8. Here is a little walk around poll I made to see what people were busy with.
[advanced_iframe securitykey="da39a3ee5e6b4b0d3255bfef95601890afd80709" src="http://www.youtube.com/embed/cQiSZtMlBoc" height="315" width="560"]
Marco Hugentobler also demonstrated the work he has been doing in his raster_resampler branch which is introducing a long needed overhaul to the QGIS raster infrastructure.
Giuseppe Sucameli demonstrated the DB Manager plugin (his Google Summer of code project of last year). DB Manager provides a single integrated environment for database query, modification and data migration. You can for example drag a layer from one database and drop it into another and it will seamlessly import it (even if one is sqlite and the other postgis!). DM Manager will become a core part of QGIS as of 1.8.
Vincent Picavet also kindly sent me a list of things that he knew were being worked on which I quote for you below:
- QGIS Python plugin workshop translation to french (by Vincent)
- ReST Documentation migration (Jean-Roc, Yves, Benjamin, Matthieu, Otto...)
- Documentation fixes (same team)
- Atlas plugin bugfixes (by Vincent)
- Publication of a new plugin to generate grids for Atlas (Bertrand Chaussat)
- Copy-paste style between layers (Hugo)
- Sextante PostGIS AlgorithmProvider draft (mostly working, still to be published) (by Vincent)
Google Summer of Code
We spent some time discussing Google Summer of Code submissions - it is really encouraging to see so many good proposals aimed at QGIS. After the hackfest, I have since heard that the following projects have been accepted:
I narrowly avoided missing my flight out of Lyon caused by an inexplicable bout of oversleeping brought on by a late night of hacking on QGIS. Luckily Werner Macho and Jürgen Fischer saved my bacon by thinking to knock on my door to wake me up! I had a really great time in Lyon and the organising crew did an awesome job hosting the event. My flight and travel costs were paid for by QGIS sponsors so a big thank you to everyone who has put something in the QGIS tip jar!