Licensing

[中文]

This chapter is the single reference for how licensing works across ESP-VISION. It is developer guidance, not legal advice; the license text and source-file headers for the exact version in use remain authoritative.

ESP-VISION’s own code (platform/, most of modules/, boards/, and build files) is released under Apache License 2.0, recorded in the repository-level LICENSE. Vendored and third-party code keeps the license declared by its own source files, SPDX identifiers, or upstream license; the repository-level LICENSE does not override or replace those.

License Inventory

The following table lists the direct dependencies most relevant to redistribution. It is not a complete inventory of transitive dependencies.

Project or code

Local path

Role in ESP-VISION

License

tasmota-webserial-esptool 9.4.2

host/device-core/package.json dependency; loaded only by src/browser_rom.js

Browser Web Serial ROM backend; upstream src/stubs/README.md identifies esp-flasher-stub v1.4.0

MIT (upstream package manifest); stub binaries dual Apache-2.0/MIT. Installed as a dependency, not copied or patched in this repository.

Device Core host SDK

host/device-core

EV-MUX v4 host communication, Python, resource files, discovery and images

Apache-2.0 (host/device-core/LICENSE); historical MIT notices in NOTICE

Device-side camera/LCD test fixture

host/device-core/tests/fixtures/device-checks.py

Hardware acceptance functions migrated from the firmware tests; included in the npm package for shared hardware checks

Apache-2.0 (original notice retained)

MicroPython v1.28.0

lib/micropython

Python runtime and ESP32 port baseline

MIT

MicroPython execution and thread adaptations

overlay/micropython/shared/runtime/pyexec.c, overlay/micropython/ports/esp32/mpthreadport.c

Session origin capture and inheritance based on the pinned upstream files; original copyright and license headers retained

MIT

micropython-ulab 6.12

lib/ulab

Array and numerical computing

MIT

OpenMV v5.0.0 imlib subset

components/imlib

Image processing and drawing algorithms

MIT, with separately licensed files

OpenMV Python binding code

modules/py_image*, modules/py_helper*

OpenMV-style image API bindings

MIT

OpenMV AprilTag implementation

components/imlib/upstream/apriltag.c

AprilTag and rectangle detection

BSD-2-Clause

ZXing-C++ v3.0.2

lib/zxing-cpp

1D barcode reader backend

Apache-2.0

ESP-DL

Component Registry

Model inference runtime

MIT

TensorFlow Lite Micro / esp-tflite-micro

Component Registry

TensorFlow Lite Micro inference runtime

Apache-2.0

esp_new_jpeg

Component Registry

Software JPEG codec

Espressif MIT (product-scope)

esp32-camera

Component Registry

Camera driver

Apache-2.0

ESP-IDF

External SDK

Build system, drivers, and media components

Apache-2.0

NanoTrack V2 pretrained models

models/nanotrack_v2

Locally quantized single-object tracking assets

Upstream NanoTrack supplies Apache-2.0 text; separate weight terms not verified (see local README and provenance)

How to Interpret the Licenses

The repository-level LICENSE covers original ESP-VISION code and does not override third-party licenses:

  • third-party files remain under their original licenses and retain their original copyright and license headers;

  • a directory can contain multiple licenses: most imlib code is MIT while apriltag.c is BSD-2-Clause;

  • permissive licenses such as Apache-2.0, MIT, and BSD generally allow combined distribution, but their copyright, license text, and notice requirements still apply;

  • some Espressif components use licenses with product-scope conditions. For example, the current esp_new_jpeg license text limits use to Espressif products, so it should not be described only as unrestricted generic MIT;

  • trademarks, patents, model files, and datasets may have separate terms that cannot be inferred from the source-code license.

Before distributing source or firmware, check at least:

  1. the repository-level LICENSE;

  2. the LICENSE in every Git submodule;

  3. managed_components/*/LICENSE from the selected build;

  4. SPDX identifiers, license headers, and copyright notices in modified or newly added source files;

  5. provenance and terms for non-code assets such as models, fonts, and test images.

OpenMV and GPL Code Paths

Not every optional OpenMV upstream algorithm uses the same license. ESP-VISION sets OMV_NO_GPL=1 in micropython.cmake and components/imlib/CMakeLists.txt so GPL-conditioned OpenMV code paths are not compiled. This switch only describes what the default build excludes; it is not an automatic license classification for newly added files.

When changing imlib feature switches, synchronizing OpenMV upstream code, or adding algorithms, inspect each file’s license. Do not infer a license only from the directory containing the file.

Adding Third-Party Code

When adding a third-party package or source file to ESP-VISION:

  1. pin a reproducible release or commit;

  2. verify the license per file and its compatibility with the intended distribution;

  3. preserve upstream copyright, SPDX identifiers, license text, and any required NOTICE;

  4. record the source, version, local path, purpose, and license in this inventory;

  5. verify that build switches actually exclude code that is not intended for distribution instead of relying on documentation alone;

  6. obtain legal review before merging when licensing is unclear or imposes commercial-distribution constraints.

Native binary-upload tests use the system OpenSSL 3 libcrypto (Apache-2.0) as their SHA-256 oracle through a PSA test shim. This is a host-test dependency only; OpenSSL and the shim are not linked into firmware or distributed in the npm package. Firmware uses ESP-IDF PSA Crypto.