BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//pretalx//talks.osgeo.org//SJNCBD
BEGIN:VTIMEZONE
TZID:CET
BEGIN:STANDARD
DTSTART:20001029T040000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20000326T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
UID:pretalx-foss4g-2023-SJNCBD@talks.osgeo.org
DTSTART;TZID=CET:20230629T143000
DTEND;TZID=CET:20230629T150000
DESCRIPTION:At the National Land Survey of Finland (NLS) we are developing 
 multiple QGIS plugins\, and we needed a way to share the common code and b
 reak the components to smaller independent plugins while still providing a
  good developer experience. \n\n \n\nOne of the main issues when sharing l
 ibrary code between different QGIS plugins is the runtime environment unce
 rtainty. Since Python import machinery is not easily configurable to suppo
 rt multiple versions of dependencies (like nested node_modules in nodejs-w
 orld)\, the runtime is limited by default to a single version of a library
 \, and later access to the same module is cached. This limits the version 
 available to all plugins in a single QGIS session to the code that is firs
 t run\, which makes sharing code difficult\, especially when breaking API 
 changes are necessary to the dependency library code. \n\n \n\nAt NLS we d
 eveloped tooling to work around these limitations\, which improves the dev
 eloper experience and allows sharing of common QGIS plugin code easily via
  standard Python libraries. Tool provides a streamlined developer workflow
  and necessities like typing and IDE helpers\, and a way to package a plug
 in that depends on other standard Python libraries. \n\n \n\nDevelopment e
 nvironment for a QGIS plugin can be initialized simply by using a virtual 
 environment\, installing the dependencies and launching QGIS with the plug
 in and its dependencies fully setup. This works with bootstrap code passed
  on the command line\, which will provide QGIS access to the virtual envir
 onment\, setups the plugin from the environment with access to any library
  dependencies. Tool also provides a debugger session and could also provid
 e for example hot reload signals for the plugin when code is changed. This
  provides a quicker and easier feedback cycle for the developer and simpli
 fies the workflows when developing QGIS plugins. \n\n \n\nRuntime dependen
 cies are reorganized at build-time to be imported for a sub-package of the
  plugin\, so only the exact packaged version of a dependency is used at ru
 ntime. This works by rewriting external library dependency import statemen
 ts in the source code. Tool also generates the metadata.txt file in a way 
 that is compatible with standard Python packaging tools\, for example setu
 ptools. This allows easily sharing the same code both as Python library an
 d as a QGIS plugin.
DTSTAMP:20260312T215625Z
LOCATION:UBT D / N112 - Second Floor
SUMMARY:Improving QGIS plugin developer experience - Antero Komi
URL:https://talks.osgeo.org/foss4g-2023/talk/SJNCBD/
END:VEVENT
END:VCALENDAR
