COMMUNITY · CONTRIBUTING

Contributing

This project runs on its issue tracker: most shipped features started as someone's report or PR, including contributions from GDAL's own lead maintainer. Here's how to join in.

Ways to help

Development setup

shell
git clone https://github.com/bugra9/gdal3.js
cd gdal3.js
pnpm install

The repository is a pnpm monorepo: packages/ holds the library (core recipe, wasm builds, iOS/Android), apps/ the converter apps and this website. Building the wasm runs through cpp.js in a standardized Docker image, so it is reproducible without assembling an Emscripten toolchain locally; rebuilding wasm is not required for most JS-level contributions anyway.

Running tests

The wasm test suite (packages/wasm-test) drives the built module in a real browser via Playwright: a smoke test asserts the driver registry (100+ drivers), and the raster/vector driver suites exercise read/write across the registry, permuting creation options. If you touch native surface or drivers, add or extend a spec there. Codec PR #105 shipped with a JPEG-compressed fixture and assertions, which is the bar to aim for.

Pull request guidelines

Licensing

gdal3.js is released under the MIT License, and contributions are accepted under it. The default build ships as LGPL-2.1-or-later because it bundles LGPL libraries (GEOS, SpatiaLite, libiconv); bundled third-party libraries keep their own licenses (GDAL itself is MIT/X). You can override the cpp.js config to exclude the copyleft deps for a permissive-only build.