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:
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.
Test Fever
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.
SEXTANTE
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.
Documentation
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.
Lizmap
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"]
Other activies
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)