QGIS GRASS Plugin Upgrade Crowdfunding

The campaign to support upgrade of GRASS plugin in QGIS to GRASS 7, implementation of vector and raster data import to GRASS via QGIS browser widget drag and drop, completely new editing of GRASS vector layers with undo/redo, attribute forms and built areas and attribute based symbology on background.


The GRASS plugin in QGIS was written mostly in 2004 and it was maintained only in last years without any big overhaul. Since then, QGIS evolved both in functionality and cleaner API giving more possibilities to integrate better GRASS with QGIS. The new GRASS version 7, which brought various API changes became stable release in February 2015. Because the changes in GRASS 7 API disallow to compile current GRASS plugin with GRASS 7, the time is ripe to upgrade the GRASS plugin.

Funding model

This funding campaign is KiA model, it means that total goal has not to be reached. The work is divided into more packages, which will be implemented if the amount of collected resources reaches partial cumulative goal (set for each package). If the collected amount does not reach the total goal, the packages with partial cumulative goal over the collected sum will be left not implemented.

Package 1: Plugin library upgrade and multi version build

Partial target €900, delivery in QGIS 2.10

The plugin is based on a library which implements a bridge between the plugin and GRASS (QgsGrassGisLib). This library has to be upgraded to GRASS 7 API. Even if the library is hidden from normal user, without upgrade of this library it is not possible to continue with other tools visible to user.

To allow to build and distribute QGIS with both GRASS 6 and GRASS 7 support, the build system will be extended to support configuration with GRASS 6 or 7 or both and the library, the providers and the plugin will coexist in separate files for each version. It will allow to start a single installation of QGIS either with GRASS 6 or GRASS 7 (but not with both at the same time) setting environment variables pointing the required GRASS installation.

Package 2: Browser

Partial cumulative target €2300, delivery in QGIS 2.10

The current implementation of the plugin has its own implementation of a browser which allows to browse and manage data in active mapset. The browser in the plugin duplicates the standard QGIS browser widget but it offers more functions. The standard QGIS browser widget and items representing GRASS mapsets and layers will be extended to support what is now available in the plugin browser. It means that it will allow to display layer's metadata, copy, rename and delete layers.

Completely new feature will be the possibility to import raster and vector data to a GRASS mapset using drag and drop in the QGIS browser widget. It should greatly simplify data import and moderate GRASS learning curve.

The browser from the plugin will be removed. This will be implemented for both GRASS 6 and 7.

Package 3: Mapsets, modules, shell

Partial cumulative target €3100, delivery in QGIS 2.12

This package covers upgrade of almost all remaining plugin parts to GRASS 7:

  1. Mapset management - create new mapset, open/close active mapset.
  2. Layers - add vector/raster layer.
  3. Region - edit/display region.
  4. Modules tree/list and modules UI - this project does not include upgrade of modules' definitions (.qgm files) and tree structure (.qgc file) which is left for community.
  5. Shell (UNIX, Mac) - qtermwidget library will be upgraded to the latest version.

Package 4: New vector editing

Total target €6300, delivery in QGIS 2.12

Completely new editing system will be introduced. The new editing will be closer integrated with QGIS and it will offer more comfortable environment:

  1. Standard QGIS snapping, including snapping to any background layer.
  2. undo/redo - note that changes will be written to the vector map/table during editing, but it will be possible to rewind changes.
  3. Topological symbology editable in layer properties - when switched to editing mode, the geometry elements (points, lines, boundaries and centroids) of the whole map will be rendered with symbology expressing tological state of elements (like in current editing implementation). It will be possible to change the topological symbology in layer properties dialog and saved it in project (as another style).
  4. Built topology (filled areas) on background - while the edited layer will be render only geometry elements (e.g. area boundary), it will be possible to render filled areas on background as another layer.
  5. Attribute based symbology on background - similarly like 4, it will be possible to render on background (as another layer) features of the edited layer using symbology based on attributes.
  6. Attribute editing will be done using standard QGIS tools, including the possibility to create custom forms. As a form is always tied to a set of attributes which may be different for each GRASS layer in the GRASS vector map, it will be possible to edit only attributes of currently edited layer (defined by GRASS field).

The new editing will implemented for both GRASS 6 and 7. A preview of the new editing proof of concept is demonstrated in this video:

Support and bugfixing

This project includes bugfixing of new features and features upgraded to GRASS 7 in each package for 6 months after the first stable release of QGIS in which the package will be included. The project does not include bugfixing of bugs which were not introduced by this project.

About author

Radim Blazek is author of most parts of current GRASS plugin implementation, he is QGIS core developer and GRASS core ex-developer.

Risks and challenges

There is minimum risk that the promised implementation would not be delivered because the author is contributing to QGIS project even on voluntary basis (recently for example upgrade of GRASS provider to GRASS 7 or implementation of threads in QGIS browser).

It is possible that some technical problems (e.g. changes in GRASS API) will make it problematic or even impossible to implement some of promised features. It seems however that the biggest challenge, recovery from GRASS fatal error was resolved in GRASS 7.0.0 thanks to collaboration of GRASS developers. This risk was also minimized by proof of concept implementation of the new editing, which is the most complex part of the project.