PROJECT · LICENSE

License

gdal3.js is released under the MIT License. The build you actually ship is LGPL-2.1-or-later by default (because it bundles a few LGPL libraries), but you can configure a fully permissive build if you need one.

The short version

What it means for your app

Using the default (LGPL) build in a commercial, closed-source application is fine: your own application code stays closed and does not need to be published. LGPL is a weak copyleft: its obligations apply to the LGPL libraries themselves, not to your code. In practice:

This is not legal advice; if your distribution model is unusual (for example a fully static single-file bundle), confirm the details with a license expert.

Bundled libraries

The default build compiles in the components below. Only the three marked copyleft create LGPL obligations; everything else is permissive.

ComponentVersionLicenseCopyleft
gdal3.js (this project)3.0.0-beta.10MITNo
GDAL3.13.1MIT/XNo
PROJ9.8.1MITNo
GEOS3.14.1LGPL-2.1+yes
SpatiaLite5.1.0MPL / GPL / LGPLyes
libiconv1.19LGPLyes
SQLite3.53.2Public domainNo
libtiff4.7.1libtiff (BSD-like)No
libjpeg-turbo3.1.4.1BSD-3 / IJGNo
libwebp1.6.0BSD-3No
Zstd1.5.7BSD-3No
LERC4.1.0Apache-2.0No
libgeotiff1.7.4MITNo
Expat2.8.1MITNo
zlib1.3.2zlibNo
curl8.20.0curl (MIT-like)No
OpenSSL4.0.1Apache-2.0No
EmscriptentoolchainMIT/NCSANo
cpp.js2.0.0-beta.23MITNo

A permissive-only build

For an artifact with no copyleft at all, override the cpp.js config to exclude the three LGPL components: GEOS, SpatiaLite and libiconv. What remains (GDAL, PROJ, the codecs, SQLite, …) is MIT/BSD/permissive, so the resulting build carries no LGPL obligation.

The trade-off is functional: dropping GEOS removes geometry operations (much of OGR's processing), SpatiaLite removes the SpatiaLite database driver, and libiconv removes some character-encoding conversions. See configuration for how to override dependencies.

GPL → LGPL history

The project started under the GPL and moved to the LGPL early on by community request (issue #36) so that it could be used in closed-source applications.