[QGIS-Developer] Development environment setup

Tom Christian tom at sparkgeo.com
Thu Nov 6 17:45:12 PST 2025


Hi All,

I am interested in learning more about how QGIS developers configure their development environments, and I would like to get some feedback on an alternate approach.

I recently contributed my first changes to QGIS and I found the development environment quite challenging. While the QGIS Developers Guide <https://docs.qgis.org/3.40/en/docs/developers_guide/index.html> contains lots of information I found most of it to be high-level, e.g. how to work with Git, and there was limited information on gathering required dependencies and setting build configurations.

Given the number of dependencies, the risk of conflicts with existing packages, and my strong preference to avoid VMs, I thought a containerised build environment was ideal. My work requires frequently switching between projects and environments. I generally cannot let any one project's dependencies pollute the system outside of a Conda environment, a container, or a VM.

I found the CI Docker configuration <https://github.com/qgis/QGIS/tree/master/.docker> and thought I could use this to build and test QGIS. These Dockerfiles should guarantee all required dependencies AND this is the environment that passes or fails CI checks on my changes. Building QGIS using the CI Docker configuration was OK, but CI is not setup for running the build product in a container - meaning changes cannot quickly be manually / visually tested in this way. The project would have to be compiled (with the benefit of mounted ccache) and installed every time the container was started before the application could run. The long Docker commands are not currently scripted outside of GitHub Actions Workflows, and build configurations are provided via matrices, so replicating these processes locally is non-trivial.

I created this repo <https://github.com/sparkgeo/QGIS-Container-Development> to better automate container-based development and testing of QGIS. It contains build / run / test scripts, .env configurations, and Docker Compose overrides to work with the QGIS CI Docker configuration with as few changes as possible. It currently requires a single small commit <https://github.com/sparkgeo/QGIS-EOPF/commit/64b6f6568ec24f9a064a24869b3d1fb95a6ae0b1> in the active QGIS branch to support this approach, which I removed before creating PRs for the main QGIS repo.

With this approach, building and running a containerised QGIS development build is (in theory) as simple as scripts/run.sh. Tests can be executed with scripts/test.sh.


I have some questions:

1) are you installing QGIS build dependencies on "bare metal", or perhaps using a VM?
2) is there a simpler approach than this for containerised builds, runs, and tests?
  2a) if not, is there any interest in pursuing this or a similar approach to simplify containerised development environments?


Ultimately I suspect the QGIS project would benefit from lower barriers to entry and the ability to better isolate build dependencies.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20251106/9e5307c8/attachment.htm>


More information about the QGIS-Developer mailing list