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.
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.
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.
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.
This package covers upgrade of almost all remaining plugin parts to GRASS 7:
Completely new editing system will be introduced. The new editing will be closer integrated with QGIS and it will offer more comfortable environment:
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:
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.
Radim Blazek is author of most parts of current GRASS plugin implementation, he is QGIS core developer and GRASS core ex-developer.
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.