Reports from the winning grant proposals 2020

With the QGIS Grant Programme 2020, we were able to support ten proposals that were aimed to improve the QGIS project, including software, infrastructure, and documentation. The following reports summarize the work performed in the proposals. We’ll update this blog post as more reports come in:

  1. Quality Assurance methodology and infrastructure (Alexandre Neto, Alexander Bruy, Giovanni Manghi)

    The Tester plugin has been updated to run on QGIS 3.x. It allows to run automated and semi-automated tests and helps to conduct testing by providing step-by-step instructions to perform manual or verification tasks. An initial small set of tests for QGIS core functionality has been implemented as a separate QGIS Core Tests plugin. Furthermore, a test management system and test plan based on KIWI TCMS has been set up and documentation for testers has been created and published.

  2. Smarter map redraws + tile download manager (Martin Dobias)

    Smarter Map Redraws avoid the annoying flicker when map in the map canvas is zoomed or moved. It is especially noticeable with background maps. The work has reduced the problem especially for raster layers. See the videos of comparison before/after.
    Tile Download Manager is not going to be very visible to the users, but it should make QGIS behave nicely with remote servers – until now it would be common that QGIS would request raster/vector tiles, then abort the requests while they were in progress when map got moved/zoomed, only to start those requests again – this should be avoided now.

  3. DB Manager Table Management Functionalities to Browser Port – part 2 (Alessandro Pasotti)

    QGIS browser now exposes a new “Fields” item for vector layers that can be expanded to show the underlying fields, an icon identifies the base field type. New context menu items allow user to create and delete fields. At the connection level, a new context menu item allows you to create a new table for all DB connections that support the Connections API (PG, Spatialite, GPKG, MSSQL). All the new functions are implemented using the new connections API and exposed to Python for plugins/scripts. There have been many other small improvements in the API and in the browser, such as homogenization of the error/warning/success reporting .

  4. QGIS Server, OGC tests and Continuous Integration (Paul Blottiere)
    A Python tool named pyogctest has been implemented to run OGC tests in command line for the WMS 1.3.0 testsuite and has been integrated with GitHub Action in QGIS continuous integration mechanism to avoid regressions. The documentation chapter about OGC and conformance tests is now up-to-date with an explanation of how pyogctest can be used locally for server developers. Moreover, pyogctest is now also integrated with QGIS-Server-CertifSuite for the nightly tests. This way we have an homogeneous testing environment with CI. 
  5. QGIS Server performance monitoring (Paul Blottiere)
    The whole QGIS-Server-PerfSuite has been upgraded to use 3.10 and 3.14 releases side by side with 2.18 and master branch. Performances may be now monitored daily with the latest releases. Moreover, a simple anomalies detection mechanism has been implemented and a mail is sent if a regression is detected. Several scenarios have been added to compare performance with the same data but relying on different providers (PostGIS, Spatialite, Geopackage and Shapefile). Finally, a simple mechanism based on multiprocessing has been implemented to simulate multi-clients situation. 
  6. FileGeodatabase spatial index in OpenFileGDB driver (Even Rouault)
    This work has been successfully completed in GDAL master (for GDAL 3.2) and automatically benefits QGIS when it uses the OpenFileGDB driver. Performance-wise, for example, counting the number of features intersecting a spatial filter which returns 81 046 polygons, now runs in 400 ms with GDAL 3.2dev and the OpenFileGDB driver, versus 6.7 s before (full scan), vs 890 ms with the FileGDB driver (with FileGDB SDK 1.5). Interactive display in QGIS with the OpenFileGDB driver is as fluid as with the FileGDB one. Comparing behaviour of OpenFileGDB and FileGDB drivers with strace shows that they read a similar amount of data in the .spx file, which confirms it is uses correctly. The filegdb reverse engineered specification was also updated.
  7. MacOS packages (Peter Petrik)
    All tasks from the proposal except the notarization process have been addressed since the work necessary to address critical bugs in projection, grass, saga, gdal, python and other parts of the MacOS packages exceeded expectations. (A note about the workaround for notarization has been added to the QGIS.org webpage for now.) Key improvements for QGIS 3.16 MacOS Packages are: QGIS-Mac-Packager without homebrew dependencies, updated GDAL3, PROJ6 & GRASS 7.8.2, fixed Grass, Saga &, GDAL provider loading, and many more. 
  8. Evaluate Qt for Python (Denis Rouzaud)
    The initial evaluation was followed by a report on the migration to Qt-for-Python. The report’s recommendations are now being discussed in QEP#237.
  9. Settings registry (Denis Rouzaud)
    The complete implementation of the core part has been achieved (settings, registry and Python bindings). All core settings were migrated. Other settings still have to be migrated, CI tests should be added to avoid usage of the old API and potential GUI improvements are outlined in the report.
  10. Vectorization of selective masking (Julien Cabieces) 
    Selective masking now avoids rasterization as much as possible. 

Thank you to everyone who participated and made this round of grants a great success and thank you to all our sponsor and donors who make this initiative possible!